§
    ŠŠtj  ã            
       ó  — d dl mZmZmZmZ d dlmZmZ d dlm	Z	 d dl
Z
d dlmZ d dlmZ d dlmZ eez  Zeedf         Z ed	¦  «        ZeZeeef         Zg d
¢Zdede	e
j                 fd„Zefdedeeegdf         deegef         ddfd„Zefdedeeegdf         deegef         ddfd„Zdedededdfd„Z 	 ddedededz  dedz  fd„Z!de"fdededeegdf         ddfd„Z#e"fdededeegdf         ddfd„Z$dS )é    )ÚCallableÚ
CollectionÚMappingÚMutableMapping)ÚcastÚTypeVar)ÚTypeIsN)ÚShardedTensor)ÚSTATE_DICT_TYPE)ÚDTensor.ÚT)Útraverse_state_dictÚset_elementÚget_elementÚprint_tensorÚvalueÚreturnc                 ó6   — t          | t          j        ¦  «        S ©N)Ú
isinstanceÚtorchÚTensor)r   s    úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributed/checkpoint/_traverse.pyÚ_keep_visiting_tensorsr      s   € Ý�e�Uœ\Ñ*Ô*Ð*ó    Ú
state_dictÚvisitorÚkeep_traversingc                 óÔ   ‡‡‡‡— dt           dt          fˆˆfd„Šdt          dt           ddfˆˆˆfd„Š|                      ¦   «         D ]\  }} ‰t	          |¦  «        f|¦  «         Œ ‹‹dS )a  
    Invoke ``visitor`` for each value recursively in ``state_dict``.
    Mapping will be traversed and ``visitor`` will be applied to the leaf elements.
    ``visitor`` will only be applied to elements in a list or a tuple, if the
    container contains tensors or mappings.
    r   r   c                 óè   •— t          | t          ¦  «        rdS t          | t          ¦  «        r| }ndS |D ]<}t          |t          t          f¦  «        r ‰|¦  «        s dS ‰� ‰|¦  «        r dS Œ=dS )NFT)r   r   Úlist©r   ÚvaluesÚentryÚ_is_terminalr   s      €€r   r%   z)traverse_state_dict.<locals>._is_terminal)   s—   ø€ å�e�WÑ%Ô%ð 	Ø�5Ý˜�tÑ$Ô$ð 	ØˆFˆFà�4àð 	ð 	ˆEÝ˜%¥'­4 Ñ1Ô1ð ¸,¸,ÀuÑ:MÔ:Mð Ø�u�uØÐ*¨¨¸uÑ/EÔ/EÐ*Ø�u�uøØˆtr   ÚpathNc                 ó\  •— t          |t          ¦  «        r9|                     ¦   «         D ]"\  }} ‰| t          |¦  «        fz   |¦  «         Œ#d S  ‰|¦  «        r ‰| |¦  «         d S t          |t          t
          f¦  «        r%t          |¦  «        D ]\  }} ‰| |fz   |¦  «         Œd S d S r   )r   r   ÚitemsÚstrr!   ÚtupleÚ	enumerate©r&   r   ÚkÚvÚir%   Ú_traverse_objr   s        €€€r   r0   z*traverse_state_dict.<locals>._traverse_obj9   sæ   ø€ Ý�e�WÑ%Ô%ð 	.ØŸš™œð 3ð 3‘��1Ø�˜d¥c¨!¡f¤f YÑ.°Ñ2Ô2Ð2Ð2ð3ð 3àˆ\˜%Ñ Ô ð 	.ØˆG�D˜%Ñ Ô Ð Ð Ð Ý˜¥¥e˜}Ñ-Ô-ð 	.Ý! %Ñ(Ô(ð .ð .‘��1Ø�˜d a T™k¨1Ñ-Ô-Ð-Ð-ð	.ð 	.ð.ð .r   ©ÚSTATE_DICT_ITEMÚboolÚOBJ_PATHr(   r)   ©r   r   r   Úkeyr   r%   r0   s    ``  @@r   r   r      s½   øøøø€ ð�Oð µð ð ð ð ð ð ð ð .�Hð .­_ð .Àð .ð .ð .ð .ð .ð .ð .ð .ð !×&Ò&Ñ(Ô(ð *ð *‰
ˆˆUØˆ•s˜3‘x”x�k 5Ñ)Ô)Ð)Ð)ð 	�|�|�|r   c                 óÔ   ‡‡‡‡— dt           dt          fˆˆfd„Šdt          dt           ddfˆˆˆfd„Š|                      ¦   «         D ]\  }} ‰t	          |¦  «        f|¦  «         Œ ‹‹dS )a8  
    Traversal is short-circuited when it finds a collection for which ``keep_visiting_tensors`` evaluates
    to false for all elements.
    By default, all collections with at least one ``torch.Tensor`` element are traversed.
    Visitor takes a path argument that is a tuple of the keys used to reach it.
    r   r   c                 ó  •— t          | t          ¦  «        r|                      ¦   «         }nt          | t          ¦  «        r| }ndS |D ]<}t          |t          t          f¦  «        r ‰|¦  «        s dS ‰� ‰|¦  «        r dS Œ=dS )NTF)r   r   r#   r!   r"   s      €€r   r%   z/traverse_state_dict_v_2_3.<locals>._is_terminalW   s¡   ø€ å�e�WÑ%Ô%ð 	Ø—\’\‘^”^ˆFˆFÝ˜�tÑ$Ô$ð 	ØˆFˆFà�4àð 	ð 	ˆEÝ˜%¥'­4 Ñ1Ô1ð ¸,¸,ÀuÑ:MÔ:Mð Ø�u�uØÐ*¨¨¸uÑ/EÔ/EÐ*Ø�u�uøØˆtr   r&   Nc                 óN  •—  ‰|¦  «        r ‰| |¦  «         d S t          |t          ¦  «        r9|                     ¦   «         D ]"\  }} ‰| t          |¦  «        fz   |¦  «         Œ#d S t          |t          ¦  «        r%t          |¦  «        D ]\  }} ‰| |fz   |¦  «         Œd S d S r   )r   r   r(   r)   r!   r+   r,   s        €€€r   r0   z0traverse_state_dict_v_2_3.<locals>._traverse_objg   sâ   ø€ Øˆ<˜ÑÔð 	.ØˆG�D˜%Ñ Ô Ð Ð Ð Ý˜�wÑ'Ô'ð 	.ØŸš™œð 3ð 3‘��1Ø�˜d¥c¨!¡f¤f YÑ.°Ñ2Ô2Ð2Ð2ð3ð 3å˜�tÑ$Ô$ð 	.Ý! %Ñ(Ô(ð .ð .‘��1Ø�˜d a T™k¨1Ñ-Ô-Ð-Ð-ð	.ð 	.ð.ð .r   r1   r5   s    ``  @@r   Útraverse_state_dict_v_2_3r:   J   s½   øøøø€ ð�Oð µð ð ð ð ð ð ð ð .�Hð .­_ð .Àð .ð .ð .ð .ð .ð .ð .ð .ð !×&Ò&Ñ(Ô(ð *ð *‰
