§
    ŠŠtjX@  ã                   ó  — 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
 d dlmZ d dlm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mZmZmZ d	dl m!Z!m"Z" ddgZ# ed¦  «        Z$ ed¦  «        Z%de&e$ez           de'e(ef         fd„Z)	 d0de'e*ef         dej+        dz  de,e*         fd„Z-	 d0de'e*ef         dej+        dz  ddfd„Z. G d„ d¦  «        Z/dede!defd„Z0dej1        de!dej1        fd„Z2de"de!defd„Z3d ee(         d!ee(         de&e(         fd"„Z4d ee(         d!ee(         de&e(         fd#„Z5 G d$„ d%ej6        ¦  «        Z7d&ej6        d'e(d(e(dej6        fd)„Z8d*e*d+e(de*fd,„Z9d-Z:e
d.„ ¦   «         Z;d/„ Z<dS )1é    N)ÚCallableÚSequence)Úcontextmanager)Úwraps)ÚStats)ÚAnyÚcastÚTypeVar)ÚShardedTensor)ÚShardé   )Ú_is_wrapped_exceptionÚ_wrap_exceptionÚCheckpointExceptionÚWRAPPED_EXCEPTION)ÚMetadataIndexÚSTATE_DICT_TYPEÚfind_tensor_shardÚfind_state_dict_objectÚTÚRÚresultsÚreturnc                 ó~   — t          t          t          t          f         d„ t	          | ¦  «        D ¦   «         ¦  «        S )Nc                 ó8   — i | ]\  }}t          |¦  «        ¯||“ŒS © )r   )Ú.0ÚiÚerrs      ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributed/checkpoint/utils.pyú
<dictcomp>z%_get_failure_dict.<locals>.<dictcomp>'   s,   € ÐOÐOÐO‘F�A�sÕ4IÈ#Ñ4NÔ4NÐOˆˆCÐOÐOÐOó    )r	   ÚdictÚintr   Ú	enumerate)r   s    r    Ú_get_failure_dictr&   "   s=   € õ Ý�SÕ#Ð#Ô$ØOÐO�i¨Ñ0Ô0ÐOÑOÔOñô ð r"   Ú
local_dictÚgroupc                 óú   — t          |                      ¦   «         ¦  «        }dgt          j        |¦  «        z  }t          j        |||¬¦  «         t          t          j                             |¦  «        ¦  «        S )z*Gathers all keys, and returns them sorted.N©r(   )	ÚlistÚkeysÚdistÚget_world_sizeÚall_gather_objectÚsetÚ	itertoolsÚchainÚfrom_iterable)r'   r(   r,   Úgathered_keyss       r    Ú_all_gather_keysr5   +   sh   € õ �
—’Ñ!Ô!Ñ"Ô"€DØ&* V­dÔ.AÀ%Ñ.HÔ.HÑ%H€MåÔ˜=¨$°eÐ<Ñ<Ô<Ð<Ý�yŒ×,Ò,¨]Ñ;Ô;Ñ<Ô<Ð<r"   Ú
state_dictÚprocess_groupc                 óð   — t          j        |¦  «        dk    rdS t          | |¦  «        }t          |                      ¦   «         ¦  «        }||z
  }t          |¦  «        dk    rt          d|› �¦  «        ‚dS )zÝ
    Asserts that all ranks have the same keys in their state dict.
    This is a collective call which requires all ranks in ``process_group`` to
    join. It will also induce cross-rank communication and block CPU.
    r   Nr   z<Key(s) present in other ranks but not this one, difference: )r-   r.   r5   r0   r,   ÚlenÚAssertionError)r6   r7   Úall_keysÚmy_keysÚdiffs        r    Ú_assert_same_keysr>   6   s‚   € õ Ô˜=Ñ)Ô)¨QÒ.Ð.Øˆå 
