Ë
    g^(h#=  ã                   ó  — 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 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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&e!f      de)e*e!f   fd„Z+	 d0de)e,ef   deejZ                     de.e,   fd„Z/	 d0de)e,ef   deejZ                     ddfd„Z0 G d„ d«      Z1dede#defd„Z2dejf                  de#dejf                  fd„Z4de$de#defd„Z5d ee*   d!ee*   de(e*   fd"„Z6d ee*   d!ee*   de(e*   fd#„Z7 G d$„ d%ejp                  «      Z9d&ejp                  d'e*d(e*dejp                  fd)„Z:d*e,d+e*de,fd,„Z;d-Z<e	d.„ «       Z=d/„ Z>y)1é    N)ÚSequence)Úcontextmanager)Úwraps)ÚStats)ÚAnyÚCallableÚcastÚOptionalÚTypeVarÚUnion)Ú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   t	        | «      D ��ci c]  \  }}t        |«      sŒ||“Œ c}}«      S c c}}w ©N)r	   ÚdictÚintr   Ú	enumerater   )r   ÚiÚerrs      ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributed/checkpoint/utils.pyÚ_get_failure_dictr$   "   sE   € ô ÜŒSÔ#Ð#Ñ$Ü'¨Ó0×O‘F�A�sÔ4IÈ#Õ4NˆˆC‰ÓOóð ùãOs
   ¦AºAÚ
local_dictÚgroupc                 óæ   — t        | j                  «       «      }dgt        j                  |«      z  }t        j                  |||¬«       t        t        j                  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_keysr2   +   sX   € ô �
—‘Ó!Ó"€DØ&* V¬d×.AÑ.AÀ%Ó.HÑ%H€Mä×Ñ˜=¨$°eÕ<ÜŒy�‰×,Ñ,¨]Ó;Ó<Ð<ó    Ú
state_dictÚprocess_groupc                 óÂ   — t        j                  |«      dk(  ryt        | |«      }t        | j	                  «       «      }||z
  }t        |«      dkD  rt        d|› �«      ‚y)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+   r2   r-   r)   ÚlenÚAssertionError)r4   r5   Úall_keysÚmy_keysÚdiffs        r#   Ú_assert_same_keysr<   6   sh   € ô ×Ñ˜=Ó)¨QÒ.Øä 
¨MÓ:€HÜ�*—/‘/Ó#Ó$€GØ�gÑ€DÜ
ˆ4ƒy�1‚}ÜØJÈ4È&ÐQó
ð 	
ð r3   c            	       ój  — e Zd ZdZdeej                     dedefd„Z	defd„Z
defd„Zd	ee   defd
„Zd	edeee      fd„Zd	edee   fd„Zdeee      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y)Ú_DistWrapperaH  
    This is a wrapper around PG that provides a series of features around object collectives.

    It works without distributed initialized, where most collectives turns 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&   Úuse_distÚcoordinator_rankc                 ó  — || _         || _        || _        | j                  rN|�t        j                  ||«      n|| _        t        j                  |«      | _        | j                  |k(  | _        y d| _        d| _        d| _        y )Nr   T)	r&   r?   r@   r*   Úget_global_rankÚglobal_coordinator_rankÚget_rankÚrankÚis_coordinator)Úselfr&   r?   r@   s       r#   Ú__init__z_DistWrapper.__init__U   s‚   € ð ˆŒ
