§
    ­˜ºh�…  ã                   óJ  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZ d dlmZmZ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 d d	lmZmZmZmZm Z m!Z! d d
l"m#Z# d dl$Z$d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZF d dlGmHZH d dlImJZJ g d¢ZKdZLeMeNd<   e G d„ d¦  «        ¦   «         ZOe G d„ d¦  «        ¦   «         ZP G d„ de¦  «        ZQdZRd eMfd!„ZS G d"„ d#e¦  «        ZT G d$„ d%eT¦  «        ZU G d&„ d'eT¦  «        ZV G d(„ d)¦  «        ZWd*e?d eXfd+„ZYd,eXd-eZe?         d eZeZe?                  fd.„Z[d/eWd0ej\        d1e!ej]        e$j%        f         d2e?d3eMd4eQd eFfd5„Z^d6ed7ej_        d8ej_        d9e>d/eWd:eXd;e`d<eXd4eQd dfd=„Za G d>„ d?e¦  «        Zb G d@„ dAeb¦  «        Zc G dB„ dCeE¦  «        Zd G dD„ dE¦  «        Ze G dF„ dGeD¦  «        Zf G dH„ dIedeB¦  «        ZgdS )Jé    N)ÚABCÚabstractmethod)Ú	GeneratorÚIterableÚIteratorÚSequence)Úcontextmanager)Ú	dataclass)ÚEnum)ÚUnsupportedOperation)ÚPath)ÚAnyÚCallableÚcastÚIOÚOptionalÚUnion)ÚBuffer)ÚTensor)Ú_get_available_device_typeÚ_get_device_module)Únarrow_tensor_by_index)ÚExtensionRegistryÚStreamTransformExtension)ÚCUSTOM_METADATA_KEYÚDCP_VERSION_KEYÚ
FORMAT_KEYÚFORMAT_VALUEÚHF_DCP_VERSION)ÚMetadataÚSTATE_DICT_TYPEÚStorageMeta)ÚLoadItemTypeÚLoadPlanÚLoadPlannerÚReadItemÚSavePlanÚSavePlannerÚ	WriteItemÚWriteItemType)ÚBlockingAsyncStager)ÚStorageReaderÚStorageWriterÚWriteResult)Ú_create_file_view)ÚFuture)ÚFileSystemWriterÚFileSystemReaderÚ
FileSystemÚFileSystemBaseÚSerializationFormatú	.metadataÚ_metadata_fnc                   ó^   — e Zd ZU dZeed<   eed<   eed<   dZee	e                  ed<   d„ Z
dS )Ú_StorageInfoz#This is the per entry storage info.Úrelative_pathÚoffsetÚlengthNÚtransform_descriptorsc                 óH   — d„ | j                              ¦   «         D ¦   «         S )Nc                 ó   — i | ]
\  }}|®||“ŒS ©N© )Ú.0ÚkÚvs      úo/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/distributed/checkpoint/filesystem.pyú
<dictcomp>z-_StorageInfo.__getstate__.<locals>.<dictcomp>R   s   € ÐHÐHÐH™˜˜A¸!¸-��1¸-¸-¸-ó    )Ú__dict__Úitems©Úselfs    rE   Ú__getstate__z_StorageInfo.__getstate__Q   s$   € ØHÐH ¤×!4Ò!4Ñ!6Ô!6ÐHÑHÔHÐHrG   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__Úintr=   r   r   rL   rA   rG   rE   r9   r9   H   sh   € € € € € € à-Ð-àÐÐÑØ€K€K�KØ€K€K�KØ59Ð˜8 H¨S¤MÔ2Ð9Ð9Ñ9ðIð Ið Ið Ið IrG   r9   c                   ó   — e Zd ZU eed<   dS )Ú_StoragePrefixÚprefixN)rM   rN   rO   rQ   rR   rA   rG   rE   rU   rU   U   s   € € € € € € à€K€K�K€K€KrG   rU   c                   ó   — e Zd ZdZdZdS )r5   Ú
torch_saveÚsafetensorsN)rM   rN   rO   Ú
TORCH_SAVEÚSAFETENSORSrA   rG   rE   r5   r5   Z   s   € € € € € Ø€JØ€K€K€KrG   r5   z.distcpÚreturnc                  óB   — t          t          j        ¦   «         ¦  «        S r@   )rQ   ÚuuidÚuuid4rA   rG   rE   Ú_generate_uuidr`   b   s   € Ý�tŒz‰|Œ|ÑÔÐrG   c                   óŒ   — e Zd Zedededdfd„¦   «         Zedd„¦   «         Zedee	e
j        ef                  fd„¦   «         ZdS )	Ú_TensorLoaderÚsizeÚobjr\   Nc                 ó   — d S r@   rA   ©rK   rc   rd   s      rE   Úaddz_TensorLoader.addg   ó   € àˆrG   c                 ó   — d S r@   rA   rJ   s    rE   Ústart_loadingz_TensorLoader.start_loadingk   rh   rG   c                 ó   — d S r@   rA   rJ   s    rE   Úvaluesz_TensorLoader.valueso   rh   rG   ©r\   N)rM   rN   rO   r   rS   Úobjectrg   rj   r   ÚtupleÚtorchr   rl   rA   rG   rE   rb   rb   f   sŸ   € € € € € Øð˜ð  &ð ¨Tð ð ð ñ „^ðð ðð ð ñ „^ðð ð˜  u¤|°VÐ';Ô!<Ô=ð ð ð ñ „^ðð ð rG   rb   c                   ól   — e Zd Zdeddfd„Zdededdfd„Zd
d„Zde	e
ej        ef                  fd	„ZdS )Ú_SerialCpuLoaderÚresolve_funr\   Nc                 ó"   — || _         g | _        d S r@   )rs   rI   )rK   rs   s     rE   Ú__init__z_SerialCpuLoader.__init__u   s   € Ø&ˆÔØ/1ˆŒ
ˆ
ˆ
rG   rc   rd   c                 ó>   — | j                              ||f¦  «         d S r@   )rI   Úappendrf   s      rE   rg   z_SerialCpuLoader.addy   s"   € ØŒ
×Ò˜4 ˜+Ñ&Ô&Ð&Ð&Ð&rG   c                 ó   — d S r@   rA   rJ   s    rE   rj   z_SerialCpuLoader.start_loading|   ó   € ØˆrG   c              #   óF  K  — | j         D ]–\  }}|                      |¦  «                             ¦   «         }|                     ¦   «         }|                     ¦   «                              ¦   «         |                     ¦   «         k    r|                     ¦   «         }||fV — Œ—d S r@   )rI   rs   ÚdetachÚcpuÚstoragerc   ÚnumelÚclone©rK   Ú_rd   Útensors       rE   rl   z_SerialCpuLoader.values   s¦   è è € Ø”jð 	ð 	‰FˆAˆsØ×%Ò% cÑ*Ô*×1Ò1Ñ3Ô3ˆFØ—Z’Z‘\”\ˆFØ�~Š~ÑÔ×$Ò$Ñ&Ô&¨&¯,ª,©.¬.Ò8Ð8ØŸš™œ�àØðð ð ð ð ð	ð 	rG   rm   )rM   rN   rO   r   ru   rS   rn   rg   rj   r   ro   rp   r   rl   rA   rG   rE   rr   rr   t   sŸ   € € € € € ð2 Hð 2°ð 2ð 2ð 2ð 2ð'˜ð ' &ð '¨Tð 'ð 'ð 'ð 'ðð ð ð ð	˜  u¤|°VÐ';Ô!<Ô=ð 	ð 	ð 	ð 	ð 	ð 	rG   rr   c            	       ó  — e Zd Z	 	 ddedeej                 deddfd„Ze	de
fd„¦   «         Zdeeej        ef                  fd	„Zdd
„Zdeeej        ef                  fd„Zdededdfd„Zdd„Zdeeej        ef                  fd„ZdS )Ú_OverlappingCpuLoaderNé@B rs   ÚstreamÚinflight_threshholdr\   c                 ó  — || _         g | _        || _        d| _        t	          j        ¦   «         | _        d| _        d| _        |r|j	        nt          ¦   «         | _	        t          | j	        ¦  «        | _        t          t          j        j        |p| j                             ¦   «         ¦  «        | _        | j        | j                             ¦   «         k    r3| j                             | j                             ¦   «         ¦  «         d S d S )Nr   F)rs   rI   r‡   Úin_flight_dataÚcollectionsÚdequeÚcurrent_itemsÚidxÚstartedÚdevice_typer   r   Údevice_moduler   rp   ÚcudaÚStreamÚcurrent_streamr†   Úwait_stream)rK   rs   r†   r‡   s       rE   ru   z_OverlappingCpuLoader.__init__Œ   sö   € ð 'ˆÔØ/1ˆŒ
Ø#6ˆÔ ØˆÔÝ0;Ô0AÑ0CÔ0CˆÔØˆŒØˆŒà"(ÐJˆFÔÐÕ.HÑ.JÔ.Jð 	Ôõ 0°Ô0@ÑAÔAˆÔÝÝŒJÔ˜vÐL¨Ô);×)JÒ)JÑ)LÔ)Lñ
ô 
ˆŒð Œ;˜$Ô,×;Ò;Ñ=Ô=Ò=Ð=ØŒK×#Ò# DÔ$6×$EÒ$EÑ$GÔ$GÑHÔHÐHÐHÐHð >Ð=rG   c                 ó<   — | j         t          | j        ¦  «        k    S r@   )r�   ÚlenrI   rJ   s    rE   Ú_donez_OverlappingCpuLoader._done£   s   € àŒx�3˜tœz™?œ?Ò*Ð*rG   c                 ó~  — g }| j         | j        k    r| j                             ¦   «          | j         | j        k    r�| j                             ¦   «         }| xj         |d                              ¦   «         |d                              ¦   «         z  z  c_         |                     |¦  «         | j         | j        k    °�|S ©Nr   )	r‰   r‡   r†   ÚsynchronizerŒ   Úpopleftr~   Úelement_sizerw   )rK   ÚdrainedÚvals      rE   Ú_drainz_OverlappingCpuLoader._drain§   s²   € ØˆØÔ $Ô":Ò:Ð:ØŒK×#Ò#Ñ%Ô%Ð%ØÔ! TÔ%=Ò=Ð=ØÔ$×,Ò,Ñ.Ô.ˆCØÐÔ 3 q¤6§<¢<¡>¤>°C¸´F×4GÒ4GÑ4IÔ4IÑ#IÑIÐÔØ�NŠN˜3ÑÔÐð Ô! TÔ%=Ò=Ð=ð ˆrG   c                 óZ  — | j                              | j        ¦  «        5  | j        �sj| j        | j        k     �rY| j        | j                 \  }}| xj        dz  c_        |                      |¦  «                             ¦   «         }|j	        j
        | j        k    r|                     dd¬¦  «        }nu|j	        t          j	        d¦  «        k    rX|                     ¦   «                              ¦   «         |                     ¦   «         |j        z  k    r|                     ¦   «         }| j                             ||f¦  «         | xj        |                     ¦   «         |                     ¦   «         z  z  c_        | j        s| j        | j        k     �°Yd d d ¦  «         d S # 1 swxY w Y   d S )Né   r|   T)ÚdeviceÚnon_blocking)r�   r†   r—   r‰   r‡   rI   r�   rs   r{   r¢   Útyper�   Útorp   Úuntyped_storagerc   r~   Úitemsizer   rŒ   rw   rœ   r€   s       rE   Ú_refillz_OverlappingCpuLoader._refill±   sç  € ØÔ×&Ò& t¤{Ñ3Ô3ð 	Nð 	NØ”jñ N TÔ%8¸4Ô;SÒ%SÑ%SØœ D¤HÔ-‘��3Ø�”˜A‘�”Ø×)Ò)¨#Ñ.Ô.×5Ò5Ñ7Ô7�Ø”=Ô%¨Ô)9Ò9Ð9Ø#ŸYšY¨eÀ$˜YÑGÔG�F�FØ”]¥e¤l°5Ñ&9Ô&9Ò9Ð9à×.Ò.Ñ0Ô0×5Ò5Ñ7Ô7Ø!Ÿ<š<™>œ>¨F¬OÑ;ò<ð <ð "(§¢¡¤˜àÔ"×)Ò)àØðñô ð ð Ð#Ô# v§|¢|¡~¤~¸×8KÒ8KÑ8MÔ8MÑ'MÑMÐ#Ô#ð) ”jð N TÔ%8¸4Ô;SÒ%SÑ%Sð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nð 	Nð 	Ns    E3F Æ F$Æ'F$c                 ó„   — | j         sJ ‚t          | j        ¦  «        dk    r| j                             ¦   «          | j        S r™   )r—   r–   rŒ   r†   rš   rJ   s    rE   Ú_finishz_OverlappingCpuLoader._finishÉ   sC   € ØŒzÐÐÐÝˆtÔ!Ñ"Ô" QÒ&Ð&ØŒK×#Ò#Ñ%Ô%Ð%ØÔ!Ð!rG   rc   rd   c                 ój   — | j         rt          d¦  «        ‚| j                             ||f¦  «         d S )Nz&cannot add items after loading started)rŽ   ÚRuntimeErrorrI   rw   rf   s      rE   rg   z_OverlappingCpuLoader.addÏ   s<   € ØŒ<ð 	IÝÐGÑHÔHÐHØŒ
×Ò˜4 ˜+Ñ&Ô&Ð&Ð&Ð&rG   c                 ó¨   — | j         rd S d| _         | j                             t          j        d¦  «        ¬¦  «         |                      ¦   «          d S )NTr   ©Úkey)rŽ   rI   ÚsortÚoperatorÚ
itemgetterr¨   rJ   s    rE   rj   z#_OverlappingCpuLoader.start_loadingÔ   sJ   € ØŒ<ð 	ØˆFØˆŒØŒ
�Š�HÔ/°Ñ2Ô2ˆÑ3Ô3Ð3Ø�Š‰ŒˆˆˆrG   c              #   óâ   K  — |                       ¦   «          | j        s7|                      ¦   «         }|                      ¦   «          |E d {V —† | j        ¯7|                      ¦   «         E d {V —† d S r@   )rj   r—   rŸ   r¨   rª   )rK   r�   s     rE   rl   z_OverlappingCpuLoader.valuesÛ   sˆ   è è € Ø×ÒÑÔÐØ”*ð 	Ø—k’k‘m”mˆGØ�LŠL‰NŒNˆNØÐÐÐÐÐÐÐð ”*ð 	ð
 —<’<‘>”>Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!rG   )Nr…   rm   )rM   rN   rO   r   r   rp   r’   rS   ru   ÚpropertyÚboolr—   Úlistro   r   rn   rŸ   r¨   r   rª   rg   rj   r   rl   rA   rG   rE   r„   r„   ‹   sk  € € € € € ð *.Ø#,ð	Ið IàðIð ˜œÔ&ðIð !ð	Ið
 
ðIð Ið Ið Ið. ð+�tð +ð +ð +ñ „Xð+ð˜˜U 5¤<°Ð#7Ô8Ô9ð ð ð ð ðNð Nð Nð Nð0"˜ %¨¬°fÐ(<Ô"=Ô>ð "ð "ð "ð "ð'˜ð ' &ð '¨Tð 'ð 'ð 'ð 'ð
ð ð ð ð"˜  u¤|°VÐ';Ô!<Ô=ð "ð "ð "ð "ð "ð "rG   r„   c            	       ó„   — e Zd ZdZ	 d	deee                  ddfd„Zdede	j
        deee         ee         f         fd„ZdS )
Ú_StorageWriterTransformsú¬
    This is experimental, and will likely move elsewhere in the
    future.  It lives here to minimize changes while we are still
    learning and gathering feedback.
    NÚ
extensionsr\   c                 ó   — |€dn|| _         dS )a  
        If the extensions arg is None, this means the implementation
        should provide whatever defaults it chooses.  An empty
        sequence indicates no extensions should be used.  At this
        time, the default extensions sequence is empty.
        NrA   )rº   )rK   rº   s     rE   ru   z!_StorageWriterTransforms.__init__ì   s   € ð !+Ð 2˜"˜"¸
ˆŒˆˆrG   Ú
write_itemÚ
raw_streamc                 ó  —  G d„ dt           j        ¦  «        }t          t          t                    ||¦  «        ¦  «        }| j        D ]}|                     |¦  «        }Œ|d„ t          | j        ¦  «        D ¦   «         fS )Nc                   óF   — e Zd Zdej        fd„Zdefd„Zdede	fd„Z
d„ ZdS )	úE_StorageWriterTransforms.transform_save_stream.<locals>.NoCloseWriterÚrawc                 ó   — || _         d S r@   )rÁ   )rK   rÁ   s     rE   ru   zN_StorageWriterTransforms.transform_save_stream.<locals>.NoCloseWriter.__init__  s   € Ø�”��rG   r\   c                 ó   — dS )NTrA   rJ   s    rE   Ú	writeablezO_StorageWriterTransforms.transform_save_stream.<locals>.NoCloseWriter.writeable  s   € Ø�trG   Úbc                 ó6   — | j                              |¦  «        S r@   )rÁ   Úwrite)rK   rÅ   s     rE   rÇ   zK_StorageWriterTransforms.transform_save_stream.<locals>.NoCloseWriter.write  s   € Ø”x—~’~ aÑ(Ô(Ð(rG   c                 ó`   — |                       ¦   «          | j                              ¦   «          d S r@   )ÚflushrÁ   rJ   s    rE   ÚclosezK_StorageWriterTransforms.transform_save_stream.<locals>.NoCloseWriter.close  s'   € Ø—
’
‘”�Ø”—’Ñ Ô Ð Ð Ð rG   N)rM   rN   rO   ÚioÚIOBaseru   rµ   rÄ   r   rS   rÇ   rÊ   rA   rG   rE   ÚNoCloseWriterrÀ     s}   € € € € € ð B¤Ið ð ð ð ð 4ð ð ð ð ð)˜vð )¨#ð )ð )ð )ð )ð!ð !ð !ð !ð !rG   rÍ   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rA   )Úget_descriptor)rB   Úexs     rE   ú
<listcomp>zB_StorageWriterTransforms.transform_save_stream.<locals>.<listcomp>  s$   € ÐWÐWÐW°r˜r×0Ò0Ñ2Ô2ÐWÐWÐWrG   )rË   rÌ   r   r   Úbytesrº   Útransform_toÚreversed)rK   r¼   r½   rÍ   rÓ   rÐ   s         rE   Útransform_save_streamz._StorageWriterTransforms.transform_save_stream÷   s•   € ð	!ð 	!ð 	!ð 	!ð 	!�BœIñ 	!ô 	!ð 	!õ �B�uœI } }°ZÑ'@Ô'@ÑAÔAˆà”/ð 	9ð 	9ˆBØŸ?š?¨<Ñ8Ô8ˆLˆLàÐWÐW½XÀdÄoÑ=VÔ=VÐWÑWÔWÐXÐXrG   r@   )rM   rN   rO   rP   r   r   r   ru   r)   rË   rÌ   ro   r   rÒ   r¶   rQ   rÕ   rA   rG   rE   r¸   r¸   å   s©   € € € € € ðð ð JNð	Cð 	CØ" 8Ð,DÔ#EÔFð	Cà	ð	Cð 	Cð 	Cð 	CðYØ#ðYØ13´ðYà	ˆr�%Œy˜$˜sœ)Ð#Ô	$ðYð Yð Yð Yð Yð YrG   r¸   Úitemc                 ó¦   — d}| j         €J ‚| j         j        D ]}||z  }Œ| j         j        j        }|t          j                             |¦  «        z  S ©Nr¡   )Útensor_datarc   Ú
propertiesÚdtyperp   Ú_utilsÚ_element_size)rÖ   rc   ÚsrÛ   s       rE   Ú
_item_sizerß     s_   € Ø€DØÔÐ'Ð'Ð'àÔÔ"ð ð ˆØ�‰	ˆˆàÔÔ'Ô-€EØ•%”,×,Ò,¨UÑ3Ô3Ñ3Ð3rG   ÚbinsrI   c                 ó0  — | dk    r|gS d„ |D ¦   «         }d„ |D ¦   «         }d„ t          | ¦  «        D ¦   «         }d„ t          | ¦  «        D ¦   «         }|                     t          d¬¦  «         t          |¦  «        D ]#\  }}||| z                                |¦  «         Œ$|D ]p}t          t          |¦  «        t          j        d¦  «        ¬¦  «        d	         }||                              |¦  «         ||xx         t          |¦  «        z  cc<   Œq|S )
Nr¡   c                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS rA   ©r¤   r*   ÚBYTE_IO©rB   Úwis     rE   rÑ   z+_split_by_size_and_type.<locals>.<listcomp>'  s'   € ÐFÐFÐF�b R¤WµÔ0EÒ%EÐ%EˆrÐ%EÐ%EÐ%ErG   c                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS rA   rã   rå   s     rE   rÑ   z+_split_by_size_and_type.<locals>.<listcomp>(  s'   € ÐGÐGÐG�r b¤gµÔ1FÒ&FÐ&F�Ð&FÐ&FÐ&FrG   c                 ó   — g | ]}g ‘ŒS rA   rA   ©rB   r�   s     rE   rÑ   z+_split_by_size_and_type.<locals>.<listcomp>*  s   € Ð%>Ð%>Ð%>¨Q bÐ%>Ð%>Ð%>rG   c                 ó   — g | ]}d ‘ŒS )r   rA   ré   s     rE   rÑ   z+_split_by_size_and_type.<locals>.<listcomp>+  s   € Ð+Ð+Ð+˜!�AÐ+Ð+Ð+rG   T)r¯   Úreverser®   r   )Úranger°   rß   Ú	enumeraterw   Úminr±   r²   )	rà   rI   Úbytes_wÚtensor_wÚbucketsÚbucket_sizesÚiræ   r�   s	            rE   Ú_split_by_size_and_typerô   #  s6  € Øˆq‚y€yØˆwˆàFÐF˜EÐFÑFÔF€GØGÐG˜UÐGÑGÔG€Hà%>Ð%>µ%¸±+´+Ð%>Ñ%>Ô%>€GØ+Ð+�u T™{œ{Ð+Ñ+Ô+€Là‡M‚M•j¨$€MÑ/Ô/Ð/å˜7Ñ#Ô#ð %ð %‰ˆˆ2Ø��D‘Ô× Ò  Ñ$Ô$Ð$Ð$àð ,ð ,ˆå•)˜LÑ)Ô)­xÔ/BÀ1Ñ/EÔ/EÐFÑFÔFÀqÔIˆØ�Œ×Ò˜BÑÔÐØ�SÐÐÔ�Z¨™^œ^Ñ+ÐÐÑÐà€NrG   Ú
transformsr†   Údatar¼   Ústorage_keyÚserialization_formatc           
      óJ  — |                      ¦   «         }|                      ||¦  «        \  }}|j        t          j        k    rDt          |t          j        ¦  «        sJ ‚|                     | 	                    ¦   «         ¦  «         n`t          |t          j        ¦  «        sJ ‚|j        t          j        d¦  «        k    sJ ‚|t          j        k    rt          j        ||¦  «         |                     ¦   «          |t          j        k    st          |t          j        ¦  «        r|                      ¦   «         |z
  }	n)|                     ¦   «         |                     ¦   «         z  }	t'          |¦  «        dk    rd n|}
t)          |j        |	t-          |||	|
¬¦  «        ¬¦  «        S )Nr|   r   )r=   )ÚindexÚsize_in_bytesÚstorage_data)ÚtellrÕ   r¤   r*   rä   Ú
isinstancerË   ÚBytesIOrÇ   Ú	getbufferrp   r   r¢   r5   rZ   ÚsaverÊ   r~   rœ   r–   r.   rú   r9   )rõ   r†   rö   r¼   r÷   rø   r;   rÓ   r=   r<   Úinfo_transform_descriptorss              rE   Ú_write_itemr  ;  s¡  € ð �[Š[‰]Œ]€Fà,6×,LÒ,LØ�Fñ-ô -Ñ)€\Ð(ð „�-Ô/Ò/Ð/Ý˜$¥¤
Ñ+Ô+Ð+Ð+Ð+Ø×Ò˜4Ÿ>š>Ñ+Ô+Ñ,Ô,Ð,Ð,å˜$¥¤Ñ-Ô-Ð-Ð-Ð-ØŒ{�eœl¨5Ñ1Ô1Ò1Ð1Ð1Ð1ØÕ#6Ô#AÒAÐAÝŒJ�t˜\Ñ*Ô*Ð*à×ÒÑÔÐàÕ2Ô=Ò=Ð=ÅØ�bŒjñBô BÐ=ð —’‘” Ñ'ˆˆà—’‘” × 1Ò 1Ñ 3Ô 3Ñ3ˆõ
 Ð)Ñ*Ô*¨aÒ/Ð/ˆˆÐ5Jð õ ØÔØÝ!ØØØØ"<ð	
ñ 
ô 
ð	ñ 	ô 	ð 	rG   Úcreate_streamÚ
file_queueÚresult_queueÚplannerr‡   Ú	use_fsyncÚthread_countc	                 óö  — 	 	 |                      ¦   «         \  }	}
}t          j                             ¦   «         }t	          t          |d ¦  «        }|dk    rQt          j                             ¦   «         s|r1|                     ¦   «         r|dk    rt          |j        |¬¦  «        }nt          |j        ¦  «        }d„ |D ¦   «         }|D ]%}| 
                    t          |¦  «        |¦  «         Œ&|                     ¦   «          d„ |D ¦   «         }g } | |	d¦  «        5 }|D ]>}|                     |¦  «        }|                     t          |||||
|¦  «        ¦  «         Œ?i }i }|                     ¦   «         D ]d\  }}|j        sJ ‚|                     t          |||||
|¦  «        ¦  «         |||j        j        <   d|j        j        j        i||j        j        <   Œe|t,          j        k    rddd	lm} |                      ||t6          t9          j        |¦  «        t<          t?          t@          ¦  «        tB          tD          i¬
¦  «        ¦  «         |rR	 tG          j$        | %                    ¦   «         ¦  «         n*# tL          tN          f$ r tG          j(        ¦   «          Y nw xY w| )                    ¦   «          d d d ¦  «         n# 1 swxY w Y   | *                    |¦  «         �Œâ# tV          j,        $ r Y d S w xY w)NTr¡   r   )r‡   c                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS rA   rã   rå   s     rE   rÑ   z+_write_files_from_queue.<locals>.<listcomp>”  s'   € ÐUÐUÐU˜r°B´G½}Ô?TÒ4TÐ4T˜Ð4TÐ4TÐ4TrG   c                 ó<   — g | ]}|j         t          j        k    ¯|‘ŒS rA   rã   rå   s     rE   rÑ   z+_write_files_from_queue.<locals>.<listcomp>™  s'   € ÐTÐTÐT˜b°2´7½mÔ>SÒ3SÐ3S�rÐ3SÐ3SÐ3SrG   ÚwbÚsaved_offsets)r  )Úmetadata)-Ú
get_nowaitrp   Ú_CÚ_get_privateuse1_backend_nameÚgetattrr‘   Úis_availabler„   Úresolve_datarr   rg   rß   rj   rw   r  rl   Úis_cpurú   ÚfqnrÙ   ÚchunkÚoffsetsr5   r[   Úsafetensors.torchr  rÇ   r   ÚjsonÚdumpsr   rQ   r   r   r   ÚosÚfsyncÚfilenoÚAttributeErrorr   ÚsyncrÊ   ÚputÚqueueÚEmpty)r  r  r  r  rõ   r‡   r  r	  rø   Ú	file_namer÷   Úwrite_itemsÚcustom_backend_nameÚcustom_device_modÚloaderrð   r¼   rï   Úwrite_resultsr†   rö   Útensor_dictÚmetadata_dictr‚   r  s                            rE   Ú_write_files_from_queuer-  m  sË  € ð[ðX	,Ø2<×2GÒ2GÑ2IÔ2IÑ/ˆI�{ Kõ #(¤(×"HÒ"HÑ"JÔ"JÐÝ '­Ð/BÀDÑ IÔ IÐð  Ò!Ð!å”J×+Ò+Ñ-Ô-ð "ð *ð "ð /@×.LÒ.LÑ.NÔ.Nð "ð
 (¨!Ò+Ð+å.ØÔ(Ø(;ðñ ô ��õ
 *ØÔ(ñô �ð VÐU [ÐUÑUÔUˆHØ&ð ?ð ?�
Ø—
’
�: jÑ1Ô1°:Ñ>Ô>Ð>Ð>Ø× Ò Ñ"Ô"Ð"àTÐT KÐTÑTÔTˆGØˆMà�˜y¨$Ñ/Ô/ð 4°6Ø")ð ð �JØ"×/Ò/°
Ñ;Ô;�DØ!×(Ò(Ý#Ø&Ø"Ø Ø&Ø'Ø0ñô ñ	ô 	ð 	ð 	ð !�Ø "�Ø*0¯-ª-©/¬/ð ð Ñ&�F˜JØ!œ=Ð(Ð(Ð(Ø!×(Ò(Ý#Ø&Ø"Ø"Ø&Ø'Ø0ñô ñ	ô 	ð 	ð 9?�K 
Ô 0Ô 4Ñ5à'¨Ô)?Ô)EÔ)Mð;�M *Ô"2Ô"6Ñ7Ð7ð (Õ+>Ô+JÒJÐJØ6Ð6Ð6Ð6Ð6Ð6à—L’LØ˜Ø'å 3µT´ZÀÑ5NÔ5NÝ /µµ^Ñ1DÔ1DÝ *­Lð&ðñ ô ñ	ô 	ð 	ð ð "ð"Ýœ §¢¡¤Ñ1Ô1Ð1Ð1øÝ*Õ,@ÐAð "ð "ð "Ýœ™	œ	˜	˜	˜	ð"øøøà—’‘”�ði4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ðj ×Ò˜]Ñ+Ô+Ð+ñqX	,øõr Œ;ð ð ð Øˆˆðøøøs[   ‚DK% ÄD5KÉ&I9É8KÉ9$J ÊKÊJ Ê KÊ7K% ËKËK% Ë
KËK% Ë%K8Ë7K8c                   ót  — e Zd Zeedeeej        f         dede	e
j        ddf         fd„¦   «         ¦   «         Zedeeej        f         dedeeej        f         fd„¦   «         Zedeeej        f         deeej        f         ddfd	„¦   «         Zedeeej        f         deeej        f         fd
„¦   «         Zedeeej        f         ddfd„¦   «         Zeedeeej        f         defd„¦   «         ¦   «         Zedeeej        f         defd„¦   «         Zedeeej        f         ddfd„¦   «         ZdS )r4   ÚpathÚmoder\   Nc                 ó   — d S r@   rA   )rK   r/  r0  s      rE   r  zFileSystemBase.create_stream×  s	   € ð ,/¨3rG   Úsuffixc                 ó   — d S r@   rA   ©rK   r/  r2  s      rE   Úconcat_pathzFileSystemBase.concat_pathÝ  s	   € ð #& #rG   Únew_pathc                 ó   — d S r@   rA   ©rK   r/  r6  s      rE   ÚrenamezFileSystemBase.renameâ  s	   € ð ˆsrG   c                 ó   — d S r@   rA   ©rK   r/  s     rE   Ú	init_pathzFileSystemBase.init_pathç  s   € ØSVÐSVrG   c                 ó   — d S r@   rA   r;  s     rE   ÚmkdirzFileSystemBase.mkdirê  s   € Ø<?¸CrG   Úcheckpoint_idc                 ó   — d S r@   rA   ©Úclsr?  s     rE   Úvalidate_checkpoint_idz%FileSystemBase.validate_checkpoint_idí  s   € àUXÐUXrG   c                 ó   — d S r@   rA   r;  s     rE   ÚexistszFileSystemBase.existsñ  s   € Ø=@¸SrG   c                 ó   — d S r@   rA   r;  s     rE   Úrm_filezFileSystemBase.rm_fileô  s   € Ø>A¸crG   )rM   rN   rO   r	   r   r   rQ   r  ÚPathLiker   rË   rÌ   r  r5  r9  r<  r>  Úclassmethodrµ   rC  rE  rG  rA   rG   rE   r4   r4   Ö  sþ  € € € € € ØØð/Ø˜#˜rœ{Ð*Ô+ð/Ø36ð/à	�2”9˜d DÐ(Ô	)ð/ð /ð /ñ „^ñ „^ð/ð ð&Ø˜#˜rœ{Ð*Ô+ð&Ø58ð&à	ˆs�B”KÐÔ	 ð&ð &ð &ñ „^ð&ð ðØ˜#˜rœ{Ð*Ô+ðØ7<¸SÀ"Ä+Ð=MÔ7Nðà	ðð ð ñ „^ðð ØV˜e C¨¬Ð$4Ô5ÐV¸%ÀÀRÄ[Ð@PÔ:QÐVÐVÐVñ „^ØVàØ?˜%  R¤[Ð 0Ô1Ð?°dÐ?Ð?Ð?ñ „^Ø?àØØX°5¸¸b¼kÐ9IÔ3JÐXÈtÐXÐXÐXñ „^ñ „[àXàØ@˜5  b¤kÐ!1Ô2Ð@°tÐ@Ð@Ð@ñ „^Ø@àØA˜E # r¤{Ð"2Ô3ÐA¸ÐAÐAÐAñ „^ØAÐAÐArG   r4   c            
       ó*  — e Zd Zedeeej        f         dedee	j
        ddf         fd„¦   «         Zdeeej        f         dedeeej        f         fd„Zdeeej        f         deeej        f         fd„Zdeeej        f         d	eeej        f         ddfd
„Zdeeej        f         ddfd„Zedeeej        f         defd„¦   «         Zdeeej        f         defd„Zdeeej        f         ddfd„Zdeeej        f         dee         fd„ZdS )r3   r/  r0  r\   Nc              #   óæ   K  — t          |t          ¦  «        st          |¦  «        }|                     |¦  «        5 }t          t          j        |¦  «        V — d d d ¦  «         d S # 1 swxY w Y   d S r@   )rþ   r   Úopenr   rË   rÌ   )rK   r/  r0  r†   s       rE   r  zFileSystem.create_streamù  s®   è è € õ ˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDØ�YŠY�t‰_Œ_ð 	* Ý•r”y &Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   ¼A&Á&A*Á-A*r2  c                 óT   — t          |t          ¦  «        st          |¦  «        }||z  S r@   ©rþ   r   r4  s      rE   r5  zFileSystem.concat_path  s+   € õ ˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDØ�f‰}ÐrG   c                 óN   — t          |t          ¦  «        st          |¦  «        }|S r@   rN  r;  s     rE   r<  zFileSystem.init_path	  s$   € Ý˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDØˆrG   r6  c                 óž   — t          |t          ¦  «        st          |¦  «        }|                     t          t          |¦  «        ¦  «         d S r@   )rþ   r   r9  r   r8  s      rE   r9  zFileSystem.rename  sC   € õ ˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDà�Š•D�˜xÑ(Ô(Ñ)Ô)Ð)Ð)Ð)rG   c                 ó|   — t          |t          ¦  «        st          |¦  «        }|                     dd¬¦  «         d S )NT)ÚparentsÚexist_ok)rþ   r   r>  r;  s     rE   r>  zFileSystem.mkdir  s;   € Ý˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDØ�
Š
˜4¨$ˆ
Ñ/Ô/Ð/Ð/Ð/rG   r?  c                 ó  — t          |t          ¦  «        rdS dt          |¦  «        v rdS t          |¦  «        j        D ]E}|                     ¦   «         r/t          j        t          |¦  «        t
          j        ¦  «        r dS ŒFdS )NTz://F)rþ   r   rQ   rR  rE  r  ÚaccessÚW_OK)rB  r?  Úps      rE   rC  z!FileSystem.validate_checkpoint_id  sƒ   € å�m¥TÑ*Ô*ð 	Ø�4à•C˜Ñ&Ô&Ð&Ð&Ø�5å�mÑ$Ô$Ô,ð 	ð 	ˆAØ�xŠx‰zŒzð �bœi­¨A©¬µ´Ñ8Ô8ð Ø�t�tøàˆurG   c                 ór   — t          |t          ¦  «        st          |¦  «        }|                     ¦   «         S r@   )rþ   r   rE  r;  s     rE   rE  zFileSystem.exists)  s-   € Ý˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDØ�{Š{‰}Œ}ÐrG   c                 óv   — t          |t          ¦  «        st          |¦  «        }|                     ¦   «          d S r@   )rþ   r   Úunlinkr;  s     rE   rG  zFileSystem.rm_file.  s0   € Ý˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDØ�Š‰ŒˆˆˆrG   c                 ó†   — t          |t          ¦  «        st          |¦  «        }d„ |                     ¦   «         D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rA   )rQ   )rB   rW  s     rE   rÑ   z!FileSystem.ls.<locals>.<listcomp>6  s   € Ð/Ð/Ð/˜1•�A‘”Ð/Ð/Ð/rG   )rþ   r   Úiterdirr;  s     rE   ÚlszFileSystem.ls3  s;   € Ý˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDØ/Ð/ §¢¡¤Ð/Ñ/Ô/Ð/rG   )rM   rN   rO   r	   r   rQ   r  rH  r   rË   rÌ   r  r5  r<  r9  r>  rI  rµ   rC  rE  rG  r¶   r^  rA   rG   rE   r3   r3   ø  s  € € € € € Øð*Ø˜#˜rœ{Ð*Ô+ð*Ø36ð*à	�2”9˜d DÐ(Ô	)ð*ð *ð *ñ „^ð*ðØ˜#˜rœ{Ð*Ô+ðØ58ðà	ˆs�B”KÐÔ	 ðð ð ð ð˜e C¨¬Ð$4Ô5ð ¸%ÀÀRÄ[Ð@PÔ:Qð ð ð ð ð
*Ø˜#˜rœ{Ð*Ô+ð*Ø7<¸SÀ"Ä+Ð=MÔ7Nð*à	ð*ð *ð *ð *ð0˜%  R¤[Ð 0Ô1ð 0°dð 0ð 0ð 0ð 0ð
 ð°5¸¸b¼kÐ9IÔ3Jð Ètð ð ð ñ „[ðð˜5  b¤kÐ!1Ô2ð °tð ð ð ð ð
˜E # r¤{Ð"2Ô3ð ¸ð ð ð ð ð
0�u˜S "¤+Ð-Ô.ð 0°4¸´9ð 0ð 0ð 0ð 0ð 0ð 0rG   r3   c                   ó^  ‡ — e Zd ZdZddddddej        fdeeej	        f         de
de
d	ed
ede
deee                  dedededdfˆ fd„Zd%deeej	        df         ddfd„Zde
ddfd„Zdedefd„Zdee         dee         fd„Zdededeee                  fd„Zdedej        deee                  fd„Zdedeee                  ddfd „Zdee          fd!„Z!e"deeej	        f         fd"„¦   «         Z#e"deeej	        f         fd#„¦   «         Z$e%deeej	        f         de
fd$„¦   «         Z&ˆ xZ'S )&Ú_FileSystemWriteráa  
    Basic implementation of StorageWriter using file IO.

    This implementation makes the following assumptions and simplifications:

    * The checkpoint path is an empty or non-existing directory.
    * File creation is atomic

    The checkpoint consist of one file per write request plus
    a `.metadata` file with the serialized metadata.

    Tr¡   é€–˜ Nr/  Úsingle_file_per_rankÚ
sync_filesr	  Úper_thread_copy_aheadÚ	overwriteÚ_extensionsrø   ÚargsÚkwargsr\   c	                 óN  •— t          ¦   «                              ¦   «          t          ¦   «         | _        | j                             |¦  «        | _        || _        || _        || _        || _	        t          ¦   «         | _        || _        t          |¦  «        | _        || _        dS )a=  
        Initialize the writer pointing to `path`.

        Args:
            path: directory where the checkpoint will be written to.
            single_file_per_rank: Produce one file per rank instead of one file per tensor/blob. Default to True.
            sync_files : force files to be synced to permanent storage. Default to True.
            thread_count: Number of IO threads to use to write. Default to 1.
            per_thread_copy_ahead: How many bytes to copy from the GPU ahead of saving then. Default 10Mb.
            overwrite: Whether to allow overwriting existing checkpoints. Defaults to True.
            _extensions: Extensions to apply to output streams (EXPERIMENTAL)

        N. B. If sync_files is disabled, there's no guarantee that the checkpoint will be consistent in the case of a failure.
        N)Úsuperru   r3   Úfsr<  r/  rc  rd  r	  re  r`   Úsave_idrf  r¸   rõ   rø   )rK   r/  rc  rd  r	  re  rf  rg  rø   rh  ri  Ú	__class__s              €rE   ru   z_FileSystemWriter.__init__G  s�   ø€ õ6 	‰Œ×ÒÑÔÐÝ‘,”,ˆŒØ”G×%Ò% dÑ+Ô+ˆŒ	Ø$8ˆÔ!Ø$ˆŒØ(ˆÔØ%:ˆÔ"Ý%Ñ'Ô'ˆŒØ"ˆŒÝ2°;Ñ?Ô?ˆŒØ$8ˆÔ!Ð!Ð!rG   r?  c                 ón   — |r| j                              |¦  «        | _        t          ¦   «         | _        d S r@   )rl  r<  r/  r`   rm  ©rK   r?  s     rE   Úresetz_FileSystemWriter.resetn  s2   € Øð 	9Øœ×)Ò)¨-Ñ8Ô8ˆDŒIÝ%Ñ'Ô'ˆŒˆˆrG   Úis_coordinatorc                 ó   — d S r@   rA   )rK   rr  s     rE   Úset_up_storage_writerz'_FileSystemWriter.set_up_storage_writers  ry   rG   Úplanc                 ó  — | j                              | j        ¦  «         | j                              | j        ¦  «        rE| j        r&t          j        d| j        › d| j        ›d�¦  «         nt          d| j        ›d�¦  «        ‚|S )Nz#Detected an existing checkpoint in z#, overwriting since self.overwrite=z². Past version 2.5 of PyTorch, `overwrite` will default to False. Set this variable to True to maintain this functionality or False to raise when an existing checkpoint is found.z-Checkpoint already exists and self.overwrite=ú.)	rl  r>  r/  rE  Úmetadata_pathrf  ÚwarningsÚwarnr¬   ©rK   ru  s     rE   Úprepare_local_planz$_FileSystemWriter.prepare_local_planv  s¨   € ØŒ�Š�d”iÑ Ô Ð ØŒ7�>Š>˜$Ô,Ñ-Ô-ð 	XØŒ~ð XÝ”ðk¸$Ô:Lð kð kÐbfÔbpð kð kð kñô ð ð õ #Ð#VÀDÄNÐ#VÐ#VÐ#VÑWÔWÐWàˆrG   Úplansc                 ó8   — d„ t          |¦  «        D ¦   «         }|S )Nc           
      ób   — g | ],\  }}t          j        |t          d |› d�¦  «        ¬¦  «        ‘Œ-S )Ú__r�   ©rü   )ÚdataclassesÚreplacerU   )rB   ró   ru  s      rE   rÑ   z9_FileSystemWriter.prepare_global_plan.<locals>.<listcomp>…  sL   € ð 
ð 
ð 
á��4õ Ô µ>À)ÀqÀ)À)À)Ñ3LÔ3LÐMÑMÔMð
ð 
ð 
rG   )rí   )rK   r}  Ú	new_planss      rE   Úprepare_global_planz%_FileSystemWriter.prepare_global_plan„  s0   € ð
ð 
å$ UÑ+Ô+ð
ñ 
ô 
ˆ	ð ÐrG   r  c                 óÞ  ‡	‡
— |j         Š
dŠ	ˆ	ˆ
fd„}t          j        ¦   «         }| j        r`t	          | j        |j        ¦  «        D ]D} |¦   «         }| j                             | j	        |¦  «        }| 
                    |||f¦  «         ŒEnM|j        D ]E} |¦   «         }| j                             | j	        |¦  «        }| 
                    |||gf¦  «         ŒF|                      ||¦  «        S )Nr   c                  ó6   •— ‰j         › ‰› t          › �} ‰dz  Š| S rØ   )rV   ÚDEFAULT_SUFFIX)r%  Ú
