o
    oi                     @   s   d dl Z d dlZd dlmZmZmZ d dl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 d dlmZ d d	lmZ e eZG d
d deZdS )    N)AnyDictOptional)apply_to_collection)RequirementCache)override)_XLA_AVAILABLE)TorchCheckpointIO)get_filesystem)_PATHc                
       sZ   e Zd ZdZdededdf fddZeddeeef d	e	d
e
e ddfddZ  ZS )XLACheckpointIOzCheckpointIO that utilizes ``xm.save`` to save checkpoints for TPU training strategies.

    .. warning::  This is an :ref:`experimental <versioning:Experimental API>` feature.

    argskwargsreturnNc                    s&   t sttt t j|i | d S N)r   ModuleNotFoundErrorstrsuper__init__)selfr   r   	__class__ S/home/ubuntu/.local/lib/python3.10/site-packages/lightning/fabric/plugins/io/xla.pyr   &   s   zXLACheckpointIO.__init__
checkpointpathstorage_optionsc           
      C   s   |durt d| jj dt|}|jtj|dd tdr4ddl	m
}m}m} t|||f|j}ddlm  m} |j|dd	}	td
|  t|	| dS )a|  Save model/training states as a checkpoint file through state-dump and file-write.

        Args:
            checkpoint: dict containing model and trainer state
            path: write-target path
            storage_options: not used in ``XLACheckpointIO.save_checkpoint``

        Raises:
            TypeError:
                If ``storage_options`` arg is passed in

        Nze`Trainer.save_checkpoint(..., storage_options=...)` with `storage_options` arg is not supported for `za`. Please implement your custom `CheckpointIO` to define how you'd like to use `storage_options`.T)exist_ok	omegaconfr   )
DictConfig
ListConfig	OmegaConf)convertzSaving checkpoint: )	TypeErrorr   __name__r
   makedirsosr   dirnamer   r   r   r    r!   r   to_containertorch_xla.core.xla_modelcore	xla_model_maybe_convert_to_cpulogdebugtorchsave)
r   r   r   r   fsr   r    r!   xmcpu_datar   r   r   save_checkpoint+   s   zXLACheckpointIO.save_checkpointr   )r$   
__module____qualname____doc__r   r   r   r   r   r   r   r4   __classcell__r   r   r   r   r      s
    2r   )loggingr&   typingr   r   r   r/   #lightning_utilities.core.apply_funcr    lightning_utilities.core.importsr   typing_extensionsr   !lightning.fabric.accelerators.xlar   $lightning.fabric.plugins.io.torch_ior	   #lightning.fabric.utilities.cloud_ior
    lightning.fabric.utilities.typesr   	getLoggerr$   r-   r   r   r   r   r   <module>   s   