Ø ˆŒØ 0ˆÔØ�=Š=ð Ð$ô ×$Ñ$ UÐ,<Ô=à%ð Ô(ô
 Ÿ™ eÓ,ˆDŒIØ"&§)¡)Ð/?Ñ"?ˆDÕà+,ˆDÔ(ØˆDŒIØ"&ˆDÕr3   r   c                 ó   — | j                   S r   )rE   ©rG   s    r#   rD   z_DistWrapper.get_rankk   s   € Ø�y‰yÐr3   c                 óZ   — | j                   rt        j                  | j                  «      S y)Nr   )r?   r*   r+   r&   rJ   s    r#   r+   z_DistWrapper.get_world_sizen   s!   € Ø�=Š=Ü×&Ñ& t§z¡zÓ2Ð2Ør3   Ú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   )r?   r*   Úbroadcast_object_listr&   r@   r	   r   )rG   rL   rN   s      r#   Úbroadcast_objectz_DistWrapper.broadcast_objects   sD   € à�hˆØ�=Š=Ü×&Ñ&Ø'Ø—j‘jØ×)Ñ)õô
 ”A�{ 1‘~Ó&Ð&r3   c                 ó.  — | j                   r…| j                  r8t        t        t           dgt        j                  | j                  «      z  «      nd}t        j                  || j                  r|nd| j                  | j                  ¬«       |}|S |g}|S )zWImplement functionality similar to c10d::gather_object but without distributed enabled.N)ÚobjÚobject_gather_listÚdstr&   )
r?   rF   r	   r(   r   r*   r+   r&   Úgather_objectrC   )rG   rL   Úgather_objsÚresults       r#   rV   z_DistWrapper.gather_object~   sŽ   € à�=Š=ð ×&Ò&ô ”Tœ!‘W˜t˜f¤t×':Ñ':¸4¿:¹:Ó'FÑFÔGàð ô ×ÑØØ26×2EÒ2E¡;È4Ø×0Ñ0Ø—j‘jõ	ð !ˆFð ˆð �XˆFØˆr3   c                 óÜ   — | j                   r\t        t        t           dgt	        j
                  | j                  «      z  «      }t	        j                  ||| j                  ¬«       |S |g}|S )z[Implement functionality similar to c10d::all_gather_object but without distributed enabled.N)rN   rS   r&   )r?   r	   r(   r   r*   r+   r&   r,   )rG   rL   rW   s      r#   r,   z_DistWrapper.all_gather_object’   s_   € à�=Š=Üœt¤A™w¨¨´×1DÑ1DÀTÇZÁZÓ1PÑ(PÓQˆKä×"Ñ"Ø'¨V¸4¿:¹:õð
 Ðð "˜(ˆKØÐr3   rN   c                 óä   — | j                   rZt        t        t           dg«      }t	        j
                  || j                  r|nd| j                  | j                  ¬«       |d   }|S |€J ‚|d   }|S )zXImplement functionality similar to c10d::scatter_object but without distributed enabled.N)Úscatter_object_output_listÚscatter_object_input_listrO   r&   r   )	r?   r	   r(   r   r*   Úscatter_object_listrF   rC   r&   )rG   rN   Úgather_resultÚlocal_replys       r#   Úscatter_objectz_DistWrapper.scatter_objectž   s{   € à�=Š=Ü ¤¤a¡¨4¨&Ó1ˆMÜ×$Ñ$Ø+8Ø9=×9LÒ9L©+ÐRVØ×0Ñ0Ø—j‘jõ	ð (¨Ñ*ˆKð Ðð Ð*Ð*Ð*Ø% a™.ˆKØÐr3   ÚstepÚmap_funÚ