¨MÑ:Ô:€HÝ�*—/’/Ñ#Ô#Ñ$Ô$€GØ�gÑ€DÝ
ˆ4�y„y�1‚}€}ÝØQÈ4ÐQÐQñ
ô 
ð 	
ð €}r"   c            	       ó¸  — e Zd ZdZdej        dz  dedefd„Zdefd„Z	defd	„Z
d
edz  defd„Zd
edee         dz  fd„Zd
edee         fd„Zdee         dz  defd„Zdedeg ef         deee         gee         f         defd„Zdedeg ef         deee         gef         defd„Zdedeg ef         dee         fd„Zdedeg ef         defd„Zdd„ZdS )Ú_DistWrapperaG  
    This is a wrapper around PG that provides a series of features around object collectives.

    It works without distributed initialized, where most collectives turn into nops.

    All variants that take functions are exception robust, meaning that if one or more
    ranks raise errors, all ranks will observe those.
    r(   NÚuse_distÚcoordinator_rankc                 óú   — || _         || _        || _        | j        rI|�t          j        ||¦  «        n|| _        t          j        |¦  «        | _        | j        |k    | _        d S d| _        d| _        d| _        d S )Nr   T)	r(   rA   rB   r-   Úget_global_rankÚglobal_coordinator_rankÚget_rankÚrankÚis_coordinator)Úselfr(   rA   rB   s       r    Ú__init__z_DistWrapper.__init__U   s“   € ð ˆŒ
Ø ˆŒØ 0ˆÔØŒ=ð 	'ð Ð$õ Ô$ UÐ,<Ñ=Ô=Ð=à%ð Ô(õ
 œ eÑ,Ô,ˆDŒIØ"&¤)Ð/?Ò"?ˆDÔÐÐà+,ˆDÔ(ØˆDŒIØ"&ˆDÔÐÐr"   r   c                 ó   — | j         S ©N)rG   ©rI   s    r    rF   z_DistWrapper.get_rankk   s
   € ØŒyÐr"   c                 óF   — | j         rt          j        | j        ¦  «        S dS )Nr   )rA   r-   r.   r(   rM   s    r    r.   z_DistWrapper.get_world_sizen   s$   € ØŒ=ð 	3ÝÔ& t¤zÑ2Ô2Ð2Øˆqr"   Úobjectc                 óŽ   — |g}| j         r!t          j        || j        | j        ¬¦  «         t          t          |d         ¦  «        S )z_Implement functionality similar to c10d::broadcast_object_list but without distributed enabled.)Úobject_listr(   Úsrcr   )rA   r-   Úbroadcast_object_listr(   rE   r	   r   )rI   rO   rQ   s      r    Úbroadcast_objectz_DistWrapper.broadcast_objects   sQ   € à�hˆØŒ=ð 	ÝÔ&Ø'Ø”jØÔ0ðñ ô ð õ
 •A�{ 1”~Ñ&Ô&Ð&r"   c                 óþ   — | j         rr| j        r;t          t          t                   dgt          j        | j        ¦  «        z  ¦  «        nd}t          j        || j        r|nd| j	        | j        ¬¦  «         |}n|g}|S )zWImplement functionality similar to c10d::gather_object but without distributed enabled.N)ÚobjÚobject_gather_listÚdstr(   )
rA   rH   r	   r+   r   r-   r.   r(   Úgather_objectrE   )rI   rO   Úgather_objsÚresults       r    rY   z_DistWrapper.gather_object~   s–   € àŒ=ð 	ð Ô&ð••T�!”W˜t˜f¥tÔ':¸4¼:Ñ'FÔ'FÑFÑGÔGÐGàð õ ÔØØ26Ô2EÐ#O ; ;È4ØÔ0Ø”jð	ñ ô ð ð !ˆFˆFà�XˆFØˆr"   c                 óÊ   — | j         rXt          t          t                   dgt	          j        | j        ¦  «        z  ¦  «        }t	          j        ||| j        ¬¦  «         n|g}|S )z[Implement functionality similar to c10d::all_gather_object but without distributed enabled.N)rQ   rV   r(   )rA   r	   r+   r   r-   r.   r(   r/   )rI   rO   rZ   s      r    r/   z_DistWrapper.all_gather_object’   sj   € àŒ=ð 	#Ý�t¥Aœw¨¨µÔ1DÀTÄZÑ1PÔ1PÑ(PÑQÔQˆKåÔ"Ø'¨V¸4¼:ðñ ô ð ð ð "˜(ˆKØÐr"   rQ   c                 óð   — | j         rUt          t          t                   dg¦  «        }t	          j        || j        r|nd| j        | j        ¬¦  «         |d         }n|€t          d¦  «        ‚|d         }|S )zXImplement functionality similar to c10d::scatter_object but without distributed enabled.N)Úscatter_object_output_listÚscatter_object_input_listrR   r(   r   zobject_list is None)
rA   r	   r+   r   r-   Úscatter_object_listrH   rE   r(   r:   )rI   rQ   Úgather_resultÚlocal_replys       r    Úscatter_objectz_DistWrapper.scatter_objectž   s‹   € àŒ=ð 	)Ý ¥¥a¤¨4¨&Ñ1Ô1ˆMÝÔ$Ø+8Ø9=Ô9LÐ*V¨+¨+ÐRVØÔ0Ø”jð	ñ ô ð ð (¨Ô*ˆKˆKàÐ"Ý$Ð%:Ñ;Ô;Ð;Ø% aœ.ˆKØÐr"   ÚstepÚmap_funÚ
reduce_func           	      óÔ  — 	  |¦   «         }n&# t           $ r}t          |¦  «        }Y d}~nd}~ww xY w|                      |¦  «        }d}| j        rë|€t	          d¦  «        ‚t          |¦  «        }t          |¦  «        dk    r	 t          t          t          t          z            |t          t          t                   |¦  «        ¦  «        ¦  «        }n.# t           $ r!}t          |¦  «        || j        <   Y d}~nd}~ww xY wt          |¦  «        dk    r&t          ||¦  «        g|                      ¦   «         z  }|                      |¦  «        }	t          |	t          ¦  «        r|	‚|	S )a^  
        Compute a value on each rank, then do centralized reduce on a single rank, followed by a scatter.

        This method operates in the following way:
            Run ``map_fun`` on all ranks
            Gather results on rank 0
            Call ``reduce_fun`` on all those values
            Scatter to each rank part of the result.
        Núall_data is Noner   )ÚBaseExceptionr   rY   rH   r:   r&   r9   r	   r+   r   r   r   rG   r.   rc   Ú
