+
    –°³j2O  ã                   ó  a € R7 tF0 t ^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIH	t	H
t
 ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^R
IHtHtHtHtHtHtH t  ^RI!H"t"H#t#H$t$H%t%H&t&H't' ^RI(H)t)H*t*H+t+H,t, ^RI-H.t.H/t/ R.t0] ^ k R R lt1R R lt2R R lt3R R lt4R R lt5R R lt6R R lt7R R lt8R R  lt9R! R" lt:R# R$ lt;R% t<R& t=R' R( lt>R) R* lt?R+ R, lt@R- R. ltAR/ R0 ltBR1 R2 ltCR3 R4 ltDR5 R6 ltER# )8é    N)Úbisect_rightÚinsort)ÚCallable)ÚAnyÚcast)Ú_get_device_module)ÚShardMetadata)ÚShardedTensor©ÚDTensor)Ú%compute_local_shape_and_global_offset)ÚBytesStorageMetadataÚChunkStorageMetadataÚMetadataIndexÚSTATE_DICT_TYPEÚSTORAGE_TYPESÚTensorPropertiesÚTensorStorageMetadata)ÚLoadItemTypeÚReadItemÚSavePlanÚTensorWriteDataÚ	WriteItemÚWriteItemType)Ú$_copy_checkpointable_tensor_metadataÚ!_get_checkpointable_tensor_chunksÚ_is_checkpointable_tensorÚCheckpointableTensor)Ú"_check_shard_metadata_pair_overlapÚ+_shards_get_overlap_region_wrt_saved_tensorÚ create_read_items_for_chunk_listc                ó<   € V ^8„  d   QhR\         R\         R\        /# )é   ÚplanÚ
other_planÚreturn)r   Úbool)Úformats   "Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributed/checkpoint/planner_helpers.pyÚ__annotate__r*   0   s!   € ÷ >ñ >œhð >´Hð >Äñ >ó    c                óö  € V P                   VP                   8w  d   R# \        V P                  4      \        VP                  4      8w  d   R# \        V P                  VP                  4       EF‡  w  r#VP                  VP                  8w  d    R# VP
                  pVP
                  pVP                  VP                  8w  g7   VP                  VP                  8w  g   VP
                  VP
                  8w  d    R# VP                  pVP                  pV'       d	   V'       d   V'       g   V'       d    R# V'       g   KÕ  V'       g   Kß  VP                  VP                  8w  d    R# VP                  pVP                  p	V'       d	   V	'       d   V'       g   V	'       d    R# V'       g   EKC  V	'       g   EKN  VP                  V	P                  8w  g   VP                  V	P                  8w  g   EK‡   R# 	  R# )zì
Compare the two Save plans and return True if they are equal.

Args:
    plan (SavePlan): First SavePlan to compare.
    other_plan (SavePlan): Second SavePlan to compare.

Returns:
   True if the two plans are equal, False otherwise.
FT)ÚusableÚlenÚitemsÚzipÚtypeÚindexÚfqnÚoffsetÚtensor_dataÚsizeÚchunkÚoffsetsÚsizes)
r$   r%   Ú	plan_itemÚother_plan_itemÚplan_metadata_indexÚother_plan_metadata_indexr5   Úother_tensor_datar7   Úother_chunks
   &&        r)   Ú_compare_save_plansr@   0   sq  € ð ‡{�{�j×'Ñ'Ô'Ùô ˆ4�:‰:ƒœ#˜j×.Ñ.Ó/Ô/Ùô '*¨$¯*©*°j×6FÑ6F×&GÑ"ˆ	à�>‰>˜_×1Ñ1Ô1Úà'Ÿo™oÐØ$3×$9Ñ$9Ð!ð  ×#Ñ#Ð'@×'DÑ'DÔDØ"×)Ñ)Ð-F×-MÑ-MÔMØ"×(Ñ(Ð,E×,KÑ,KÔKâð  ×+Ñ+ˆØ+×7Ñ7Ðß× 1ß× 1âç‰;×,Ñ,à×ÑÐ#4×#9Ñ#9Ô9Úð  ×%Ñ%ˆEØ+×1Ñ1ˆKßŸk·5¿[Ú÷ ŠuŸšà—M‘M [×%8Ñ%8Ô8Ø—{‘{ k×&7Ñ&7×7â ñS 'HñV r+   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r#   Údelta_plansr&   )Úlistr   r'   )r(   s   "r)   r*   r*   q   s"   € ÷ 	Oñ 	O¤t¬H¥~ð 	O¼$ñ 	Or+   c                ój   € \         ;QJ d    R V  4       F  '       g   K   R# 	  R# ! R V  4       4      # )zÎ
