o
    8wi                     @   s   d dl Z d dlZd dl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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__ \/home/ubuntu/sommelier/.venv/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   dictr   r
   r   r3   __classcell__r   r   r   r   r      s
    2r   )loggingr%   typingr   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   