file_countÚstorage_plans    €€rE   Úgen_filez._FileSystemWriter.write_data.<locals>.gen_file“  s*   ø€ à'Ô.ÐL°
ÐL½NÐLÐLˆIØ˜!‰OˆJØÐrG   )rü   r#  ÚQueuerc  rô   r	  rI   rl  r5  r/  r"  Ú_write_data)rK   ru  r  r‹  r  Úbucketr%  r/  rÖ   r‰  rŠ  s            @@rE   Ú
write_dataz_FileSystemWriter.write_data‹  s  øø€ ð
 (,Ô'8ˆØˆ
ð	ð 	ð 	ð 	ð 	ð 	õ #(¤+¡-¤-ˆ
ØÔ$ð 		:Ý1°$Ô2CÀTÄZÑPÔPð :ð :�Ø$˜H™JœJ�	Ø”w×*Ò*¨4¬9°iÑ@Ô@�Ø—’  i°Ð8Ñ9Ô9Ð9Ð9ð:ð
 œ
ð :ð :�Ø$˜H™JœJ�	Ø”w×*Ò*¨4¬9°iÑ@Ô@�Ø—’  i°$°Ð8Ñ9Ô9Ð9Ð9à×Ò ¨Ñ4Ô4Ð4rG   r  c                 ó�  — t          j        ¦   «         }g }t          d| j        ¦  «        D ]r}t	          j        t          | j        j        |||| j	        | j
        | j        | j        | j        f	¬¦  «        }|                     ¦   «          |                     |¦  «         Œst          | j        j        |||| j	        | j
        | j        | j        | j        ¬¦	  «	         |D ]}|                     ¦   «          Œg }	 	 ||                     ¦   «         z  }Œ# t           j        $ r( t%          ¦   «         }|                     |¦  «         |cY S w xY w)Nr¡   )Útargetrh  )	r  r  r  r  rõ   r‡   r  r	  rø   )r#  rŒ  rì   r	  Ú	threadingÚThreadr-  rl  r  rõ   re  rd  rø   Ústartrw   Újoinr  r$  r0   Ú