reduce_func           	      óJ  — 	  |«       }| j                  |«      }d}| j                  r‰|€J ‚t	        |«      }t        |«      dk(  r@	 t        t        t        t        t        f       |t        t        t           |«      «      «      }t        |«      dkD  rt        ||«      g| j                  «       z  }| j                  |«      }	t        |	t        «      r|	‚|	S # t         $ r}t        |«      }Y d}~Œæd}~ww xY w# t         $ r"}t        |«      || j                  <   Y d}~Œ˜d}~ww xY w)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.
        Nr   )ÚBaseExceptionr   rV   rF   r$   r7   r	   r(   r   r   r   r   rE   r+   r`   Ú
isinstance)
rG   ra   rb   rc   Ú
local_dataÚeÚall_dataÚall_resultsÚnode_failuresrX   s
             r#   Úreduce_scatterz_DistWrapper.reduce_scatter¯   s!  € ð 	,Ù ›ˆJð ×%Ñ% jÓ1ˆØEIˆØ×ÒØÐ'Ð'Ð'Ü-¨hÓ7ˆMä�=Ó! QÒ&ðBä"&ÜœU¤1Ô&9Ð#9Ñ:Ñ;Ù"¤4¬¬Q©°Ó#:Ó;ó#�Kô �=Ó! AÒ%ä'¨¨mÓ<ðà×'Ñ'Ó)ñ*�ð ×$Ñ$ [Ó1ˆÜ�fÔ1Ô2ØˆLØˆøô7 ò 	,Ü(¨Ó+�Jûð	,ûô  %ò BÜ/>¸qÓ/A�M $§)¡)Ö,ûðBús/   ‚C Á?C7 Ã	C4ÃC/Ã/C4Ã7	D"Ä DÄD"c                 óþ  — 	  |«       }| j                  |«      }d}| j                  rU|€J ‚t	        |«      }t        |«      dk(  r	  |t        t        t           |«      «      }t        |«      dkD  rt        ||«      }| j                  |«      }	t        |	t        «      r|	‚t        t        |	«      S # t         $ r}t        |«      }Y d}~ŒÀd}~ww xY w# t         $ r"}t        |«      || j                  <   Y d}~Œ”d}~ww xY w)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.
        Nr   )re   r   rV   rF   r$   r7   r	   r(   r   rE   r   rQ   rf   r   )
rG   ra   rb   rc   rg   rh   ri   rX   rk   Úfinal_results
             r#   Ú
all_reducez_DistWrapper.all_reduceÞ   s÷   € ð 	,Ù ›ˆJð ×%Ñ% jÓ1ˆØ:>ˆØ×ÒØÐ'Ð'Ð'Ü-¨hÓ7ˆMÜ�=Ó! QÒ&ðBÙ'¬¬T´!©W°hÓ(?Ó@�Fô �=Ó! AÒ%Ü,¨T°=ÓA�à×,Ñ,¨VÓ4ˆÜ�lÔ$7Ô8ØÐÜ”A�|Ó$Ð$øô) ò 	,Ü(¨Ó+�Jûð	,ûô %ò BÜ/>¸qÓ/A�M $§)¡)Ö,ûðBús/   ‚B0 ÁC Â0	CÂ9C	Ã	CÃ	C<ÃC7Ã7C<c                 óî   — 	  |«       }| j                  |«      }t        |«      }t	        |«      dkD  rt        ||«      ‚t        t        t           |«      S # t         $ r}t        |«      }Y d}~Œfd}~ww xY w)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   )	re   r   r,   r$   r7   r   r	   r(   r   )rG   ra   rb   rX   rh   rj   rk   s          r#   Ú
all_gatherz_DistWrapper.all_gather  sq   € ð	(Ù“YˆFð ×,Ñ,¨VÓ4ˆä)¨+Ó6ˆÜˆ}Ó Ò!Ü% d¨MÓ:Ð:Ü”Dœ‘G˜[Ó)Ð)øô ò 	(Ü$ QÓ'�Fûð	(ús   ‚A Á	A4ÁA/Á/A4c                 ó  — d}| j                   r	  |«       }| j                  |«      }t        |t        «      r|‚t        t        |«      S # t        $ r+}t        || j                  t	        |«      i«      }Y d}~Œbd}~ww xY w)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)	rF   re   r   rE   r   rQ   rf   r	   r   )rG   ra   rb   rX   rh   rn   s         r#   Ú	broadcastz_DistWrapper.broadcast  s}   € ð ;?ˆØ×ÒðTÙ ›�ð ×,Ñ,¨VÓ4ˆÜ�lÔ$7Ô8ØÐÜ”A�|Ó$Ð$øô !ò TÜ,¨T°D·I±I¼ÈqÓ?QÐ3RÓS•ûðTús   �A
 Á
	A>Á!A9Á9A>N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r*   ÚProcessGroupÚboolr   rH   rD   r+   r   rQ   r(   rV   r,   r`   Ústrr   r   rl   ro   rq   rs   © r3   r#   r>   r>   K   s’  „ ñð'à˜×)Ñ)Ñ*ð'ð ð'ð ó	'ð,˜#ó ð ó ð
	' x°¡{ð 	'°qó 	'ð Að ¨(°4¸±7Ñ*;ó ð(
¨ð 
¨d°1©gó 
ð¨(°4¸±7Ñ*;ð Àó ð"-àð-ð ˜"˜a˜%‘ð-ð ˜d 1™g˜Y¨¨Q©Ð/Ñ0ð	-ð
 
ó-ð^&%àð&%ð ˜"˜a˜%‘ð&%ð ˜d 1™g˜Y¨˜\Ñ*ð	&%ð
 
ó&%ðP*àð*ð ˜"˜a˜%‘ð*ð 
ˆa‰ó	*ð2%àð%ð ˜"˜a˜%‘ð%ð 
ô	%r3   r>   ÚtensorÚindexc                 ó&  — |j                   €t        d|j                  › d�«      ‚| j                  «       }|j                  �jt        |«      |j                  kD  rRt        j                  ||j                     j                  j                  «      |j                   k(  r||j                     S |D ]<  }t        j                  |j                  j                  «      |j                   k(  sŒ:|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}   r7   ÚtorchÚSizeÚmetadataÚshard_offsets)r|   r}   ÚshardsÚshards       r#   Ú_find_shardrŠ   7  sæ   € Ø‡|�|ÐÜØ˜UŸY™Y˜KÐ'\Ð]ó
ð 	
ð × Ñ Ó"€Fà‡{�{Ðä�‹K˜%Ÿ+™+Ò%Ü—
‘
˜6 %§+¡+Ñ.×7Ñ7×EÑEÓFÈ%Ï,É,ÒVà˜%Ÿ+™+Ñ&Ð&àò ˆÜ�:‰:�e—n‘n×2Ñ2Ó3°u·|±|ÓCØŠLðô Ð0°·±°¸lÈ5Ï9É9È+ÐUVÐWÓ
XÐXr3   c                 ón  — t        | d«      r| j                  |«      S t        | t        «      rt	        | |«      j
                  S |j                  �e|j                  t        j                  dgt        | j                  «       «      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Œ   rf   r   rŠ   r|   r€   r„   r…   r7   Úsizer�   r‚   )r|   r}   s     r#   r   r   L  s¥   € ÜˆvÐ-Ô.à×*Ñ*¨5Ó1Ð1Ü�&œ-Ô(Ü˜6 5Ó)×0Ñ0Ð0Ø‡|�|Ðà�<‰<œ5Ÿ:™: q c¬C°·±³Ó,>Ñ&>Ó?Ò?ØˆMÜØ�U—Y‘Y�KÐPÐQV×Q]ÑQ]ÐP^Ð^_Ð`ó