ˆˆUØˆ•s˜3‘x”x�k 5Ñ)Ô)Ð)Ð)ð 	�|�|�|r   Ú	root_dictr&   c                 óˆ  — t          t          | ¦  «        }dt          t                   dt          ddfd„}t          dt          |¦  «        ¦  «        D ]¢}||dz
           }||         }t          t          t          |¦  «        t          u ri ng ¦  «        }t          |t          ¦  «        r*t          t          |                     ||¦  «        ¦  «        }Œ� |||¦  «         ||         €|||<   ||         }Œ£|d         }t          |¦  «        t          u r* |t          t          t                   |¦  «        |¦  «         |||<   dS )z>Set ``value`` in ``root_dict`` along the ``path`` object path.ÚlstÚidxr   Nc                 ó€   — t          | ¦  «        |k    r*|                      d ¦  «         t          | ¦  «        |k    °(d S d S r   )ÚlenÚappend)r=   r>   s     r   Úextend_listz set_element.<locals>.extend_list~   s<   € Ý�#‰hŒh˜#ŠoˆoØ�JŠJ�tÑÔÐõ �#‰hŒh˜#Šoˆoˆoˆoˆoˆor   é   éÿÿÿÿ)r   ÚCONTAINER_TYPEr!   r2   ÚintÚranger@   Útyper)   r   r   Ú
setdefault)	r;   r&   r   Úcur_containerrB   r/   Úprev_keyr6   Údef_vals	            r   r   r   x   sS  € õ �¨Ñ3Ô3€Mð��oÔ.ð µSð ¸Tð ð ð ð õ �1•c˜$‘i”iÑ Ô ð 4ð 4ˆØ˜˜A™”;ˆØ�1ŒgˆÝ•­d°3©i¬i½3Ð.>Ð.>¨¨ÀBÑGÔGˆå�m¥WÑ-Ô-ð 		4Ý Ý × 8Ò 8¸À7Ñ KÔ Kñô ˆMˆMð
 ˆK˜ xÑ0Ô0Ð0Ø˜XÔ&Ð.Ø*1�˜hÑ'Ø)¨(Ô3ˆMˆMà
