§
    W’jÇ  ã                   ó¸   — U d dl mZ d dlmZ d dlmZ d dlmc mc m	Z
 d dlmc mc mZ d dlmZmZ d dlmZmZmZmZ g Zee         ed<    G d„ d¦  «        ZdS )	é    )ÚFuture)ÚAnyN)ÚMetadataÚSTATE_DICT_TYPE)ÚLoadPlannerÚSavePlannerÚStorageReaderÚStorageWriterÚ__all__c                   ó    — e Zd ZdZddddddœdededej        dz  d	ed
e	de
dz  dedz  fd„Zdedefd„Zdedefd„Zdeeef         ddfd„ZdS )Ú_Checkpointeraí  This base class specifies a high level API for saving and loading
    distributed `state_dict` 's. It provides an abstraction over the low-level APIs
    provided by :py:mod:`torch.distributed.checkpoint.storage`, essentially calling
    :py:meth: `torch.distributed.state_dict_saver.save` and
    :py:meth: `torch.distributed.state_dict_loader.load` with the provided storage
    readers and writers.

    .. warning::
        This feature is experimental and subject to removal/change.

    Nr   F)Úprocess_groupÚcoordinator_rankÚno_distÚload_plannerÚsave_plannerÚstorage_writerÚstorage_readerr   r   r   r   r   c                óh   — || _         || _        || _        || _        || _        || _        || _        dS )a{  Initializes the Checkpointer instance.

        Args:
            storage_writer: Instance of StorageWrite use to perform writes.
            storage_reader: StorageReader used to load data from.
            process_group: ProcessGroup to be used for cross-rank synchronization.
            coordinator_rank: Rank to use to coordinate the checkpoint. rank0 is used by default.
            no_dist: If ``True``, distributed checkpoint will not load in SPMD style. (Default: ``False``)
            loader_planner: Instance of LoadPlanner to use when loading.
            save_planner: Instance of SavePlanner to use when saving.
        N)r   r   r   r   r   r   r   )Úselfr   r   r   r   r   r   r   s           úo/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/distributed/checkpoint/_checkpointer.pyÚ__init__z_Checkpointer.__init__    sA   € ð, -ˆÔØ,ˆÔØ*ˆÔØ 0ˆÔØˆŒØ(ˆÔØ(ˆÔÐÐó    Ú
state_dictÚreturnc                 óh   — t          j        || j        | j        | j        | j        | j        ¬¦  «        S )ziCalls :py:meth: `torch.distributed.state_dict_saver.save`. Utilizing values passed during initialization.)r   r   r   Úplanner)ÚsaverÚsaver   r   r   r   r   ©r   r   s     r   r   z_Checkpointer.save>   s=   € õ
 ŒzØØÔØÔ,Ø!Ô2Ø”LØÔ%ð
ñ 
ô 
ð 	
r   c                 óœ   — t          j        || j        | j        | j        ¬¦  «        }t          |t          ¦  «        st          d¦  «        ‚|S )zä
        Calls :py:meth: `torch.distributed.state_dict_saver._async_save`. Utilizing values passed during initialization.

        Returns:
            Future: A future holding the resultant Metadata object from `save`.
        )r   r   r   z$response should be a Future instance)r   Ú
async_saver   r   r   Ú
isinstancer   ÚAssertionError)r   r   Úresponses      r   r"   z_Checkpointer.async_saveL   sY   € õ Ô#ØØÔ.ØÔ,ØÔ%ð	
ñ 
ô 
ˆõ ˜(¥FÑ+Ô+ð 	IÝ Ð!GÑHÔHÐHØˆr   c                 óT   — t          j        || j        | j        | j        ¬¦  «         dS )zjCalls :py:meth: `torch.distributed.state_dict_loader.load`. Utilizing values passed during initialization.)r   r   r   N)ÚloaderÚloadr   r   r   r    s     r   r(   z_Checkpointer.load`   s:   € åŒØØÔ.ØÔ,ØÔ%ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r	   ÚdistÚProcessGroupÚintÚboolr   r   r   r   r   r   r   r"   ÚdictÚstrr   r(   © r   r   r   r      s  € € € € € ð
ð 
ð" 37Ø !ØØ+/Ø+/ð)ð )ð )à%ð)ð &ð)ð
 Ô(¨4Ñ/ð)ð ð)ð ð)ð " DÑ(ð)ð " DÑ(ð)ð )ð )ð )ð<
à#ð
ð 
ð
ð 
ð 
ð 
ðà#ðð 
ðð ð ð ð(
˜t C¨ Hœ~ð 
°$ð 
ð 
ð 
ð 
ð 
ð 
r   r   )Úconcurrent.futuresr   Útypingr   Útorch.distributedÚdistributedr-   Ú.torch.distributed.checkpoint.state_dict_loaderÚ
checkpointÚstate_dict_loaderr'   Ú-torch.distributed.checkpoint.state_dict_saverÚstate_dict_saverr   Ú%torch.distributed.checkpoint.metadatar   r   Ú$torch.distributed.checkpoint.storager   r   r	   r
   r   Úlistr2   Ú__annotations__r   r3   r   r   ú<module>rA      s,  ðØ %Ð %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð €ˆˆcŒÐ Ð Ñ ðT
ð T
ð T
ð T
ð T
ñ T
ô T
ð T
ð T
ð T
r   