ð 	
ð €Mr3   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�   rf   r„   ÚTensorr   r€   )r4   r}   rS   s      r#   r   r   \  sŽ   € Ø‡y�y˜
Ñ"ÜÐ0°·±°¸1Ð=Ó>Ð>Ø
�U—Y‘YÑ
€Cä�#”u—|‘|Ô$Ü   eÓ,Ð,Ø	�‰Ð	!ÜØ�U—Y‘Y�KÐPÐQV×Q]ÑQ]ÐP^Ð^_Ð`ó
ð 	
ð €Jr3   ÚaÚbc                 óR   — t        | |«      D ��cg c]
  \  }}||z   ‘Œ c}}S c c}}w r   ©Úzip©r“   r”   Úi_aÚi_bs       r#   Ú_element_wise_addr›   j  ó$   € Ü&)¨!¨Q£i×0™(˜#˜sˆC�#‹IÓ0Ð0ùÓ0ó   �#c                 óR   — t        | |«      D ��cg c]
  \  }}||z
  ‘Œ c}}S c c}}w r   r–   r˜   s       r#   Ú_element_wise_subrŸ   n  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€   r7   c                 ón   •— t         ‰| �  «        || _        || _        || _        | j                  d«       y ©Nr   )ÚsuperrH   r€   r7   r¢   Úseek)rG   r¢   r€   r7   Ú	__class__s       €r#   rH   z_ReaderView.__init__s  s/   ø€ Ü‰ÑÔØˆŒØˆŒØ&ˆÔØ�	‰	�!�r3   Úwhencer   c                óþ   — |t         j                  k(  r| j                  |z   }n?|t         j                  k(  r,t         j                  }| j                  | j                  z   |z
  }| j
                  j                  ||«      S r   )ÚosÚSEEK_SETr€   ÚSEEK_ENDr7   r¢   r¦   )rG   r€   r¨   s      r#   r¦   z_ReaderView.seekz  sa   € Ø”R—[‘[Ò Ø—[‘[ 6Ñ)‰FØ”r—{‘{Ò"Ü—[‘[ˆFØ—k‘k D§H¡HÑ,°Ñ6ˆFØ×Ñ×$Ñ$ V¨VÓ4Ð4r3   c                 óP   — | j                   j                  «       | j                  z
  S r   )r¢   Útellr€   rJ   s    r#   r®   z_ReaderView.tell‚  s    € Ø×Ñ×$Ñ$Ó&¨¯©Ñ4Ð4r3   c                 ó6   — | j                   j                  «       S r   )r¢   ÚreadablerJ   s    r#   r°   z_ReaderView.readable…  ó   € Ø×Ñ×(Ñ(Ó*Ð*r3   c                 ó6   — | j                   j                  «       S r   )r¢   ÚseekablerJ   s    r#   r³   z_ReaderView.seekableˆ  r±   r3   c                 ó¶   — | j                   | j                  «       z
  }|dk(  ryt        |«      |kD  rt        |«      d | }| j                  j	                  |«      S r¤   )r7   r®   Ú