ˆrŒ(€CÝˆC�y„y•CÐÐØˆ•D��oÔ.°Ñ>Ô>ÀÑDÔDÐDà€M�#ÑÐÐr   Údefault_valuec                 ó\  — t          t          | ¦  «        }|D ]}}t          |¦  «        t          u r-t	          |t
          ¦  «        rt          |¦  «        |k     r|c S nt	          |t          ¦  «        r||vr|c S t          t          ||         ¦  «        }Œ~t          t          dz  |¦  «        S )z[Retrieve the value at ``path``from ``root_dict``, returning ``default_value`` if not found.N)	r   rE   rH   rF   r   r!   r@   r   r   )r;   r&   rM   Ú	cur_valueÚparts        r   r   r   ™   s¸   € õ •^ YÑ/Ô/€IØð :ð :ˆÝ�‰:Œ:�ÐÐÝ˜i­Ñ.Ô.ð %µ#°i±.´.À4Ò2GÐ2GØ$Ð$Ð$Ð$ð 3Hå˜I¥wÑ/Ô/ð 	!°4¸yÐ3HÐ3HØ Ð Ð Ð å�¨°4¬Ñ9Ô9ˆ	ˆ	Ý•�D‘˜)Ñ$Ô$Ð$r   Ú ÚprefixÚ	print_func                 óF  — t          | ¦  «        t          u r_ ||› d|                      ¦   «         › �¦  «         |                      ¦   «         D ]&}t	          |j        |j        j        › d�|¬¦  «         Œ'd S t          | ¦  «        t          u r: ||› d|                      ¦   «         › �¦  «         t	          | j	        |¬¦  «         d S t          | t          j        ¦  «        r$ ||› d|                      ¦   «         › �¦  «         d S  ||› dt          | ¦  «        › �¦  «         d S )Nz ShardedTensor size: ú )rS   z DistributedTensor size: z Tensor size: z Type: )rH   r
   ÚsizeÚlocal_shardsÚ_print_nestedÚtensorÚmetadataÚshard_offsetsr   Ú_local_tensorr   r   r   )r   rR   rS   Úshards       r   rX   rX   «   sd  € õ
 ˆE�{„{•mÐ#Ð#Øˆ	�VÐ@Ð@°%·*²*±,´,Ð@Ð@ÑAÔAÐAØ×'Ò'Ñ)Ô)ð 	ð 	ˆEÝØ”Ø”>Ô/Ð2Ð2Ð2Ø#ðñ ô ð ð ð	ð 	õ 
ˆe‰Œ�Ð	!Ð	!Øˆ	�VÐDÐD°e·j²j±l´lÐDÐDÑEÔEÐEåØÔØð	
ñ 	
ô 	
ð 	
ð 	
ð 	
õ 
�E�5œ<Ñ	(Ô	(ð 3Øˆ	�VÐ9Ð9¨5¯:ª:©<¬<Ð9Ð9Ñ:Ô:Ð:Ð:Ð:àˆ	�VÐ1Ð1¥D¨¡K¤KÐ1Ð1Ñ2Ô2Ð2Ð2Ð2r   c                 óD   — t          |t          | ¦  «        |¬¦  «         dS )zØ
    Use this callback with traverse_state_dict to print its content.

    By default the content is printed using the builtin ``print`` but this can
    be changed by passing a different ``print_fun`` callable.
    )rR   rS   N)rX   r)   )r&   r   rS   s      r   r   r   Å   s%   € õ �%¥ D¡	¤	°YÐ?Ñ?Ô?Ð?Ð?Ð?r   r   )%Úcollections.abcr   r   r   r   Útypingr   r   Útyping_extensionsr	   r   Ú+torch.distributed._shard.sharded_tensor.apir
   Ú%torch.distributed.checkpoint.metadatar   Útorch.distributed.tensorr   r)   rF   Ú	PATH_ITEMr*   r4   r   Úobjectr2   rE   Ú__all__r   r   r3   r   r:   r   r   ÚprintrX   r   © r   r   ú<module>rj      sô  ðð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø $Ð $Ð $Ð $Ð $Ð $à €€€Ø EÐ EÐ EÐ EÐ EÐ EØ AÐ AÐ AÐ AÐ AÐ AØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ð �#‰I€	Ø�˜C�Ô €Ø€GˆC�L„L€à€Ø 	¨?Ð :Ô;€à
OÐ
OÐ
O€ð+ /ð +°f¸U¼\Ô6Jð +ð +ð +ð +ð :Pð*$ð *$Øð*$à�x Ð1°4Ð7Ô8ð*$ð ˜Ð/°Ð5Ô6ð*$ð 
ð	*$ð *$ð *$ð *$ð` :Pð+$ð +$Øð+$à�x Ð1°4Ð7Ô8ð+$ð ˜Ð/°Ð5Ô6ð+$ð 
ð	+$ð +$ð +$ð +$ð\ØðØ&.ðØ7Fðà	ðð ð ð ðH #ð%ð %Øð%à
ð%ð �t‘8ð%ð ˆ�Xð	%ð %ð %ð %ð( Ø',ð3ð 3Øð3àð3ð ˜˜˜t˜Ô$ð3ð 
ð	3ð 3ð 3ð 3ð: (-ð@ð @Ø
ð@àð@ð ˜˜˜t˜Ô$ð@ð 
ð	@ð @ð @ð @ð @ð @r   