isinstance)
rI   rd   re   rf   Ú
local_dataÚeÚall_dataÚall_resultsÚnode_failuresr[   s
             r    Úreduce_scatterz_DistWrapper.reduce_scatter°   s›  € ð 	,Ø ˜™œˆJˆJøÝð 	,ð 	,ð 	,Ý(¨Ñ+Ô+ˆJˆJˆJˆJˆJˆJøøøøð	,øøøð ×%Ò% jÑ1Ô1ˆØ<@ˆØÔð 	*ØÐÝ$Ð%7Ñ8Ô8Ð8Ý-¨hÑ7Ô7ˆMå�=Ñ!Ô! QÒ&Ð&ðBå"&Ý�QÕ!4Ñ4Ô5Ø"˜
¥4­­Q¬°Ñ#:Ô#:Ñ;Ô;ñ#ô #�K�Køõ %ð Bð Bð BÝ/>¸qÑ/AÔ/A�M $¤)Ñ,Ð,Ð,Ð,Ð,Ð,øøøøðBøøøõ �=Ñ!Ô! AÒ%Ð%å'¨¨mÑ<Ô<ðà×'Ò'Ñ)Ô)ñ*�ð ×$Ò$ [Ñ1Ô1ˆÝ�fÕ1Ñ2Ô2ð 	ØˆLØˆs)   ‚
 �
0—+«0ÂAC Ã
D ÃC;Ã;D c                 ó‚  — 	  |¦   «         }n&# t           $ r}t          |¦  «        }Y d}~nd}~ww xY w|                      |¦  «        }d}| j        r¯|€t	          d¦  «        ‚t          |¦  «        }t          |¦  «        dk    rY	  |t          t          t                   |¦  «        ¦  «        }n.# t           $ r!}t          |¦  «        || j
        <   Y d}~nd}~ww xY wt          |¦  «        dk    rt          ||¦  «        }|                      |¦  «        }	t          |	t          ¦  «        r|	‚t          t          |	¦  «        S )aa  
        Compute a value on each rank, then do centralized reduce on a single rank, followed by a broadcast.

        This method operates in the following way:
            Run ``map_fun`` on all ranks
            Gather results on rank 0
            Call ``reduce_fun`` on all those values
            Broadcast the reduced value to all ranks.
        Nrh   r   )ri   r   rY   rH   r:   r&   r9   r	   r+   r   rG   r   rT   rj   r   )