memoryviewr¢   Úreadinto)rG   r”   Úmax_sizes      r#   r¶   z_ReaderView.readinto‹  sS   € Ø—8‘8˜dŸi™i›kÑ)ˆØ�qŠ=ØÜˆq‹6�HÒÜ˜1“˜i˜xÐ(ˆAØ×Ñ×(Ñ(¨Ó+Ð+r3   c                 óŠ   — | j                   | j                  «       z
  }|dk(  s||kD  r|}| j                  j                  |«      S )Néÿÿÿÿ)r7   r®   r¢   Úread)rG   r�   r·   s      r#   rº   z_ReaderView.read“  s?   € Ø—8‘8˜dŸi™i›kÑ)ˆØ�2Š:˜ šØˆDØ×Ñ×$Ñ$ TÓ*Ð*r3   )r¹   )rt   ru   rv   ÚioÚIOBaser   rH   rª   r«   r¦   r®   ry   r°   r³   r¶   rº   Ú__classcell__)r§   s   @r#   r¡   r¡   r  sr   ø„ ð B§I¡Ið °sð Àõ ð /1¯k©kñ 5˜3ð 5¨ð 5Àó 5ð5�có 5ð+˜$ó +ð+˜$ó +ò,÷+r3   r¡   Úfiler€   Úlengthc                 ó   — t        | ||«      S r   )r¡   )r¾   r€   r¿   s      r#   Ú_create_file_viewrÁ   š  s   € ä�t˜V VÓ,Ð,r3   Údevice_typeÚ	device_idc                 ó   — | dk(  ry| › d|› �S )zDevice info normalization.Úcpuú:r{   )rÂ   rÃ   s     r#   Ú_normalize_device_inforÇ   Ÿ  s   € à�eÒØØˆ]˜!˜I˜;Ð'Ð'r3   Fc               #   óÀ  K  — t         r�t        j                  «       rt        j                  «       dk(  ret	        j
                  «       } | j                  «        	 d –— | j                  «        t        | «      }|j                  d«      j                  d«       y d –— y # | j                  «        t        | «      }|j                  d«      j                  d«       w xY w­w)Nr   Útimeé
   )ÚENABLE_PROFILEr*   Úis_availablerD   ÚcProfileÚProfileÚenableÚdisabler   Ú