Check if any delta plan is usable, indicating the plan has changed.

Args:
    delta_plans (List[SavePlan]): A list of delta plans to check.
Returns:
    True if any delta plan is usable, False otherwise.
c              3   óL   "  € T F  q;'       d    VP                   x € K  	  R # 5i©N)r-   )Ú.0Ú
delta_plans   & r)   Ú	<genexpr>Ú(_contains_usable_plan.<locals>.<genexpr>z   s   é € ÐNÁ+°J×/Ð/˜j×/Ñ/Ô/Ã+ùs   ‚$�$TF)Úany)rB   s   &r)   Ú_contains_usable_planrL   q   s-   € ÷ ‹3ÑNÁ+ÓN�3Œ3ÐNŠ3ÐNˆ3ÑNÁ+ÓNÓNÐNr+   c                ó~   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\         \        ,          /# )r#   Úcached_plansrB   r&   )rC   r   )r(   s   "r)   r*   r*   }   s2   € ÷ ñ Ü”x•.ðä”h•ðô 
Œ(…^ñr+   c                ó®   € . p\        W4       FC  w  r4V'       d&   VP                  '       g   VP                  V4       K2  VP                  V4       KE  	  V# )aG  
Merge a list of delta plans into a single plan.

Args:
    cached_plans (List[SavePlan]): A list of cached plans.
    delta_plans (List[SavePlan]): A list of delta plans to merge. It can contain empty plans

Returns:
    A single merged plan. If a delta plan is not usable, use the cached plan. Otherwise, use the delta plan.
)r0   r-   Úappend)rN   rB   Úmerged_plansÚcached_planrH   s   &&   r)   Ú_merge_delta_local_plansrS   }   sN   € ð €Lä#& |Ö#AÑˆß˜j×/×/Ð/Ø×Ñ Ö,à×Ñ 
Ö+ñ	 $Bð Ðr+   c                óD   € V ^8„  d   QhR\         P                  R\        /# ©r#   Útensorr&   )ÚtorchÚTensorr   )r(   s   "r)   r*   r*   –   s   € ÷ ñ ¤e§l¡lð Ô7Kñ r+   c           	      óž   € \        \        P                  ! ^ .\        V P	                  4       4      ,          4      V P	                  4       R7      # )r   ©r8   r9   )r   rW   ÚSizer.   r6   )rV   s   &r)   Ú_create_chunk_from_tensorr\   –   s5   € ÜÜ—
’
˜A˜3¤ V§[¡[£]Ó!3Õ3Ó4¸F¿K¹K»Môð r+   c                ó0   € V ^8„  d   QhR\         R\        /# )r#   Úshard_mdr&   )r	   r   )r(   s   "r)   r*   r*   œ   s   € ÷ ñ œ}ð Ô1Eñ r+   c                 ó”   € \        \        P                  ! V P                  4      \        P                  ! V P                  4      R 7      # ©rZ   )r   rW   r[   Úshard_offsetsÚshard_sizes)r^   s   &r)   Ú_chunk_for_shardrc   œ   s3   € ÜÜ—
’
˜8×1Ñ1Ó2Ü�jŠj˜×-Ñ-Ó.ôð r+   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r#   Úsharded_tensorr^   r&   )r
   r	   r   )r(   s   "r)   r*   r*   £   s$   € ÷ ñ Ü!ðÜ-:ðäñr+   c                 ó  € V P                  4       P                  p\        VP                  VP                  VP
                  VP                  VP                  R 7      p\        \        V4      VV P                  4       P                  R7      # ))ÚdtypeÚlayoutÚrequires_gradÚmemory_formatÚ
pin_memory©r7   Ú
propertiesr6   )ÚmetadataÚtensor_propertiesr   rg   rh   ri   rj   rk   r   rc   r6   )re   r^   Úshard_propertiesrm   s   &&  r)   Ú_sharded_tensor_metadatarq   £   s|   € ð &×.Ñ.Ó0×BÑBÐä!Ø×$Ñ$Ø×&Ñ&Ø&×4Ñ4Ø&×4Ñ4Ø#×.Ñ.ô€Jô Ü˜xÓ(ØØ×$Ñ$Ó&×+Ñ+ôð r+   c                ó<   € V ^8„  d   QhR\         R\        R\        /# ©r#   r3   rV   r&   )Ústrr   r   )r(   s   "r)   r*   r*   ·   s!   € ÷ ñ ¬ð ´gð Ä)ñ r+   c                 óŠ  € \        VP                  VP                  VP                  4      w  r#\        P
                  ! V4      \        P
                  ! V4      r2\        \        W4      \        P                  \        \        VVR 7      \        P                  ! VP                  4       4      VP                  4       R7      R7      # )rZ   rl   ©r2   r1   r5   )r   ÚshapeÚdevice_meshÚ