rI   rd   re   rf   rk   rl   rm   r[   ro   Úfinal_results
             r    Ú
all_reducez_DistWrapper.all_reduceà   sr  € ð 	,Ø ˜™œˆJˆJøÝð 	,ð 	,ð 	,Ý(¨Ñ+Ô+ˆJˆJˆJˆJˆJˆJøøøøð	,øøøð ×%Ò% jÑ1Ô1ˆØ15ˆØÔð 	BØÐÝ$Ð%7Ñ8Ô8Ð8Ý-¨hÑ7Ô7ˆMÝ�=Ñ!Ô! QÒ&Ð&ðBØ'˜Z­­Tµ!¬W°hÑ(?Ô(?Ñ@Ô@�F�FøÝ$ð Bð Bð BÝ/>¸qÑ/AÔ/A�M $¤)Ñ,Ð,Ð,Ð,Ð,Ð,øøøøðBøøøõ �=Ñ!Ô! AÒ%Ð%Ý,¨T°=ÑAÔA�ð ×,Ò,¨VÑ4Ô4ˆÝ�lÕ$7Ñ8Ô8ð 	ØÐå•A�|Ñ$Ô$Ð$s(   ‚
 �
0—+«0Â)B/ Â/
CÂ9CÃCc                 ó4  — 	  |¦   «         }n&# t           $ r}t          |¦  «        }Y d}~nd}~ww xY w|                      |¦  «        }t          |¦  «        }t	          |¦  «        dk    rt          ||¦  «        ‚t          t          t                   |¦  «        S )zÐ
        Compute a value on each rank, then all_gather them.

        This method operates in the following way:
            Run ``map_cp`` on all ranks
            all_gather the values to all ranks
        Nr   )	ri   r   r/   r&   r9   r   r	   r+   r   )rI   rd   re   r[   rl   rn   ro   s          r    Ú
all_gatherz_DistWrapper.all_gather  s£   € ð	(Ø�W‘Y”YˆFˆFøÝð 	(ð 	(ð 	(Ý$ QÑ'Ô'ˆFˆFˆFˆFˆFˆFøøøøð	(øøøð ×,Ò,¨VÑ4Ô4ˆå)¨+Ñ6Ô6ˆÝˆ}ÑÔ Ò!Ð!Ý% d¨MÑ:Ô:Ð:Ý•D�”G˜[Ñ)Ô)Ð)s   ‚
 �
0—+«0c                 ó$  — d}| j         rG	  |¦   «         }n;# t          $ r.}t          || j        t	          |¦  «        i¦  «        }Y d}~nd}~ww xY w|                      |¦  «        }t          |t          ¦  «        r|‚t          t          |¦  «        S )z¶
        Compute a value on rank 0 and broadcast it.

        This method operates in the following way:
            Run ``map_cp`` on rank 0
            broadcast the value
        N)	rH   ri   r   rG   r   rT   rj   r	   r   )rI   rd   re   r[   rl   rr   s         r    Ú	broadcastz_DistWrapper.broadcast$  s±   € ð 26ˆØÔð 	TðTØ ˜™œ��øÝ ð Tð Tð TÝ,¨T°D´I½ÈqÑ?QÔ?QÐ3RÑSÔS������øøøøðTøøøð ×,Ò,¨VÑ4Ô4ˆÝ�lÕ$7Ñ8Ô8ð 	ØÐå•A�|Ñ$Ô$Ð$s   ‹
 –
A $A	Á	Ac                 óL   — | j         sdS t          j        | j        ¬¦  «         dS )a  
        Add a synchronization point across all processes when using distributed.
        If torch.distributed is initialized, this function will invoke a barrier across the global process group.
        If torch.distributed is not initialized, this function is a no-op.
        Nr*   )rA   r-   Úbarrierr(   rM   s    r    ry   z_DistWrapper.barrier=  s.   € ð Œ}ð 	ØˆFÝŒ˜4œ:Ð&Ñ&Ô&Ð&Ð&Ð&r"   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r-   ÚProcessGroupÚboolr$   rJ   rF   r.   r   rT   r+   rY   r/   rc   Ústrr   r   rp   rs   ru   rw   ry   r   r"   r    r@   r@   K   s]  € € € € € ðð ð'àÔ  4Ñ'ð'ð ð'ð ð	'ð 'ð 'ð 'ð,˜#ð ð ð ð ð ð ð ð ð ð
	' q¨4¡xð 	'°Að 	'ð 	'ð 	'ð 	'ð Að ¨$¨q¬'°D©.ð ð ð ð ð(