set_result)	rK   r  r  r  Úthreadsr�   ÚtÚresÚfuts	            rE   r�  z_FileSystemWriter._write_data§  so  € õ
 %*¤K¡M¤MˆàˆÝ�q˜$Ô+Ñ,Ô,ð 	ð 	ˆAÝÔ Ý.à”GÔ)ØØ ØØ”OØÔ.Ø”OØÔ%ØÔ-ð
ðñ ô ˆAð �GŠG‰IŒIˆIØ�NŠN˜1ÑÔÐÐåØœ'Ô/Ø!Ø%ØØ”Ø $Ô :Ø”oØÔ*Ø!%Ô!:ð
	
ñ 
	
ô 
	
ð 
	
ð ð 	ð 	ˆAØ�FŠF‰HŒHˆHˆHàˆð	ð1Ø�|×.Ò.Ñ0Ô0Ñ0�ð1øåŒ{ð 	ð 	ð 	Ý-3©X¬XˆCØ�NŠN˜3ÑÔÐØˆJˆJˆJð	øøøs   Ã5D Ä4EÅEr  Úresultsc                 ó  — i }|D ]!}|                      d„ |D ¦   «         ¦  «         Œ"||_        |                      ¦   «         |_        t          t          | j                             | j        t          › d�¦  «        ¦  «        }| j         	                    |d¦  «        5 }t          j        ||¦  «         | j        rR	 t          j        |                     ¦   «         ¦  «         n*# t           t"          f$ r t          j        ¦   «          Y nw xY wd d d ¦  «         n# 1 swxY w Y   | j                             | j        ¦  «        r| j                             | j        ¦  «         | j                             || j        ¦  «         d S )Nc                 ó(   — i | ]}|j         |j        “ŒS rA   )rú   rü   )rB   Úwrs     rE   rF   z,_FileSystemWriter.finish.<locals>.<dictcomp>Ü  s   € ÐKÐKÐK¸R˜rœx¨¬ÐKÐKÐKrG   z.tmpr  )Úupdaterü   Ústorage_metar   r   rl  r5  r/  r7   r  ÚpickleÚdumprd  r  r  r  r   r   r!  rE  rx  rG  r9  )rK   r  r›  Ú
storage_mdÚwr_listÚtmp_pathÚmetadata_files          rE   Úfinishz_FileSystemWriter.finishÙ  s±  € Øˆ
Øð 	Mð 	MˆGØ×ÒÐKÐKÀ7ÐKÑKÔKÑLÔLÐLÐLØ *ˆÔà $× 1Ò 1Ñ 3Ô 3ˆÔå�˜dœg×1Ò1°$´)ÅÐ=RÐ=RÐ=RÑSÔSÑTÔTˆØŒW×"Ò" 8¨TÑ2Ô2ð 	°mÝŒK˜ -Ñ0Ô0Ð0ØŒð ðÝ”H˜]×1Ò1Ñ3Ô3Ñ4Ô4Ð4Ð4øÝ&Õ(<Ð=ð ð ð Ý”G‘I”I�I�I�Iðøøøð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð Œ7�>Š>˜$Ô,Ñ-Ô-ð 	0ØŒG�OŠO˜DÔ.Ñ/Ô/Ð/àŒ�Š�x Ô!3Ñ4Ô4Ð4Ð4Ð4s6   ÂDÂ;&C"Ã!DÃ"$D	ÄDÄD	Ä	DÄDÄDc                 ó8   — t          | j        | j        ¬¦  «        S )N)r?  rm  )r"   r?  rm  rJ   s    rE   r   z_FileSystemWriter.storage_metað  s   € Ý¨Ô);ÀTÄ\ÐRÑRÔRÐRrG   c                 ór   — t          t          | j                             | j        t
          ¦  «        ¦  «        S r@   )r   r   rl  r5  r/  r7   rJ   s    rE   rx  z_FileSystemWriter.metadata_pathó  s&   € å•D˜$œ'×-Ò-¨d¬i½ÑFÔFÑGÔGÐGrG   c                 ó   — | j         S )zT
        return the checkpoint_id that will be used to save the checkpoint.
        ©r/  rJ   s    rE   r?  z_FileSystemWriter.checkpoint_id÷  ó   € ð
 ŒyÐrG   c                 ó6   — t                                |¦  «        S r@   ©r3   rC  rA  s     rE   rC  z(_FileSystemWriter.validate_checkpoint_idþ  ó   € å×0Ò0°Ñ?Ô?Ð?rG   r@   )(rM   rN   rO   rP   r5   rZ   r   rQ   r  rH  rµ   rS   r   r   r   r   ru   rq  rt  r'   r|  r¶   r…  r(   r0   r.   r�  r#  rŒ  r�  r    r§  r"   r   r´   rx  r?  rI  rC  Ú__classcell__©rn  s   @rE   r`  r`  9  s  ø€ € € € € ðð ð  &*ØØØ%/ØØDHØ4GÔ4Rð%9ð %9à�C˜œÐ$Ô%ð%9ð #ð%9ð ð	%9ð
 ð%9ð  #ð%9ð ð%9ð ˜hÐ'?Ô@ÔAð%9ð 2ð%9ð ð%9ð ð%9ð 
ð%9ð %9ð %9ð %9ð %9ð %9ðN(ð ( 5¨¨b¬k¸4Ð)?Ô#@ð (ÈDð (ð (ð (ð (ð
°Dð ¸Tð ð ð ð ð xð °Hð ð ð ð ð¨¨h¬ð ¸DÀ¼Nð ð ð ð ð5àð5ð ð5ð 
��[Ô!Ô	"ð	5ð 5ð 5ð 5ð80àð0ð ”Kð0ð 
��[Ô!Ô	"ð	0ð 0ð 0ð 0ðd5˜xð 5°$°t¸KÔ7HÔ2Ið 5Èdð 5ð 5ð 5ð 5ð.S˜h {Ô3ð Sð Sð Sð Sð ðH˜u S¨"¬+Ð%5Ô6ð Hð Hð Hñ „XðHð ð˜u S¨"¬+Ð%5Ô6ð ð ð ñ „Xðð ð@°5¸¸b¼kÐ9IÔ3Jð @Ètð @ð @ð @ñ „[ð@ð @ð @ð @ð @rG   r`  c            	       ól   — e Zd ZdZd
dee         ddfd„Zdedee	         de
e         de
e         fd	„ZdS )Ú_StorageReaderTransformsr¹   NÚextension_registryr\   c                 ó4   — |€t          ¦   «         n|| _        d S r@   )r   r´  )rK   r´  s     rE   ru   z!_StorageReaderTransforms.__init__
  s%   € à#5Ð#=ÕÑÔÐÐCUð 	ÔÐÐrG   Ú	read_itemr=   r½   c                 óœ   — | j                              |¦  «        }|}|D ],}t          |t          ¦  «        r|                     |¦  «        }Œ-|S r@   )r´  Úfrom_descriptor_listrþ   r   Útransform_from)rK   r¶  r=   r½   rº   r¹  rÐ   s          rE   Útransform_load_streamz._StorageReaderTransforms.transform_load_stream  s_   € ð Ô,×AÒAÐBWÑXÔXˆ
Ø#ˆØð 	Cð 	CˆBÝ˜"Õ6Ñ7Ô7ð CØ!#×!2Ò!2°>Ñ!BÔ!B�øØÐrG   r@   )rM   rN   rO   rP   r   r   ru   r&   r   rQ   r   rÒ   rº  rA   rG   rE   r³  r³    s’   € € € € € ðð ð
ð 
¨8Ð4EÔ+Fð 
ÐRVð 
ð 
ð 
ð 
ð
àðð  (¨œ}ðð �u”Ið	ð
 
ˆEŒðð ð ð ð ð rG   r³  c                   óˆ  ‡ — e Zd Z	 ddeeej        f         dee         ddfˆ fd„Z	de
dee         fd„Zddeeej        df         ddfd	„Zd
ededed         fd„Zdefd„Zdededdfd„Zd
edefd„Zdee         dee         fd„Zedeeej        f         fd„¦   «         Zedeeej        f         defd„¦   «         Zˆ xZS )r2   Nr/  Ú_extension_registryr\   c                 ó  •— t          ¦   «                              ¦   «          t          ¦   «         | _        | j                             |¦  «        | _        i | _        t          ¦   «         | _        t          |¦  «        | _
        d S r@   )rk  ru   r3   rl  r<  r/  rü   r`   Úload_idr³  rõ   )rK   r/  r¼  rn  s      €rE   ru   zFileSystemReader.__init__  sf   ø€ õ
 	‰Œ×ÒÑÔÐÝ‘,”,ˆŒØ”G×%Ò% dÑ+Ô+ˆŒ	Ø,.ˆÔÝ%Ñ'Ô'ˆŒÝ2Ð3FÑGÔGˆŒˆˆrG   Úsinfoc                 ót   — t          t          t                   t          ||j        |j        ¦  «        ¦  «        S r@   )r   r   rÒ   r/   r;   r<   )rK   Úfiler¿  s      rE   Ú_slice_filezFileSystemReader._slice_file*  s'   € Ý•B•u”IÕ0°°u´|ÀUÄ\ÑRÔRÑSÔSÐSrG   r?  c                 ó|   — i | _         |r| j                             |¦  «        | _        t	          ¦   «         | _        d S r@   )rü   rl  r<  r/  r`   r¾  rp  s     rE   rq  zFileSystemReader.reset-  s:   € ØˆÔØð 	9Øœ×)Ò)¨-Ñ8Ô8ˆDŒIÝ%Ñ'Ô'ˆŒˆˆrG   ru  r  c                 óÜ  — i }|j         D ]D}| j        |j                 }|j        }|                     |g ¦  «                             |¦  «         ŒE|                      ¦   «         D �]d\  }}| j                             | j        |¦  «        }	| j         	                    |	d¦  «        5 }