placementsrW   r[   r   r   r   ÚSHARDr   r   r   Úcreate_from_tensorÚto_localr6   )r3   rV   r9   r8   s   &&  r)   Ú_create_write_items_for_dtensorr}   ·   s”   € Ü:Ø�‰�f×(Ñ(¨&×*;Ñ*;ó�N€Eô —Z’Z Ó&¬¯
ª
°7Ó(;ˆ7äÜ˜CÓ)Ü× Ñ Ü#Ü&ØØôô (×:Ò:¸6¿?¹?Ó;LÓMØ—‘“ô
ôð r+   c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r#   r3   re   r^   r&   )rt   r
   r	   r   )r(   s   "r)   r*   r*   Ë   s,   € ÷ ñ Ü	ðÜ+ðÜ7Dðäñr+   c                 óž   € \         P                  ! VP                  4      p\        \	        W4      \
        P                  \        W4      R 7      # )rv   )rW   r[   ra   r   r   r   rz   rq   )r3   re   r^   r8   s   &&& r)   Ú_create_write_item_for_shardr€   Ë   s>   € ô �jŠj˜×/Ñ/Ó0€GÜÜ˜CÓ)Ü× Ñ Ü,¨^ÓFôð r+   c                óP   € V ^8„  d   QhR\         R\        P                  R\        /# rs   )rt   rW   rX   r   )r(   s   "r)   r*   r*   Ö   s%   € ÷ 
ñ 
¤sð 
´E·L±Lð 
ÄYñ 
r+   c                 óB  € \         P                  ! ^ .\        VP                  4       4      ,          4      p\	        \        W4      \        P                  \        \        W!P                  4       R7      \        P                  ! V4      VP                  4       R7      R7      # )r   rZ   rl   rv   )rW   r[   r.   r6   r   r   r   ÚTENSORr   r   r   r{   )r3   rV   r8   s   && r)   Ú_create_write_item_for_tensorr„   Ö   sm   € Ü�jŠj˜!˜œs 6§;¡;£=Ó1Õ1Ó2€GÜÜ˜CÓ)Ü×!Ñ!Ü#Ü&¨w¿k¹k»mÔLÜ'×:Ò:¸6ÓBØ—‘“ô
ôð r+   c                óR   € V ^8„  d   QhR\         R\        R\        \        ,          /# rs   )rt   r   rC   r   )r(   s   "r)   r*   r*   ã   s(   € ÷ ñ Ü	ðÜ*ðä	Œ)…_ñr+   c                 ó�  € \        V\        P                  4      '       g   \        R 4      h\        P
                  ! V4      p\        \        V4      4       UUu. uF_  w  r4\        \        WP                  V4      \        P                  \        VV\        P                  ! VP                  4      R7      R7      NKa  	  upp# u uppi )z0CheckpointableTensor must also be a torch.Tensorrl   rv   )Ú
isinstancerW   rX   Ú	TypeErrorr   r{   Ú	enumerater   r   r   r8   r   rz   r   r[   Úglobal_shape)r3   rV   rm   Úidxr7   s   &&   r)   Ú&_get_checkpointable_tensor_write_itemsrŒ   ã   s§   € ô �fœeŸl™l×+Ò+ÜÐJÓKÐKÜ!×4Ò4°VÓ<€Jô $Ô$EÀfÓ$MÔNôñ O‰JˆCô 	Ü §]¡]°CÓ8Ü×$Ñ$Ü'ØØ%Ü—Z’Z × 3Ñ 3Ó4ô÷	
ñ Oòð ùó s   ÁA%Cc                ó0   € V ^8„  d   QhR\         R\        /# )r#   r3   Úbytes)rt   r   )r(   s   "r)   r*   r*   ÷   s   € ÷ ñ ¬ð ´Cñ r+   c                 óJ   € \        \        V 4      \        P                  R 7      # ))r2   r1   )r   r   r   ÚBYTE_IO)r3   rŽ   s   &&r)   Ú_create_write_item_for_bytesior‘   ÷   s    € ÜÜ˜CÓ Ü×"Ñ"ôð r+   c           
      ó¾   € \        \        P                  V \        P                  ! V34      V\        P                  ! V34      \        P                  ! V34      R 7      # ©)r1   Ú
