§
    ŠŠtjƒ?  ã                   ó˜  — d dl Z d dl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mZ g d¢Z e j        ddd	g¦  «        Zd
„ ZdZ ej        di ¬¦  «        aet*          _        t*          j        ret*          _        d„ Zd„ Zej        ej        fd„Zd„ Zd„ Zej        ddfd„Z d„ Z!d„ Z"	 dd„Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z( ede e(¦  «         dS )é    N)Úcasté   )ÚapiÚ	constants)Ú_group_membership_managementÚ_update_group_membership)Úbackend_registeredÚregister_backendÚconstruct_rpc_backend_optionsÚinit_backendÚBackendValueÚBackendTyper   Ú%construct_rpc_backend_options_handlerÚinit_backend_handlerc                 ó   — d| j         z   S )NzBackendType.)Úname)Úselfs    úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributed/rpc/backend_registry.pyÚ_backend_type_reprr      s   € Ø˜DœIÑ%Ð%ó    zï
    An enum class of available backends.

    PyTorch ships with a builtin ``BackendType.TENSORPIPE`` backend.
    Additional ones can be registered using the
    :func:`~torch.distributed.rpc.backend_registry.register_backend` function.
r   ©ÚvalueÚnamesc                 ó   — | t           j        v S )zø
    Checks if backend_name is registered as an RPC backend.

    Args:
        backend_name (str): string to identify the RPC backend.
    Returns:
        True if the backend has been registered with ``register_backend``, else
        False.
    )r   Ú__members__)Úbackend_names    r   r	   r	   3   s   € ð �;Ô2Ð2Ð2r   c                 óF  — t          | ¦  «        rt          d| › d�¦  «        ‚d„ t          D ¦   «         }t          | t	          ||¬¦  «        ifi |¤Ž}t          j        d|¬¦  «        at          t          _        t          j	        rt          t          _	        t          |          S )aÓ  Registers a new RPC backend.

    Args:
        backend_name (str): backend string to identify the handler.
        construct_rpc_backend_options_handler (function):
            Handler that is invoked when
            ``rpc_backend.construct_rpc_backend_options(**dict)`` is called.
        init_backend_handler (function): Handler that is invoked when the
            `_init_rpc_backend()` function is called with a backend.
            This returns the agent.
    zRPC backend z: already registeredc                 ó(   — i | ]}|j         |j        “ŒS © )r   r   )Ú.0Úmembers     r   ú