¨ð 
¨d°1¬gð 
ð 
ð 
ð 
ð¨$¨q¬'°D©.ð ¸Qð ð ð ð ð$.àð.ð ˜"˜a˜%”ð.ð ˜d 1œg˜Y¨¨Q¬Ð/Ô0ð	.ð
 
ð.ð .ð .ð .ð`)%àð)%ð ˜"˜a˜%”ð)%ð ˜d 1œg˜Y¨˜\Ô*ð	)%ð
 
ð)%ð )%ð )%ð )%ðV*àð*ð ˜"˜a˜%”ð*ð 
ˆaŒð	*ð *ð *ð *ð2%àð%ð ˜"˜a˜%”ð%ð 
ð	%ð %ð %ð %ð2'ð 'ð 'ð 'ð 'ð 'r"   r@   ÚtensorÚindexc                 óÄ  — |j         €t          d|j        › d�¦  «        ‚|                      ¦   «         }|j        �Wt          |¦  «        |j        k    r?t          j        ||j                 j        j	        ¦  «        |j         k    r||j                 S |D ]-}t          j        |j        j	        ¦  «        |j         k    r|c S Œ.t          d|j         › d|j        › d�¦  «        ‚)NzCannot lookup z5 since its a ShardedTensor and no offset was providedzCould not find shard at 'z' for FQN: 'ú')
ÚoffsetÚ
ValueErrorÚfqnÚlocal_shardsr‚   r9   ÚtorchÚSizeÚmetadataÚshard_offsets)r�   r‚   ÚshardsÚshards       r    Ú_find_shardr�   H  së   € Ø„|ÐÝØ]˜UœYÐ]Ð]Ð]ñ
ô 
ð 	
ð × Ò Ñ"Ô"€Fà„{Ðå�‰KŒK˜%œ+Ò%Ð%Ý”
˜6 %¤+Ô.Ô7ÔEÑFÔFÈ%Ì,ÒVÐVà˜%œ+Ô&Ð&àð ð ˆÝŒ:�e”nÔ2Ñ3Ô3°u´|ÒCÐCØˆLˆLˆLð Då
ÐW°´ÐWÐWÈ5Ì9ÐWÐWÐWÑ
XÔ
XÐXr"   c                 óv  — t          | d¦  «        r|                      |¦  «        S t          | t          ¦  «        rt	          | |¦  «        j        S |j        �b|j        t          j        dgt          |  
                    ¦   «         ¦  «        z  ¦  «        k    r| S t          d|j        › d|j        › d�¦  «        ‚| S )NÚ__get_tensor_shard__r   úFQN: 'ú1' is not a ShardedTensor, can't find by offset: 'r„   )Úhasattrr‘   rj   r   r�   r�   r…   r‰   rŠ   r9   Úsizer†   r‡   )r�   r‚   s     r    r   r   ]  s¾   € ÝˆvÐ-Ñ.Ô.ð 2à×*Ò*¨5Ñ1Ô1Ð1Ý�&�-Ñ(Ô(ð 1Ý˜6 5Ñ)Ô)Ô0Ð0Ø„|ÐàŒ<�5œ: q c­C°·²±´Ñ,>Ô,>Ñ&>Ñ?Ô?Ò?Ð?ØˆMÝØ`�U”YÐ`Ð`ÐQVÔQ]Ð`Ð`Ð`ñ
ô 
ð 	
ð €Mr"   c                 ó  — |j         | vrt          d|j         › d�¦  «        ‚| |j                  }t          |t          j        ¦  «        rt          ||¦  «        S |j        � t          d|j         › d|j        › d�¦  «        ‚|S )NzCould not find FQN: 'r„   r’   r“   )r‡   r†   rj   r‰   ÚTensorr   r…   )r6   r‚   rV   s      r    r   r   m  s˜   € Ø„y˜
Ð"Ð"ÝÐ=°´Ð=Ð=Ð=Ñ>Ô>Ð>Ø
�U”YÔ
€Cå�#•u”|Ñ$Ô$ð 
Ý   eÑ,Ô,Ð,Ø	ŒÐ	!ÝØ`�U”YÐ`Ð`ÐQVÔQ]Ð`Ð`Ð`ñ
ô 
ð 	
ð €Jr"   ÚaÚbc                 ó6   — d„ t          | |¦  «        D ¦   «         S )Nc                 ó   — g | ]
\  }}||z   ‘ŒS r   r   ©r   Úi_aÚi_bs      r    ú
<listcomp>z%_element_wise_add.<locals>.<listcomp>|  ó    € Ð0Ð0Ð0™(˜#˜sˆC�#‰IÐ0Ð0Ð0r"   ©Úzip©r˜   r™   s     r    Ú_element_wise_addr¤   {  ó   € Ø0Ð0¥c¨!¨Q¡i¤iÐ0Ñ0Ô0Ð0r"   c                 ó6   — d„ t          | |¦  «        D ¦   «         S )Nc                 ó   — g | ]
\  }}||z
  ‘ŒS r   r   rœ   s      r    rŸ   z%_element_wise_sub.<locals>.<listcomp>€  r    r"   r¡   r£   s     r    Ú_element_wise_subr¨     r¥   r"   c                   óŠ   ‡ — e Zd Zdej        dedefˆ fd„Zej        fdededefd„Z	defd„Z
defd	„Zdefd
„Zd„ Zdd„Zˆ xZS )Ú_ReaderViewÚbase_streamr…   r9   c                 óœ   •— t          ¦   «                              ¦   «          || _        || _        || _        |                      d¦  «         d S ©Nr   )ÚsuperrJ   r…   r9   r«   Úseek)rI   r«   r…   r9   Ú	__class__s       €r    rJ   z_ReaderView.__init__„  sB   ø€ Ý‰Œ×ÒÑÔÐØˆŒØˆŒØ&ˆÔØ�	Š	�!‰Œˆˆˆr"   Úwhencer   c                óÊ   — |t           j        k    r| j        |z   }n.|t           j        k    rt           j        }| j        | j        z   |z
  }| j                             ||¦  «        S rL   )ÚosÚSEEK_SETr…   ÚSEEK_ENDr9   r«   r¯   )rI   r…   r±   s      r    r¯   z_ReaderView.seek‹  s]   € Ø•R”[Ò Ð Ø”[ 6Ñ)ˆFˆFØ•r”{Ò"Ð"Ý”[ˆFØ”k D¤HÑ,°Ñ6ˆFØÔ×$Ò$ V¨VÑ4Ô4Ð4r"   c                 óD   — | j                              ¦   «         | j        z
  S rL   )r«   Útellr…   rM   s    r    r·   z_ReaderView.tell“  s   € ØÔ×$Ò$Ñ&Ô&¨¬Ñ4Ð4r"   c                 ó4   — | j                              ¦   «         S rL   )r«   ÚreadablerM   s    r    r¹   z_ReaderView.readable–  ó   € ØÔ×(Ò(Ñ*Ô*Ð*r"   c                 ó4   — | j                              ¦   «         S rL   )r«   ÚseekablerM   s    r    r¼   z_ReaderView.seekable™  rº   r"   c                 óÒ   — | j         |                      ¦   «         z
  }|dk    rdS t          |¦  «        |k    rt          |¦  «        d |…         }| j                             |¦  «        S r­   )r9   r·   Ú
memoryviewr«   Úreadinto)rI   r™   Úmax_sizes      r    r¿   z_ReaderView.readintoœ  s`   € Ø”8˜dŸiši™kœkÑ)ˆØ�qŠ=ˆ=Ø�1Ýˆq‰6Œ6�HÒÐÝ˜1‘”˜i˜x˜iÔ(ˆAØÔ×(Ò(¨Ñ+Ô+Ð+r"   éÿÿÿÿc                 óŠ   — | j         |                      ¦   «         z
  }|dk    s||k    r|}| j                             |¦  «        S )NrÁ   )r9   r·   r«   Úread)rI   r•   rÀ   s      r    rÃ   z_ReaderView.read¤  sC   € Ø”8˜dŸiši™kœkÑ)ˆØ�2Š:ˆ:˜ š˜ØˆDØÔ×$Ò$ TÑ*Ô*Ð*r"   )rÁ   )rz   r{   r|   ÚioÚIOBaser$   rJ   r³   r´   r¯   r·   r   r¹   r¼   r¿   rÃ   Ú__classcell__)r°   s   @r    rª   rª   ƒ  sý   ø€ € € € € ð B¤Ið °sð Àð ð ð ð ð ð ð /1¬kð 5ð 5˜3ð 5¨ð 5Àð 5ð 5ð 5ð 5ð5�cð 5ð 5ð 5ð 5ð+˜$ð +ð +ð +ð +ð+˜$ð +ð +ð +ð +ð,ð ,ð ,ð+ð +ð +ð +ð +ð +ð +ð +r"   rª   Úfiler…   Úlengthc                 ó$   — t          | ||¦  «        S rL   )rª   )rÇ   r…   rÈ   s      r    Ú_create_file_viewrÊ   «  s   € å�t˜V VÑ,Ô,Ð,r"   Údevice_typeÚ	device_idc                 ó    — | dk    rdS | › d|› �S )zDevice info normalization.Úcpuú:r   )rË   rÌ   s     r    Ú_normalize_device_inforÐ   °  s&   € à�eÒÐØˆuØÐ'Ð'˜IÐ'Ð'Ð'r"   Fc               #   ó  K  — t           rót          j        ¦   «         rt          j        ¦   «         dk    rÉt	          j        ¦   «         } |                      ¦   «          	 d V — |                      ¦   «          t          | ¦  «        }| 	                    d¦  «         
                    d¦  «         d S # |                      ¦   «          t          | ¦  «        }| 	                    d¦  «         
                    d¦  «         w xY wd V — d S )Nr   Útimeé
   )ÚENABLE_PROFILEr-   Úis_availablerF   ÚcProfileÚProfileÚenableÚdisabler   Ú