dest_indexÚdest_offsetsÚstorage_indexÚstorage_offsetsÚlengths)r   r   r�   rW   r[   ©r”   Údest_offsetr–   Ústorage_offsetÚlengths   &&&&&r)   Ú_create_read_item_for_byteior�   þ   sK   € ô Ü×!Ñ!ØÜ—Z’Z  Ó/Ø#ÜŸ
š
 NÐ#4Ó5Ü—
’
˜F˜9Ó%ôð r+   c           
      ó¸   € \        \        P                  V \        P                  ! V4      V\        P                  ! V4      \        P                  ! V4      R 7      # r“   )r   r   rƒ   rW   r[   ©r”   r•   r–   r—   r˜   s   &&&&&r)   Ú_create_read_item_for_tensorr      sD   € ô Ü× Ñ ØÜ—Z’Z Ó-Ø#ÜŸ
š
 ?Ó3Ü—
’
˜7Ó#ôð r+   c          	      ót   € V ^8„  d   QhR\         R\        R\        \        ,          R\        \        ,          /# )r#   r3   Úcheckpoint_mdÚlocal_chunksr&   )rt   r   rC   r   r   )r(   s   "r)   r*   r*     s@   € ÷ xñ xÜ	ðxä(ðxô Ô+Õ,ðxô 
Œ(…^ñ	xr+   c                óþ  a a!a"€ . pVP                   pV'       d	   V'       g   V# \        V^ ,          P                  4      p^ pV^8”  dJ   ^ p\        V4       F8  o \	        V 3R l\
        P                  ! W$4       4       4      pW‡8”  g   K4  TpS pK:  	  V^ 8X  d(   R.\        V4      ,          o"R.\        V4      ,          o!MœV U	u. uFA  p	V	P                  V,          V	P                  V,          V	P                  V,          ,           3NKC  	  up	o"V U	u. uFA  p	V	P                  V,          V	P                  V,          V	P                  V,          ,           3NKC  	  up	o!\        \        \        V4      4      V"3R lR7      p
\        \        \        V4      4      V!3R lR7      p. p^ p\        V
4      pV EF;  pW/,          pS!V,          w  pp\        VVR	34      pV'       d   VRV1 WÞ8  d?   W­,          pVV,          pS"V,          w  ppVV8¼  d   M\        VVV34       V^,          pKD  V F¾  w  ppVV,          p\        VV4      '       g   K#  . p. p. p\        VVR7       F;  w  ppppVP                  V4       VP                  V4       VP                  V4       K=  	  VP                  \        \        V VP                  V4      V\        V VP                  V4      VVR7      4       KÀ  	  EK>  	  V# u up	i u up	i )
a'  
Create a list of ``ReadItem`` based on the checkpoint and local chunks.

This applies the resharding algorithm and computes the reads needed
to satisfy ``local_chunks`` with a checkpoint described by ``checkpoint_md``.

Args:
    fqn (str) : The state_dict FQN to pass to ``ReadItem``.
    checkpoint_md (TensorStorageMetadata): metadata for a given tensor
        from a checkpoint.
    local_chunks (List[ChunkStorageMetadata]): Local chunks that needs to be
        loaded.

Returns:
    A list of ``ReadItem`` that will satisfy all input chunks.
c              3   óz   <"  € T F0  pVP                   S,          VP                  S,          ,           x € K2  	  R # 5irF   rZ   )rG   r7   Údims   & €r)   rI   Ú3create_read_items_for_chunk_list.<locals>.<genexpr>:  s2   øé € ð áH�Eð —‘˜cÕ" U§[¡[°Õ%5×5Ò5ÛHùs   ƒ8;c                 ó$   <€ SV ,          ^ ,          # ©r   © )r‹   Úsaved_boundss   &€r)   Ú<lambda>Ú2create_read_items_for_chunk_list.<locals>.<lambda>S  ó   ø€ ˜ SÕ)¨!Ö,r+   )Úkeyc                 ó$   <€ SV ,          ^ ,          # r©   rª   )r‹   Úlocal_boundss   &€r)   r¬   r­   W  r®   r+   N)Úsaved_shardÚcurrent_shardrŸ   )r   é   éÿÿÿÿ)Úchunksr.   r8   ÚrangeÚmaxÚ	itertoolsÚchainr9   Úsortedr   r   r   r    rP   r    r   )#r3   r¢   r£   Ú
read_itemsÚsaved_chunksÚnum_dimsÚ	sweep_dimÚmax_sizeÚdim_sizeÚcÚsaved_sorted_indicesÚlocal_sorted_indicesÚactive_savedÚ	saved_ptrÚ	num_savedÚ	local_idxÚlocal_chunkÚlocal_startÚ	local_endÚcutoffÚstorage_idxÚstorage_chunkÚsaved_startÚ	saved_endÚ_r—   r•   r˜   Ú_dimÚoffset_for_saved_tensorÚoffset_for_current_tensorrœ   r¦   r±   r«   s#   &&&                             @@@r)   r!   r!     sü  ú€ ð* "$€JØ ×'Ñ'€LçŸ|ØÐä�< •?×*Ñ*Ó+€Hð €IØ�!„|ØˆÜ˜–?ˆCÜô ä&Ÿ_š_¨\ÔHóó ˆHð Ö"Ø#�Ø’	ñ #ð �1„}Ø�x¤# lÓ"3Õ3ˆØ�x¤# lÓ"3Õ3‰ñ "ó
á!�ð �Y‰Y�yÕ! 1§9¡9¨YÕ#7¸!¿'¹'À)Õ:LÕ#LÓMÙ!ñ
ˆñ "ó
á!�ð �Y‰Y�yÕ! 1§9¡9¨YÕ#7¸!¿'¹'À)Õ:LÕ#LÓMÙ!ñ
ˆô
 "ÜŒc�,ÓÓ Ü,ôÐô "ÜŒc�,ÓÓ Ü,ôÐð
 +-€LØ€IÜÐ(Ó)€Iä)ˆ	Ø"Õ-ˆØ!-¨iÕ!8Ñˆ�Yä˜l¨[¸"Ð,=Ó>ˆßØ˜W˜f˜WÐ%àÔ#Ø.Õ9ˆKØ(¨Õ5ˆMØ%1°+Õ%>Ñ"ˆK˜à˜iÔ'Øä�< )¨[Ð!9Ô:Ø˜�NŠIã*‰NˆAˆ{Ø(¨Õ5ˆMÜ5°kÀ=×QÒQÙà ˆOØˆLØˆGô =Ø)¸÷ñØØ'Ø)Øð  ×&Ñ&Ð'>Ô?Ø×#Ñ#Ð$=Ô>Ø—‘˜vÖ&ñð ×ÑÜ,Ü,¨S°+×2EÑ2EÀyÓQØ!-Ü"/Ø˜]×2Ñ2°Kó#ð %4Ø#ôö
ô) +ñ' *ðd ÐùòQ
ùò
s   ÃAK5ÄAK:c                ó0   € V ^8„  d   QhR\         R\        /# ©r#   Ú
state_dictr&   )r   r   )r(   s   "r)   r*   r*   “  s   € ÷ ñ ´?ð Äxñ r+   c                 ób  aa€ . pV P                  4        EF  w  oo\        S\        4      '       d   VP                  \	        SS4      4       K:  \        S\
        4      '       d7   VP                  VV3R  lSP                  4       P                   4       4       K†  \        S4      '       d   VP                  \        SS4      4       K´  \        S\        P                  4      '       d   VP                  \        SS4      4       Kñ  VP                  \        SS4      4       EK  	  \        V4      # )c              3   ó>   <"  € T F  p\        SSV4      x € K  	  R # 5irF   )r€   )rG   r^   r3   Úobjs   & €€r)   rI   Ú5_create_default_metadata_only_plan.<locals>.<genexpr>™  s$   øé € ð á >�Hô -¨S°#°x×@Ð@Û >ùs   ƒ)r/   r‡   r   rP   r}   r
   Úextendrn   Úshards_metadatar   rŒ   rW   rX   r„   r‘   r   )r×   Úrequestsr3   rÚ   s   & @@r)   Ú"_create_default_metadata_only_planrß   “  sÛ   ù€ Ø€HØ×$Ñ$×&‰ˆˆSÜ�cœ7×#Ò#Ø�O‰OÔ;¸CÀÓEÖFÜ˜œ]×+Ò+Ø�O‰Oõ à #§¡£× >Ò >óö ô ' s×+Ò+ð �O‰OÔBÀ3ÈÓLÖMÜ˜œUŸ\™\×*Ò*Ø�O‰OÔ9¸#¸sÓCÖDà�O‰OÔ:¸3ÀÓD×Eñ 'ô  �HÓÐr+   c                óR   € V ^8„  d   QhR\         R\        R\        \        ,          /# )r#   r3   Úobjectr&   )rt   r   rC   r   )r(   s   "r)   r*   r*   ¨  s%   € ÷ =ñ =œSð =¬#ð =´$´yµ/ñ =r+   c                 óŽ  € \        VR 4      '       d   VP                  W4      # \        V\        4      '       d5   VP	                  4        Uu. uF  p\        WVP                  4      NK  	  up# \        V4      '       d   \        W4      # \        V\        P                  4      '       d   \        W4      .# \        W4      .# u upi )Ú__create_write_items__)Úhasattrrã   r‡   r
   Úlocal_shardsr€   rn   r   rŒ   rW   rX   r„   r‘   )r3   rá   Úshards   && r)   Ú_create_write_itemsrç   ¨  s®   € ÜˆvÐ/×0Ò0à×,Ñ,¨SÓ9Ð9Ü	�FœM×	*Ò	*ð  ×,Ñ,Ô.ó