sort_statsÚprint_stats)ÚprofilerÚstatss     r#   Ú_profilerÕ   ª  s¥   è ø€ õ œt×0Ñ0Ô2´d·m±m³oÈÒ6JÜ×#Ñ#Ó%ˆØ�‰Ôð	5Ûà×ÑÔÜ˜(“OˆEØ×Ñ˜VÓ$×0Ñ0°Õ4äøð	 ×ÑÔÜ˜(“OˆEØ×Ñ˜VÓ$×0Ñ0°Õ4üs   ‚ACÁB ÁACÂ=CÃCc                 ó<   ‡ — t        ‰ «      dt        fˆ fd„«       }|S )Nr   c                  óÜ  •— t        | «      dk(  rÑt        j                  d‰j                  › d�«       t	        j
                  ‰«      }|j                  j                  «       D �cg c](  }|j                  |j                  k(  sŒ|j                  ‘Œ* }}d|v rd|vs	J | |f«       ‚| d   |d<   n(d|v rd|vs	J | |f«       ‚| d   |d<   nt        d|› �«      ‚ ‰| d   fi |¤ŽS  ‰| i |¤ŽS c c}w )	Né   zThe argument order of zG has been changed. Please check the document to avoid future breakages.Ústorage_writerr   Ústorage_readerzUnexpected kwonlyargs = r   )r7   ÚwarningsÚwarnrt   ÚinspectÚ	signatureÚ
parametersÚvaluesÚkindÚKEYWORD_ONLYÚnameÚRuntimeError)ÚargsÚkwargsÚsigÚpÚ
kwonlyargsÚfuncs        €r#   Ú
inner_funcz!_api_bc_check.<locals>.inner_func¼  s  ø€ äˆt‹9˜Š>Ü�M‰MØ(¨¯©¨ð 8Gð Gôô ×#Ñ# DÓ)ˆCà #§¡× 5Ñ 5Ó 7öØ¸1¿6¹6ÀQÇ^Á^Ó;S�—“ðˆJð ð   :Ñ-Ø'¨vÑ5ÐE¸¸f°~ÓEÐ5Ø+/°©7�Ð'Ò(Ø! ZÑ/Ø'¨vÑ5ÐE¸¸f°~ÓEÐ5Ø+/°©7�Ð'Ò(ä"Ð%=¸j¸\Ð#JÓKÐKÙ˜˜Q™Ñ* 6Ñ*Ð*á˜Ð( Ñ(Ð(ùòs   Á$C)ÂC))r   r   )rê   rë   s   ` r#   Ú_api_bc_checkrì   »  s(   ø€ Ü
ˆ4ƒ[ð)¤sô )ó ð)ð, Ðr3   r   )?rÍ   rÝ   r»   r.   rª   rÛ   Úcollections.abcr   Ú
contextlibr   Ú	functoolsr   Úpstatsr   Útypingr   r   r	   r
   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$   rz   rx   r-   r2   r<   r>   rŠ   r’   r   r   r›   rŸ   r¼   r¡   rÁ   rÇ   rË   rÕ   rì   r{   r3   r#   ú<module>rø      s-  ðã Û Û 	Û Û 	Û Ý $Ý %Ý Ý ß @× @ã Ý  Ý AÝ ?÷ó ÷ 5ð Ð 8Ð
9€áˆCƒL€ÙˆCƒL€ðØ�%˜Ð,Ð,Ñ-Ñ.ðà	ˆ#Ð Ð
 Ñ!óð FJñ=Ø�S˜#�X‘ð=Ø'/°×0AÑ0AÑ'Bð=àˆ�Xó=ð NRñ
Ø�S˜#�X‘ð
Ø/7¸×8IÑ8IÑ/Jð
à	ó
÷*i%ñ i%ðXY˜ð Y¨mð YÀó Yð*˜eŸl™lð °=ð ÀUÇ\Á\ó ð  ð ¸}ð ÐQTó ð1˜ #™ð 1¨8°C©=ð 1¸TÀ#¹Yó 1ð1˜ #™ð 1¨8°C©=ð 1¸TÀ#¹Yó 1ô%+�"—)‘)ô %+ðP-˜BŸI™Ið -¨sð -¸Cð -ÀBÇIÁIó -ð
(¨ð (¸ð (Àó (ð €ð ñó ðó r3   