sort_statsÚprint_stats)ÚprofilerÚstatss     r    Ú_profilerÞ   »  sö   è è € õ ð 
�tÔ0Ñ2Ô2ð 
µd´m±o´oÈÒ6JÐ6JÝÔ#Ñ%Ô%ˆØ�ŠÑÔÐð	5ØˆEˆEˆEà×ÒÑÔÐÝ˜(‘O”OˆEØ×Ò˜VÑ$Ô$×0Ò0°Ñ4Ô4Ð4Ð4Ð4øð ×ÒÑÔÐÝ˜(‘O”OˆEØ×Ò˜VÑ$Ô$×0Ò0°Ñ4Ô4Ð4Ð4øøøàˆˆˆˆˆs   ÁB- Â-AC:c                 óL   ‡ — t          ‰ ¦  «        dt          fˆ fd„¦   «         }|S )Nr   c                  óÈ  •— t          | ¦  «        dk    rÇt          j        d‰j        › d�d¬¦  «         t	          j        ‰¦  «        }d„ |j                             ¦   «         D ¦   «         }d|v r$d|v rt          d| |f› �¦  «        ‚| d         |d<   n:d	|v r$d	|v rt          d
| |f› �¦  «        ‚| d         |d	<   nt          d|› �¦  «        ‚ ‰| d         fi |¤ŽS  ‰| i |¤ŽS )Né   zThe argument order of zG has been changed. Please check the document to avoid future breakages.)Ú
stacklevelc                 ó<   — g | ]}|j         |j        k    ¯|j        ‘ŒS r   )ÚkindÚKEYWORD_ONLYÚname)r   Úps     r    rŸ   z5_api_bc_check.<locals>.inner_func.<locals>.<listcomp>Ö  s/   € ð ð ð Ø¸1¼6ÀQÄ^Ò;SÐ;S�”Ð;SÐ;SÐ;Sr"   Ústorage_writerzstorage_writer in kwargs: r   Ústorage_readerzstorage_reader in kwargs: zUnexpected kwonlyargs = r   )
r9   ÚwarningsÚwarnrz   ÚinspectÚ	signatureÚ
parametersÚvaluesr:   ÚRuntimeError)ÚargsÚkwargsÚsigÚ
kwonlyargsÚfuncs       €r    Ú
inner_funcz!_api_bc_check.<locals>.inner_funcÍ  sX  ø€ åˆt‰9Œ9˜Š>ˆ>ÝŒMðG¨¬ð Gð Gð Gàðñ ô ð õ
 Ô# DÑ)Ô)ˆCðð Ø #¤× 5Ò 5Ñ 7Ô 7ðñ ô ˆJð   :Ð-Ð-Ø# vÐ-Ð-Ý(Ð)VÀtÈVÀnÐ)VÐ)VÑWÔWÐWØ+/°¬7�Ð'Ñ(Ð(Ø! ZÐ/Ð/Ø# vÐ-Ð-Ý(Ð)VÀtÈVÀnÐ)VÐ)VÑWÔWÐWØ+/°¬7�Ð'Ñ(Ð(å"Ð#J¸jÐ#JÐ#JÑKÔKÐKØ�4˜˜QœÐ*Ð* 6Ð*Ð*Ð*à�4˜Ð( Ð(Ð(Ð(r"   )r   r   )rõ   rö   s   ` r    Ú_api_bc_checkr÷   Ì  s@   ø€ Ý