á.�ô )¨°e·n±nÖEÙ.ñ
ð 	
ô 
# 6×	*Ò	*Ü5°cÓBÐBÜ	�FœEŸL™L×	)Ò	)Ü-¨cÓ:Ð;Ð;ä.¨sÓ;Ð<Ð<ùò
s   ÁCc                ó0   € V ^8„  d   QhR\         R\        /# rU   )r   r   )r(   s   "r)   r*   r*   ¹  s   € ÷ ñ ¤wð Ô3Gñ r+   c                 óÌ   € \        V P                  V P                  V P                  4      w  r\        P
                  ! V4      \        P
                  ! V4      r!\        VVR 7      # r`   )r   rw   rx   ry   rW   r[   r   )rV   r9   r8   s   &  r)   Ú_create_chunk_from_dtensorrê   ¹  sS   € Ü:Ø�‰�f×(Ñ(¨&×*;Ñ*;ó�N€Eô —Z’Z Ó&¬¯
ª
°7Ó(;ˆ7ÜØØôð r+   c                óZ   € V ^8„  d   QhR\         P                  R\        \        ,          /# rU   )rW   rX   rC   r   )r(   s   "r)   r*   r*   Ä  s$   € ÷ ñ œuŸ|™|ð ´Ô5IÕ0Jñ r+   c                 ó®  € \        V R 4      '       d   V P                  4       pV# \        V 4      '       d   \        V 4      pV# \	        V \
        4      '       d5   V P                  4        Uu. uF  p\        VP                  4      NK  	  ppV# \	        V \        P                  4      '       d   \        V 4      .pV# \        R\        V 4       24      hu upi )Ú__create_chunk_list__zMUnsupported Type, expecting one of [Tensor, DTensor, ShardedTensor] ,but got )rä   rí   r   r   r‡   r
   rå   rc   rn   rW   rX   r\   Ú
ValueErrorr1   )rV   r£   ræ   s   &  r)   Ú_create_chunk_listrï   Ä  sÛ   € ÜˆvÐ.×/Ò/à×3Ñ3Ó5ˆð Ðô 
# 6×	*Ò	*Ü8¸Ó@ˆð Ðô 
�FœM×	*Ò	*à:@×:MÑ:MÔ:Oó
Ù:O°Ô˜UŸ^™^Ö,Ñ:Oð 	ð 
ð Ðô 
�FœEŸL™L×	)Ò	)Ü1°&Ó9Ð:ˆð Ðô ðÜ˜V›�~ð'ó
ð 	
ùò
s   Á+Cc          	      ó^   € V ^8„  d   QhR\         R\        R\        R\        \        ,          /# )r#   r3   ÚmdrÚ   r&   )rt   r   r   rC   r   )r(   s   "r)   r*   r*   Ù  s,   € ÷ 
ñ 
œCð 
¤]ð 
¼ð 
ÄÄhÅñ 
r+   c                 ó  € \        V\        4      '       g    \        V4      p\        YT4      # \        \        V 4      ^ \        V 4      ^ ^ R7      .#   \         d)   p\        R T  R2R\	        T4       2,           4      ThRp?ii ; i)z Invalid checkpoint metadata for z, z(expected BytesStorageMetadata but found Nr™   )r‡   r   rï   rî   r1   r!   r�   r   )r3   rñ   rÚ   r£   Úexs   &&&  r)   Ú_create_read_itemsrô   Ù  sŸ   € Ü�bÔ.×/Ò/ð	Ü-¨cÓ2ˆLô 0°¸ÓFÐFô )Ü(¨Ó-ØÜ+¨CÓ0Ø Øôð
ð 	
øô ô 	ÜØ2°3°%°rÐ:Ø<¼TÀ"»X¸JÐGõHóð ðûð	ús   ˜A ÁBÁ#B Â Bc                óR   € V ^8„  d   QhR\         \        \        3,          R\        /# rÖ   )Údictrt   r   )r(   s   "r)   r*   r*   ð  s"   € ÷ 6ñ 6¤¤c¬3 h¥ð 6´Cñ 6r+   c                óF   € R R lpR R lpR R lp\        V VVV4       R# )zH
Initializes meta tensor if the meta tensor is DTensor or torch.Tensor.
c                ó$   € V ^8„  d   QhR\         /# ©r#   Úvaluer   )r(   s   "r)   r*   Ú&_init_state_dict.<locals>.__annotate__õ  s   € ÷ ñ œGñ r+   c                 óî  € \        V R R4      pV\        P                  ! R4      8X  dÍ   \        P                  P                  4       P                  p\        \        P                  \        V4      P                  4       4      p\        P                  ! V P                  4       VR7      p\        P                  ! VV P                  V P                  V P!                  4       V P#                  4       R7      pV# V # )ÚdeviceNÚmeta©rý   )rx   ry   rw   Ústride)ÚgetattrrW   rý   ÚdistÚdistributed_c10dÚ_get_pg_default_devicer1   r   r   Úcurrent_deviceÚ
empty_liker|   r   Ú
from_localrx   ry   r6   r   )rú   rý   Údevice_typeÚnew_local_tensorÚdtensors   &    r)   Údtensor_funcÚ&_init_state_dict.<locals>.dtensor_funcõ  s¾   € Ü˜ ¨$Ó/ˆØ”U—\’\ &Ó)Ô)Ü×/Ñ/×FÑFÓH×MÑMˆKÜÜ—‘Ô0°Ó=×LÑLÓNóˆFô  %×/Ò/°·±Ó0@ÈÔPÐô ×(Ò(Ø Ø!×-Ñ-Ø ×+Ñ+Ø—j‘j“lØ—|‘|“~ôˆGð ˆNàˆLr+   c                ó$   € V ^8„  d   QhR\         /# rù   )r   )r(   s   "r)   r*   rû   
  s   € ÷ ñ ¤3ñ r+   c                 ó†   € \        V R R4      pV\        P                  ! R4      8X  d   \        R\	        V 4       R24      hV # )rý   Nrþ   zFound unsupported type z for meta device loading.)r  rW   rý   ÚRuntimeErrorr1   )rú   rý   s   & r)   Úsharded_tensor_funcÚ-_init_state_dict.<locals>.sharded_tensor_func
  sF   € Ü˜ ¨$Ó/ˆØ”U—\’\ &Ó)Ô)ÜØ)¬$¨u«+¨Ð6OÐPóð ð ˆLr+   c                ó8   € V ^8„  d   QhR\         P                  /# rù   )rW   rX   )r(   s   "r)   r*   rû     s   € ÷ ñ œ5Ÿ<™<ñ r+   c                 ór  € \        V R R4      pV\        P                  ! R4      8X  d�   \        P                  P                  4       P                  p\        \        P                  \        V4      P                  4       4      p\        P                  ! WR7      p\        V 4      '       d   \        W4       V# V # )rý   Nrþ   rÿ   )r  rW   rý   r  r  r  r1   r   r   r  r  r   r   )rú   rý   r  rV   s   &   r)   Útensor_funcÚ%_init_state_dict.<locals>.tensor_func  sŒ   € Ü˜ ¨$Ó/ˆØ”U—\’\ &Ó)Ô)Ü×/Ñ/×FÑFÓH×MÑMˆKÜÜ—‘Ô0°Ó=×LÑLÓNóˆFô ×%Ò% eÔ;ˆFÜ(¨×/Ò/Ü4°UÔCØˆMàˆLr+   N)Ú_iterate_state_dict)r×   r  r  r  s   &   r)   Ú_init_state_dictr  ð  s'   € õ