<dictcomp>z$register_backend.<locals>.<dictcomp>R   s   € ÐNÐNÐN¸˜&œ+ v¤|ÐNÐNÐNr   )r   r   r   r   )r	   ÚRuntimeErrorr   Údictr   ÚenumÚEnumr   Ú__repr__Ú__doc__Ú_backend_type_doc)r   r   r   Úexisting_enum_dictÚextended_enum_dicts        r   r
   r
   @   s¾   € õ ˜,Ñ'Ô'ð NÝÐL¨,ÐLÐLÐLÑMÔMÐMàNÐNÅ+ÐNÑNÔNÐÝà�,Ø6[Ø%9ðñ ô ð	
ðð ð ðð Ðõ ”) -Ð7IÐJÑJÔJ€Kå-…KÔÝÔð 0Ý/�Ôå�|Ô$Ð$r   c                 ó*   —  | j         j        ||fi |¤ŽS ©N)r   r   )ÚbackendÚrpc_timeoutÚinit_methodÚkwargss       r   r   r   f   s/   € ð ?ˆ7Œ=Ô>Ø�[ðð Ø$*ðð ð r   c                 ó&   —  | j         j        |i |¤ŽS r-   )r   r   )r.   Úargsr1   s      r   r   r   q   s   € Ø-ˆ7Œ=Ô-¨tÐ>°vÐ>Ð>Ð>r   c                 ó‚  — t           j        }t          j        | |||¦  «        }|€t	          d¦  «        ‚|dk    r?||                     ¦   «         k    r't          d|› d|                     ¦   «         › �¦  «        ‚|dk    r?||                     ¦   «         k    r't          d|› d|                     ¦   «         › �¦  «        ‚|S )Nz*Failed to initialize default ProcessGroup.éÿÿÿÿzrank argument z doesn't match pg rank zworld_size argument z doesn't match pg size )Úrpc_constantsÚDEFAULT_PROCESS_GROUP_TIMEOUTÚdistÚProcessGroupGlooÚAssertionErrorÚrankr#   Úsize)Ústorer;   Ú
world_sizeÚprocess_group_timeoutÚgroups        r   Ú_init_process_grouprA   u   sË   € å)ÔGÐõ Ô! %¨¨zÐ;PÑQÔQ€Eà€}ÝÐIÑJÔJÐJà�Š
ˆ
˜ §¢¡¤Ò-Ð-ÝÐW¨DÐWÐWÈÏÊÉÌÐWÐWÑXÔXÐXØ�bÒÐ˜z¨U¯ZªZ©\¬\Ò9Ð9ÝØT :ÐTÐTÀeÇjÂjÁlÄlÐTÐTñ
ô 
ð 	
ð €Lr   c                 ó.   — ddl m}  || ||||¬¦  «        S )Nr   )ÚTensorPipeRpcBackendOptions)r/   r0   Únum_worker_threadsÚ_transportsÚ	_channels)Ú rC   )r/   r0   rD   rE   rF   r1   rC   s          r   Ú1_tensorpipe_construct_rpc_backend_options_handlerrH   ‰   s?   € ð .Ð-Ð-Ð-Ð-Ð-à&Ð&ØØØ-ØØðñ ô ð r   c                 ó:   ‡— t          ˆfd„| D ¦   «         ¦  «        S )Nc              3   ón   •K  — | ]/}|j         d k    p|j         dk    od|j        cxk    o‰k     nc V — Œ0dS )ÚcpuÚcudar   N)ÚtypeÚindex)r    ÚdÚdevice_counts     €r   ú	<genexpr>z/_tensorpipe_validate_devices.<locals>.<genexpr>�   sl   øè è € ð ð àð 	
Œ�%ŠÐM˜AœF fÒ,ÐL°°a´gÐ1LÐ1LÒ1LÐ1LÀÒ1LÐ1LÐ1LÐ1Lðð ð ð ð ð r   )Úall)ÚdevicesrP   s    `r   Ú_tensorpipe_validate_devicesrT   œ   s;   ø€ Ýð ð ð ð àðñ ô ñ ô ð r   c                 ó\  — d„ t          |                     ¦   «         ¦  «        D ¦   «         }t          j        || |||f|¦  «         d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }	t	          ||||	¦  «         t          | ||¦  «        }
t          |||
¦  «        }|
|fS )Nc                 ó   — g | ]}d di g f‘Œ	S )rG   r   r   )r    Ú_s     r   ú
<listcomp>zB_tensorpipe_exchange_and_check_all_device_maps.<locals>.<listcomp>ª   s    € Ð6Ð6Ð6˜Qˆ"ˆa��RˆÐ6Ð6Ð6r   c                 ó   — g | ]	\  }}}}|‘Œ
S r   r   )r    r   rW   s      r   rX   zB_tensorpipe_exchange_and_check_all_device_maps.<locals>.<listcomp>®   s    € Ð4Ð4Ð4™-˜$  1 a�Ð4Ð4Ð4r   c                 ó   — i | ]
\  }}}}||“ŒS r   r   )r    r   ÚcountrW   s       r   r"   zB_tensorpipe_exchange_and_check_all_device_maps.<locals>.<dictcomp>¯   s#   € ÐGÐGÐGÑ):¨¨u°a¸˜˜uÐGÐGÐGr   c                 ó   — i | ]
\  }}}}||“ŒS r   r   )r    r   rW   Úmap_s       r   r"   zB_tensorpipe_exchange_and_check_all_device_maps.<locals>.<dictcomp>°   s#   € ÐCÐCÐCÑ&6 d¨A¨t°Q�t˜TÐCÐCÐCr   c                 ó   — i | ]
\  }}}}||“ŒS r   r   )r    r   rW   rS   s       r   r"   zB_tensorpipe_exchange_and_check_all_device_maps.<locals>.<dictcomp>±   s#   € ÐEÐEÐEÑ%8 T¨1¨a°�4˜ÐEÐEÐEr   )Úranger<   r8   Úall_gather_objectÚ_validate_device_mapsÚ_create_reverse_mappingÚ_create_device_list)Úmy_nameÚmy_device_countÚmy_device_mapsÚ
my_devicesr@   ÚgatheredÚ	all_namesÚall_device_countsÚall_device_mapsÚall_devicesÚreverse_device_mapss              r   Ú._tensorpipe_exchange_and_check_all_device_mapsrn   ¥   sæ   € ð
 	7Ð6¥%¨¯
ª
©¬Ñ"5Ô"5Ð6Ñ6Ô6ð õ 	ÔØ�7˜O¨^¸ZÐHÈ%ñô ð ð 5Ð4¨8Ð4Ñ4Ô4€IØGÐG¸hÐGÑGÔGÐØCÐC¸(ÐCÑCÔC€OØEÐE¸HÐEÑEÔE€Kå˜)Ð%6¸ÈÑUÔUÐUõ 2°'¸9ÀoÑVÔVÐÝ$ Z°ÐATÑUÔU€JØ 
Ð*Ð*r   Tc                 ó¾  — | D ]€}||         }t          t          |¦  «        ¦  «        t          |¦  «        k    rt          d|› d|› �¦  «        ‚t          |||         ¦  «        st          d|› d|› d||         › �¦  «        ‚Œ�| D �]U}|rjt          ||                              ¦   «         ¦  «                             | ¦  «        s0t          d|› d||                              ¦   «         › d| › �¦  «        ‚||                              ¦   «         D �]Ê\  }}	t          t          |	                     ¦   «         ¦  «        ¦  «        t          |	¦  «        k    rt          d|› d|› d|	› �¦  «        ‚||         r\t          |	                     ¦   «         ¦  «                             ||         ¦  «        s!t          d|› d	|› d|	› d
||         › �¦  «        ‚nIt          |	                     ¦   «         ||         ¦  «        s!t          d|› d|› d|	› d||         › �¦  «        ‚|                     |g ¦  «        r]t          |	                     ¦   «         ¦  «                             ||         ¦  «        s!t          d|› d|› d|	› d
||         › �¦  «        ‚�Œ}||v rIt          |	                     ¦   «         ||         ¦  «        s!t          d|› d|› d|	› d||         › �¦  «        ‚�ŒÌ�ŒWd S )NzNode z" has duplicated devices
devices = z, has devices with invalid indices
devices = z
device count = z@ has invalid target node names in its device maps
device maps = z
node names = z5 has duplicated target devices in its device map for z
device map = z5 has unexpected source devices in its device map for z
devices = z? has source devices with invalid indices in its device map for z5 has unexpected target devices in its device map for z? has target devices with invalid indices in its device map for )	ÚlenÚsetÚ
ValueErrorrT   ÚkeysÚissubsetÚitemsÚvaluesÚget)
ri   rj   rk   rl   Úis_static_groupÚnoderS   Úsource_nodeÚtarget_noder]   s
             r   ra   ra   »   s?  € ð ð 	ð 	ˆØ˜dÔ#ˆÝ�s�7‰|Œ|ÑÔ¥ G¡¤Ò,Ð,ÝÐW TÐWÐWÈgÐWÐWÑXÔXÐXÝ+¨GÐ5FÀtÔ5LÑMÔMð 	Ýð<˜ð <ð <Ø$ð<ð <à"3°DÔ"9ð<ð <ñô ð ð	ð !ð 2ñ 2ˆàð 	¥3 °{Ô'C×'HÒ'HÑ'JÔ'JÑ#KÔ#K×#TÒ#TØñ$
ô $
ð 	õ ð,˜ð ,ð ,Ø!0°Ô!=×!BÒ!BÑ!DÔ!Dð,ð ,à )ð,ð ,ñô ð ð
 "1°Ô!=×!CÒ!CÑ!EÔ!Eð (	ñ (	ÑˆK˜Ý•3�t—{’{‘}”}Ñ%Ô%Ñ&Ô&­#¨d©)¬)Ò3Ð3Ý ð+˜Kð +ð +Ø-8ð+ð +à$(ð+ð +ñô ð ð
 ˜;Ô'ð Ý˜4Ÿ9š9™;œ;Ñ'Ô'×0Ò0°¸[Ô1IÑJÔJð Ý$ð@ ð @ð @Ø1<ð@ð @à(,ð@ð @ð &1°Ô%=ð@ð @ñô ð ðõ 2Ø—	’	‘”Ð.¨{Ô;ñô ð õ !ðG˜Kð Gð GØ-8ðGð Gà$(ðGð Gð '8¸Ô&DðGð Gñô ð ð �Š˜{¨BÑ/Ô/ð Ý˜4Ÿ;š;™=œ=Ñ)Ô)×2Ò2°;¸{Ô3KÑLÔLð Ý$ð@ ð @ð @Ø1<ð@ð @à(,ð@ð @ð &1°Ô%=ð@ð @ñô ð ñð Ð 1Ð1Ð1Õ:VØ—’‘”Ð0°Ô=ñ;ô ;Ð1õ !ðG˜Kð Gð GØ-8ðGð Gà$(ðGð Gð '8¸Ô&DðGð Gñô ð ùñG(	ð2ð 2r   c                 ó®  — | sÀt          ¦   «         }|                     ¦   «         D ])}|                     |                     ¦   «         ¦  «         Œ*|                     ¦   «         D ])}|                     |                     ¦   «         ¦  «         Œ*|                     t          j        d¦  «        ¦  «         t          |¦  «        } t          | d„ ¬¦  «        } | S )NrK   c                 ó   — | j         S r-   )rN   )rO   s    r   ú<lambda>z%_create_device_list.<locals>.<lambda>  s   € °!´'€ r   )Úkey)	rq   rv   Úupdaters   ÚdiscardÚtorchÚdeviceÚlistÚsorted)rg   rf   rm   Údevices_setr]   s        r   rc   rc   þ   sÎ   € Øð 'Ý),©¬ˆØ"×)Ò)Ñ+Ô+ð 	,ð 	,ˆDØ×Ò˜tŸyšy™{œ{Ñ+Ô+Ð+Ð+Ø'×.Ò.Ñ0Ô0ð 	,ð 	,ˆDØ×Ò˜tŸyšy™{œ{Ñ+Ô+Ð+Ð+Ø×Ò�EœL¨Ñ/Ô/Ñ0Ô0Ð0Ý˜+Ñ&Ô&ˆ
Ý˜
Ð(9Ð(9Ð:Ñ:Ô:€JØÐr   c                 ó‚   — i }|D ]9}| ||         v r-d„ ||         |                                ¦   «         D ¦   «         ||<   Œ:|S )Nc                 ó   — i | ]\  }}||“Œ	S r   r   )r    ÚkÚvs      r   r"   z+_create_reverse_mapping.<locals>.<dictcomp>  s+   € ð )ð )ð )Ù˜˜A��1ð)ð )ð )r   )ru   )rd   ri   rk   rm   ry   s        r   rb   rb     sj   € ØGIÐØð ð ˆØ�o dÔ+Ð+Ð+ð)ð )Ø!0°Ô!6°wÔ!?×!EÒ!EÑ!GÔ!Gð)ñ )ô )Ð Ñ%øð Ðr   c                  óX  — ddl m}  t          | t          j        ¦   «         ¦  «        }|                     ¦   «         }t          j                             ¦   «         }t          j         	                    ¦   «         r%|j
        rt          j                             ¦   «          ||j        |j
        fS )Nr   ©ÚTensorPipeAgent)rG   r�   r   r   Ú_get_current_rpc_agentÚ_get_backend_optionsr‚   rL   rP   Úis_availablerS   ÚinitÚdevice_maps)r�   ÚagentÚoptsrP   s       r   Ú_get_device_infosr•     s“   € Ø!Ð!Ð!Ð!Ð!Ð!å�¥#Ô"<Ñ">Ô">Ñ?Ô?€EØ×%Ò%Ñ'Ô'€DÝ”:×*Ò*Ñ,Ô,€LÝ„z×ÒÑ Ô ð  T¤\ð ÝŒ
�ŠÑÔÐØ˜Ô)¨4¬<Ð7Ð7r   c           	      ó°  — ddl m} t          || ¦  «        } |                      ¦   «         }|j        }|                      ¦   «         }i i i g f\  }}}}|D ]’}	|	j        }
|
|k    rt          j        |
t          ¦  «        \  }}}n@|  	                    ¦   «         }t          j                             ¦   «         |j        |j        }}}|||
<   |||
<   |||
<   |                     |
¦  «         Œ“t!          ||||d¬¦  «         t#          |||¦  «        }|D ]H}
t%          ||
         ||
         |¦  «        ||
<   t          j        |
t&          |||
         |df¬¦  «         ŒId S )Nr   rŒ   F)rx   T)r3   )rG   r�   r   Úget_worker_infor   Úget_worker_infosr   Úrpc_syncr•   r�   r‚   rL   rP   r’   rS   Úappendra   rb   rc   r   )r“   r�   Úmy_worker_inford   Úall_worker_infosrj   rk   rl   ri   Úworker_infoÚworker_namerP   Ú
device_maprS   r”   rm   s                   r   Ú#_set_devices_and_reverse_device_mapr       sÍ  € Ø!Ð!Ð!Ð!Ð!Ð!å� %Ñ(Ô(€Eð ×*Ò*Ñ,Ô,€NØÔ!€GØ×-Ò-Ñ/Ô/ÐàACÀRÈÈRÀÑ>Ð�¨°YØ'ð &ð &ˆØ!Ô&ˆØ˜'Ò!Ð!å03´ØÕ.ñ1ô 1Ñ-ˆL˜* g gð ×-Ò-Ñ/Ô/ˆDå”
×'Ò'Ñ)Ô)ØÔ Ø”ð '.˜*ˆLð
 *6Ð˜+Ñ&Ø'1ˆ˜Ñ$Ø#*ˆ�KÑ Ø×Ò˜Ñ%Ô%Ð%Ð%åØØØØØðñ ô ð õ 2°'¸9ÀoÑVÔVÐð !ð 	
ð 	
ˆå#6Ø˜Ô$ o°kÔ&BÐDWñ$
ô $
ˆ�KÑ õ 	ŒØÝ$Ø  +¨kÔ":Ð<OÐQUÐVð	
ñ 	
ô 	
ð 	
ð 	
ð	
ð 	
r   c           
      óÄ  — ddl m}m} t          | t          j        ¦  «        st          d| › �¦  «        ‚t          ||¦  «        st          d|› �¦  «        ‚t          j         	                    ¦   «         }t          |¦  «        }|r×t          | ||¦  «        }	t          |||j        |j        |	¦  «        \  }
}t          j                             ¦   «         r |rt          j                             ¦   «           || |||||
|¦  «        }t#          j        |¦  «         t#          j        d |j        ¬¦  «         |	                     ¦   «                              ¦   «          |S t/          | |d¦  «        5   || ||||i g ¦  «        }t#          j        |¦  «         	 t1          |¦  «         n"# t2          $ r t#          j        ¦   «          ‚ w xY w|cd d d ¦  «         S # 1 swxY w Y   d S )Nr   )r�   rC   z`store` must be a c10d::Store. z?`rpc_backend_options` must be a `TensorPipeRpcBackendOptions`. )ÚtimeoutT)rG   r�   rC   Ú
isinstancer8   ÚStoreÚ	TypeErrorr‚   rL   rP   ÚboolrA   rn   r’   rS   r�   r‘   r   Ú_init_rpc_statesÚ_all_gatherr/   ÚbarrierÚwaitr   r    Ú	ExceptionÚshutdown)r=   r   r;   r>   Úrpc_backend_optionsr�   rC   rP   rx   r@   rm   rS   r“   s                r   Ú _tensorpipe_init_backend_handlerr®   T  s…  € ð ?Ð>Ð>Ð>Ð>Ð>Ð>Ð>å�e�TœZÑ(Ô(ð CÝÐA¸%ÐAÐAÑBÔBÐBåÐ)Ð+FÑGÔGð 
ÝØcÐNaÐcÐcñ
ô 
ð 	
õ ”:×*Ò*Ñ,Ô,€Lå˜:Ñ&Ô&€Oàð Dõ $ E¨4°Ñ<Ô<ˆå'UØØØÔ+ØÔ'Øñ(
ô (
Ñ$Ð˜Wõ Œ:×"Ò"Ñ$Ô$ð 	¨ð 	õ ŒJ�OŠOÑÔÐð  �ØØØØØØØñ
ô 
ˆõ 	Ô˜UÑ#Ô#Ð#õ 	Œ˜Ð&9Ô&EÐFÑFÔFÐFð 	�Š‰Œ×ÒÑÔÐàˆõ *¨%°°tÑ<Ô<ð 	ð 	ð $�OØØØØØ#ØØñô ˆEõ Ô  Ñ'Ô'Ð'ðõ 4°EÑ:Ô:Ð:Ð:øÝð ð ð Ý”‘”�Øðøøøð ð+	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s*   Å.&GÆF%Æ$GÆ%GÇGÇGÇGÚ
TENSORPIPE)T))Úcollectionsr%   Útypingr   r‚   Útorch.distributedÚdistributedr8   rG   r   r   r6   Ú_utilsr   r   Ú__all__Ú
namedtupler   r   r)   r&   r   r'   r(   r	   r
   ÚDEFAULT_RPC_TIMEOUT_SECÚDEFAULT_INIT_METHODr   r   rA   ÚDEFAULT_NUM_WORKER_THREADSrH   rT   rn   ra   rc   rb   r•   r    r®   r   r   r   ú<module>rº      s/  ðð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø  Ð  Ð  Ð  Ð  Ð  à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jðð ð €ð &ˆ{Ô%ØÐ<Ð>TÐUñô €ð
&ð &ð &ðÐ ð ˆdŒi˜m°2Ð6Ñ6Ô6€à)…Ô åÔð ,Ø+…KÔð
3ð 
3ð 
3ð#%ð #%ð #%ðP Ô5ØÔ1ðð ð ð ð?ð ?ð ?ðð ð ð. %Ô?ØØðð ð ð ð&ð ð ð+ð +ð +ð. QUð@ð @ð @ð @ðF
ð 
ð 
ðð ð ð8ð 8ð 8ð1
ð 1
ð 1
ðhUð Uð Uðp Ð ØØ5Ø$ñô ð ð ð r   