ˆ4�[„[ð)¥sð )ð )ð )ð )ð )ñ „[ð)ð2 Ðr"   rL   )=rÖ   rì   rÄ   r1   r³   rê   Úcollections.abcr   r   Ú
contextlibr   Ú	functoolsr   Úpstatsr   Útypingr   r	   r
   r‰   Útorch.distributedÚdistributedr-   Ú'torch.distributed._shard.sharded_tensorr   Ú-torch.distributed._shard.sharded_tensor.shardr   Úapir   r   r   r   r‹   r   r   Ú__all__r   r   r+   r#   r$   r&   r€   r~   r0   r5   r>   r@   r�   r—   r   r   r¤   r¨   rÅ   rª   rÊ   rÐ   rÔ   rÞ   r÷   r   r"   r    ú<module>r     s  ðà €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø  Ð  Ð  Ð  Ð  Ð  Ø AÐ AÐ AÐ AÐ AÐ AØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð Ð 8Ð
9€à€GˆC�L„L€Ø€GˆC�L„L€ðØ�!Ð'Ñ'Ô(ðà	ˆ#Ð Ð
 Ô!ðð ð ð ð CGð=ð =Ø�S˜#�X”ð=Ø'+Ô'8¸4Ñ'?ð=àˆ„Xð=ð =ð =ð =ð KOð
ð 
Ø�S˜#�X”ð
Ø/3Ô/@À4Ñ/Gð
à	ð
ð 
ð 
ð 
ð*z'ð z'ð z'ð z'ð z'ñ z'ô z'ð z'ðzY˜ð Y¨mð YÀð Yð Yð Yð Yð*˜eœlð °=ð ÀUÄ\ð ð ð ð ð  ð ¸}ð ÐQTð ð ð ð ð1˜ #œð 1¨8°C¬=ð 1¸TÀ#¼Yð 1ð 1ð 1ð 1ð1˜ #œð 1¨8°C¬=ð 1¸TÀ#¼Yð 1ð 1ð 1ð 1ð%+ð %+ð %+ð %+ð %+�"”)ñ %+ô %+ð %+ðP-˜BœIð -¨sð -¸Cð -ÀBÄIð -ð -ð -ð -ð
(¨ð (¸ð (Àð (ð (ð (ð (ð €ð ðð ñ „ðð ð ð ð ð r"   