õ*õô ØØØØö	r+   c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r#   Úiter_objectr  r  r  )r   r   )r(   s   "r)   r*   r*   )  s0   € ÷ ,ñ ,Üð,äð,ô "ð,ô ñ	,r+   c           	     ó€  € \        V \        4      '       d	   V! V 4      # \        V \        4      '       d	   V! V 4      # \        V \        P                  4      '       d	   V! V 4      # \        V \
        \        \        \        \        P                  34      '       g   V f   V # \        V \        4      '       d*   V P                  4        F  w  rE\        WQW#4      W&   K  	  V # \        V \        \        34      '       d?   V  Uu. uF  p\        WaW#4      NK  	  pp\        V \        4      '       d   \        V4      pV# R# u upi )aü  
Iterate through the state dict, applying the given functions to each tensor type
and update the state dict in place.

Args:
    iter_object (Any): the target state_dict.
    sharded_tensor_func (Callable): the function to apply to ShardedTensor
    dtensor_func (Callable): the function to apply to DTensor
    tensor_func (Callable): the function to apply to Tensor

# TODO: let state_dict_util._iterate_state_dict() to support in place option
so we don't need to have two versions of _iterate_state_dict.
N)r‡   r   r
   rW   rX   ÚintÚfloatrt   rŽ   ÚioÚBytesIOrö   r/   r  rC   Útuple)r  r  r  r  r¯   rú   ÚvÚrets   &&&&    r)   r  r  )  s  € ô( �+œw×'Ò'Ù˜KÓ(Ð(Ü	�K¤×	/Ò	/Ù" ;Ó/Ð/Ü	�K¤§¡×	.Ò	.Ù˜;Ó'Ð'ä�;¤¤e¬S´%¼¿¹Ð D×EÒEØÒàÐÜ	�K¤×	&Ò	&Ø%×+Ñ+Ö-‰JˆCÜ2ØÐ%8ó ˆKÓñ .ð ÐÜ	�K¤$¬ ×	/Ò	/ñ !ó
á �ô   Ð1DÖRÙ ð 	ð 
ô �k¤5×)Ò)Ü˜“*ˆCØˆ
ñ 
0ùò
s   Ã?D;c                óV   € V ^8„  d   Qh/ ^ \         9   d   \        \        ,          ;R&   # )r#   Ú__all__)Ú__conditional_annotations__rC   rt   )r(   s   "r)   r*   r*      s   € ‡	�	÷V :Ò 9ŒŒc�Ñ 9òW 
r+   )Gr$  r  r¹   Úbisectr   r   Úcollections.abcr   Útypingr   r   rW   Útorch.distributedÚdistributedr  Útorch._utilsr   Ú!torch.distributed._shard.metadatar	   Ú'torch.distributed._shard.sharded_tensorr
   Útorch.distributed.tensorr   Útorch.distributed.tensor._utilsr   rn   r   r   r   r   r   r   r   Úplannerr   r   r   r   r   r   Úprotocolr   r   r   r   Ú
reshardingr   r    r#  r@   rL   rS   r\   rc   rq   r}   r€   r„   rŒ   r‘   r�   r    r!   rß   rç   rê   rï   rô   r  r  r*   )r$  s   @r)   Ú<module>r2     sÏ   øðç 	€	Û ß 'Ý $ß ã Ý  Ý +Ý ;Ý AÝ ,Ý Q÷÷ ñ ÷÷ ÷ó ÷ð 9Ð9€Ó 9õ>õB	Oõõ2õõõ(õ(õ
õõ(ò
ò
õxõvõ*=õ"õõ*
õ.6÷r,r+   