a
    d                     @   s`   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ G dd deZd	S )
    )DictOptional)Accelerator)CheckpointIO)XLACheckpointIO)	Precision)SingleDeviceStrategyc                       sz   e Zd ZdZdeee ee ee d fddZ	e
edddZejee dd	d
dZeeddddZ  ZS )SingleTPUStrategyz-Strategy for training on a single TPU device.N)deviceacceleratorcheckpoint_io	precisionc                    s0   dd l m  m} t j|||||d d S )Nr   )r   r
   r   r   )Ztorch_xla.core.xla_modelcoreZ	xla_modelsuper__init__Z
xla_device)selfr
   r   r   r   Zxm	__class__ o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/lightning_fabric/strategies/single_tpu.pyr      s    zSingleTPUStrategy.__init__)returnc                 C   s   | j d u rt | _ | j S N)_checkpoint_ior   )r   r   r   r   r   *   s    
zSingleTPUStrategy.checkpoint_io)ior   c                 C   s
   || _ d S r   )r   )r   r   r   r   r   r   0   s    )strategy_registryr   c                 C   s   |j d| | jj d d S )NZ
single_tpu)description)registerr   __name__)clsr   r   r   r   register_strategies4   s    z%SingleTPUStrategy.register_strategies)NNN)r   
__module____qualname____doc__intr   r   r   r   r   propertyr   setterclassmethodr   r   __classcell__r   r   r   r   r	      s       r	   N)typingr   r   Zlightning_fabric.acceleratorsr   Z)lightning_fabric.plugins.io.checkpoint_ior   Zlightning_fabric.plugins.io.xlar   Z"lightning_fabric.plugins.precisionr   Z)lightning_fabric.strategies.single_devicer   r	   r   r   r   r   <module>   s   