|D �]}| j        |j                 }|  
                    |
|¦  «        }| j                             ||j        pd|¦  «        }|j        t          j        k    rSt#          j        |                     d¦  «        ¦  «        }|                     d¦  «         |                     ||¦  «         Œ¶|                     ¦   «         r|}n<t#          j        |                     d¦  «        ¦  «        }|                     d¦  «         t/          t0          t3          j        |dd¬¦  «        ¦  «        }t7          ||j        |j        ¦  «        }|                     |¦  «                             ¦   «         }|                      ¦   «         |                      ¦   «         k    s<J d|j        › d	|                      ¦   «         › d
|                      ¦   «         › �¦   «         ‚| !                    |¦  «         | "                    ||¦  «         �Œ	 d d d ¦  «         n# 1 swxY w Y   �ŒftG          ¦   «         }| $                    d ¦  «         |S )NÚrbrA   éÿÿÿÿr   r|   T)Úmap_locationÚweights_onlyzreq z mismatch sizes z vs )%rI   rü   Ústorage_indexr:   Ú
setdefaultrw   rl  r5  r/  r  rÂ  rõ   rº  r=   r¤   r#   rä   rË   rÿ   ÚreadÚseekÚ
load_bytesÚseekabler   r   rp   Úloadr   Ústorage_offsetsÚlengthsÚresolve_tensorr{   rc   Úcopy_Úcommit_tensorr0   r–  )rK   ru  r  Úper_filer¶  Úitem_mdr/  r:   Úreqsr6  r†   ÚreqÚ
file_slicer¹  Ú
read_bytesrÎ  r‚   Útarget_tensorrš  s                      rE   Ú	read_datazFileSystemReader.read_data3  s<  € à.0ˆØœð 	<ð 	<ˆIØ$(Ô$5°iÔ6MÔ$NˆGØÔ(ˆDØ×Ò  bÑ)Ô)×0Ò0°Ñ;Ô;Ð;Ð;à#+§>¢>Ñ#3Ô#3ð -	Bñ -	BÑˆM˜4Ø”w×*Ò*¨4¬9°mÑDÔDˆHØ”×&Ò& x°Ñ6Ô6ð +B¸&àð )Bñ )B�CØ"Ô/°Ô0AÔB�GØ!%×!1Ò!1°&¸'Ñ!BÔ!B�JØ%)¤_×%JÒ%JØð  Ô5Ð;¸Ø"ñ&ô &�Nð ”x¥<Ô#7Ò7Ð7Ý%'¤Z°×0CÒ0CÀBÑ0GÔ0GÑ%HÔ%H˜
Ø"Ÿš¨Ñ*Ô*Ð*Ø×*Ò*¨3°
Ñ;Ô;Ð;Ð;à)×2Ò2Ñ4Ô4ð -Ø'5˜H˜Hõ (*¤z°.×2EÒ2EÀbÑ2IÔ2IÑ'JÔ'J˜HØ$ŸMšM¨!Ñ,Ô,Ð,å!%Ý"Ý!œJØ (Ø-2Ø-1ðñ ô ñ"ô "˜õ "8Ø" CÔ$7¸¼ñ"ô "˜ð )0×(>Ò(>¸sÑ(CÔ(C×(JÒ(JÑ(LÔ(L˜à,×1Ò1Ñ3Ô3°v·{²{±}´}ÒDÐDÐDØo 3Ô#4ÐoÐoÀm×FXÒFXÑFZÔFZÐoÐoÐ`f×`kÒ`kÑ`mÔ`mÐoÐoñ  EÔDÐDð &×+Ò+¨FÑ3Ô3Ð3Ø×-Ò-¨c°=ÑAÔAÐAÑAðS)Bð+Bð +Bð +Bñ +Bô +Bð +Bð +Bð +Bð +Bð +Bð +Bøøøð +Bð +Bð +Bð +BùõZ ‘h”hˆØ�Š�tÑÔÐØˆ
s   Â$HJ<Ê<K 	ËK 	c                 ó>  — | j                              | j        d¦  «        }| j                              |d¦  «        5 }t	          j        |¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |dd ¦  «        €t          ¦   «         |_        | j	        |j        _	        |S )Nr6   rÅ  r   )
rl  r5  r/  r  r¡  rÏ  r  r"   r   r¾  )rK   r/  r¦  r  s       rE   Úread_metadatazFileSystemReader.read_metadatao  sÆ   € ØŒw×"Ò" 4¤9¨kÑ:Ô:ˆØŒW×"Ò" 4¨Ñ.Ô.ð 	2°-Ý”{ =Ñ1Ô1ˆHð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2õ �8˜^¨TÑ2Ô2Ð:Ý$/¡M¤MˆHÔ!Ø(,¬ˆÔÔ%àˆs   ¼AÁA!Á$A!r  rr  c                 ó0   — |j         | _         | j         €J ‚d S r@   r�  )rK   r  rr  s      rE   Úset_up_storage_readerz&FileSystemReader.set_up_storage_readerz  s"   € Ø$Ô1ˆÔØÔ Ð,Ð,Ð,Ð,Ð,rG   c                 ó   — |S r@   rA   r{  s     rE   r|  z#FileSystemReader.prepare_local_plan~  s   € ØˆrG   r}  c                 ó   — |S r@   rA   )rK   r}  s     rE   r…  z$FileSystemReader.prepare_global_plan�  s   € ØˆrG   c                 ó   — | j         S )zT
        return the checkpoint_id that will be used to load the checkpoint.
        r«  rJ   s    rE   r?  zFileSystemReader.checkpoint_id„  r¬  rG   c                 ó6   — t                                |¦  «        S r@   r®  rA  s     rE   rC  z'FileSystemReader.validate_checkpoint_id‹  r¯  rG   r@   )rM   rN   rO   r   rQ   r  rH  r   r   ru   r9   r   rÒ   rÂ  rq  r$   r%   r0   rÜ  r    rÞ  rµ   rà  r|  r¶   r…  r´   r?  rI  rC  r°  r±  s   @rE   r2   r2     s  ø€ € € € € ð <@ð
Hð 
Hà�C˜œÐ$Ô%ð
Hð &Ð&7Ô8ð
Hð 
ð	
Hð 
Hð 
Hð 
Hð 
Hð 
HðT |ð T¸¸5¼	ð Tð Tð Tð Tð(ð ( 5¨¨b¬k¸4Ð)?Ô#@ð (ÈDð (ð (ð (ð (ð9˜hð 9°ð 9ÀÈÄð 9ð 9ð 9ð 9ðx	˜xð 	ð 	ð 	ð 	ð-¨hð -Èð -ÐQUð -ð -ð -ð -ð xð °Hð ð ð ð ð¨¨h¬ð ¸DÀ¼Nð ð ð ð ð ð˜u S¨"¬+Ð%5Ô6ð ð ð ñ „Xðð ð@°5¸¸b¼kÐ9IÔ3Jð @Ètð @ð @ð @ñ „[ð@ð @ð @ð @ð @rG   r2   c                   óª   ‡ — e Zd ZdZdddddddej        fdeeej	        f         de
d	e
d
edede
de
deee                  deddfd„Zdedefˆ fd„Zˆ xZS )r1   ra  Tr¡   rb  FNr/  rc  rd  r	  re  Úcache_staged_state_dictrf  rg  rø   r\   c
                 óx   — t                                | ||||||||	¬¦	  «	         t          j        | |¬¦  «         dS )aš  
        Initialize the writer pointing to `path`.

        Args:
            path: directory where the checkpoint will be written to.
            single_file_per_rank: Produce one file per rank instead of one file per tensor/blob. Default to True.
            sync_files : force files to be synced to permanent storage. Default to True.
            thread_count: Number of IO threads to use to write. Default to 1.
            per_thread_copy_ahead: How many bytes to copy from the GPU ahead of saving then. Default 10Mb.
            cache_staged_state_dict: Whether to cache the staged state_dict. This option decreases staging latency
                at the cost of increases memory usage. Additionally, if this parameter is set to True, it's the expectation
                that the stager is maintained and reused for multiple dcp.async_save calls. Default to False.
            overwrite: Whether to allow overwriting existing checkpoints. Defaults to True.
            _extensions: Extensions to apply to output streams (EXPERIMENTAL)

        N. B. If sync_files is disabled, there's no guarantee that the checkpoint will be consistent in the case of a failure.
        )r/  rc  rd  r	  re  rf  rg  rø   )ræ  N)r`  ru   r+   )
rK   r/  rc  rd  r	  re  ræ  rf  rg  rø   s
             rE   ru   zFileSystemWriter.__init__ž  sh   € õ: 	×"Ò"ØØØ!5Ø!Ø%Ø"7ØØ#Ø!5ð 	#ñ 
	
ô 
	
ð 
	
õ 	Ô$ØØ$;ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   Ú
state_dictc                 óT   •— d| _         t          ¦   «                              |¦  «        S )zOverride of AsyncStager.stager   )re  rk  Ústage)rK   rè  rn  s     €rE   rê  zFileSystemWriter.stageË  s#   ø€ ð &'ˆÔ"Ý‰wŒw�}Š}˜ZÑ(Ô(Ð(rG   )rM   rN   rO   rP   r5   rZ   r   rQ   r  rH  rµ   rS   r   r   r   ru   r!   rê  r°  r±  s   @rE   r1   r1   �  s  ø€ € € € € ðð ð  &*ØØØ%/Ø(-ØØDHØ4GÔ4Rð+
ð +
à�C˜œÐ$Ô%ð+
ð #ð+
ð ð	+
ð
 ð+
ð  #ð+
ð "&ð+
ð ð+
ð ˜hÐ'?Ô@ÔAð+
ð 2ð+
ð 
ð+
ð +
ð +
ð +
ðZ) ð )°Oð )ð )ð )ð )ð )ð )ð )ð )ð )ð )rG   r1   )hrŠ   r‚  rË   r  r±   r  r¡  r#  r’  r^   ry  Úabcr   r   Úcollections.abcr   r   r   r   Ú
contextlibr	   r
   Úenumr   r   Úpathlibr   Útypingr   r   r   r   r   r   Útyping_extensionsr   rp   r   Útorch._utilsr   r   Útorch.distributed._shard._utilsr   Ú'torch.distributed.checkpoint._extensionr   r   Ú&torch.distributed.checkpoint._hf_utilsr   r   r   r   r   Ú%torch.distributed.checkpoint.metadatar    r!   r"   Ú$torch.distributed.checkpoint.plannerr#   r$   r%   r&   r'   r(   r)   r*   Ú$torch.distributed.checkpoint.stagingr+   Ú$torch.distributed.checkpoint.storager,   r-   r.   Ú"torch.distributed.checkpoint.utilsr/   Útorch.futuresr0   Ú__all__r7   rQ   rR   r9   rU   r5   rˆ  r`   rb   rr   r„   r¸   rS   rß   r¶   rô   rÌ   rÿ   r  rŒ  rµ   r-  r4   r3   r`  r³  r2   r1   rA   rG   rE   ú<module>rý     s  ðà Ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ %Ð %Ð %Ð %Ð %Ð %Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ð %Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð YÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ Xð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð EÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð
 AÐ @Ð @Ð @Ð @Ð @Ø  Ð  Ð  Ð  Ð  Ð  ðð ð €ð  €ˆcÐ Ð Ñ ð ð	Ið 	Ið 	Ið 	Ið 	Iñ 	Iô 	Iñ „ð	Ið ðð ð ð ð ñ ô ñ „ðð ð  ð  ð  ð  ˜$ñ  ô  ð  ð
 €ð˜ð ð ð ð ðð ð ð ð �Cñ ô ð ðð ð ð ð �}ñ ô ð ð.W"ð W"ð W"ð W"ð W"˜Mñ W"ô W"ð W"ðt0Yð 0Yð 0Yð 0Yð 0Yñ 0Yô 0Yð 0Yðf4�Yð 4 3ð 4ð 4ð 4ð 4ð #ð ¨d°9¬oð À$ÀtÈIÄÔBWð ð ð ð ð0/Ø(ð/àŒIð/ð �”
˜EœLÐ(Ô
)ð/ð ð	/ð
 ð/ð .ð/ð ð/ð /ð /ð /ðdfØðfà”ðfð ”+ðfð ð	fð
 )ðfð ðfð ðfð ðfð .ðfð 
ðfð fð fð fðRBð Bð Bð Bð B�Sñ Bô Bð BðD>0ð >0ð >0ð >0ð >0�ñ >0ô >0ð >0ðBG@ð G@ð G@ð G@ð G@˜ñ G@ô G@ð G@ðTð ð ð ð ñ ô ð ð4p@ð p@ð p@ð p@ð p@�}ñ p@ô p@ð p@ðf@)ð @)ð @)ð @)ð @)Ð(Ð*=ñ @)ô @)ð @)ð @)ð @)rG   