§
    ŠŠtjð  ã                   ó  — U d dl Z d dlZd dlZd dlZd dlmZ d dlZeej        z  Z	 e j
        e¦  «        Zdefd„Zdefd„Z e¦   «         r$ej                             ¦   «         s ed¦  «        ‚ej        j        Zej        j        Zej        j        Zej        j        Zej        j        Z e¦   «         r¥d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z8 d„ Z9i Z:e;eej<        f         e=d	<   ddedefd„Z>ej?        dk    rd dlm@Z@ ddlAmBZBmCZC ddlDT ddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQmRZRmPZP  e4¦   «          dS  G d„ d¦  «        ZSeSejT        d         _U        eSejT        d         _1        dS )é    N)Ú	timedeltaÚreturnc                  ó6   — t          t          j        d¦  «        S )aŸ  
    Return ``True`` if the distributed package is available.

    Otherwise,
    ``torch.distributed`` does not expose any other APIs. Currently,
    ``torch.distributed`` is available on Linux, MacOS and Windows. Set
    ``USE_DISTRIBUTED=1`` to enable it when building PyTorch from source.
    Currently, the default value is ``USE_DISTRIBUTED=1`` for Linux and Windows,
    ``USE_DISTRIBUTED=0`` for MacOS.
    Ú
_c10d_init)ÚhasattrÚtorchÚ_C© ó    úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributed/__init__.pyÚis_availabler      s   € õ •5”8˜\Ñ*Ô*Ð*r   c                  óB   — ddl } | j                             d¦  «        duS )z-Check if the spmd_types package is installed.r   NÚ
spmd_types)Úimportlib.utilÚutilÚ	find_spec)Ú	importlibs    r   Ú_is_spmd_types_availabler      s)   € àÐÐÐàŒ>×#Ò# LÑ1Ô1¸Ð=Ð=r   z&Failed to initialize torch.distributed)Ú_broadcast_coalescedÚ"_compute_bucket_assignment_by_sizeÚ_ControlCollectivesÚ_DEFAULT_FIRST_BUCKET_BYTESÚ_make_nccl_premul_sumÚ_register_builtin_comm_hookÚ_register_comm_hookÚ_StoreCollectivesÚ_test_python_storeÚ_verify_params_across_processesÚBackendÚBuiltinCommHookTypeÚ
DebugLevelÚ	FileStoreÚget_debug_levelÚ
GradBucketÚLoggerÚPrefixStoreÚProcessGroupÚReducerÚset_debug_levelÚset_debug_level_from_envÚStoreÚTCPStoreÚWorkc                  óJ   ‡— ddl Š G ˆfd„d‰j        ¦  «        }  | ¦   «         S )z�
        Supports using PDB from inside a multiprocessing child process.

        Usage:
        _make_distributed_pdb().set_trace()
        r   Nc                   ó   •— e Zd Zˆ fd„ZdS )ú._make_distributed_pdb.<locals>._DistributedPdbc                 óê   •— t           j        }	 t          d¦  «        5 t           _         ‰j        j        | g|¢R i |¤Ž d d d ¦  «         n# 1 swxY w Y   |t           _        d S # |t           _        w xY w)Nz
/dev/stdin)ÚsysÚstdinÚopenÚPdbÚinteraction)ÚselfÚargsÚkwargsÚ_stdinÚpdbs       €r   r6   z:_make_distributed_pdb.<locals>._DistributedPdb.interactionY   sÆ   ø€ Ýœ�ð'Ý˜lÑ+Ô+ð C­s¬yØ+˜œÔ+¨DÐB°4ÐBÐBÐB¸6ÐBÐBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð !'•C”I�I�Iø •C”IÐ&Ð&Ð&Ð&s-   �A$ ž!A¿A$ ÁAÁA$ ÁAÁA$ Á$A2N)Ú__name__Ú
__module__Ú__qualname__r6   )r;   s   €r   Ú_DistributedPdbr0   X   s.   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð 'ð 'r   r?   )r;   r5   )r?   r;   s    @r   Ú_make_distributed_pdbr@   M   sT   ø€ ð 	ˆ
ˆ
ˆ
ð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'˜cœgñ 	'ô 	'ð 	'ð ˆÑ Ô Ð r   Ú_breakpoint_cacheé  ÚrankÚskipc                 ó–  — |dk    rxt          t          t          j        ¦   «         ¦  «        ¦  «        }t                               |d¦  «        dz   }|t          |<   ||k    rt                               d|¦  «         dS |�Lt          j	        j
        j        D ]5}t          j	        j
                             t          |¬¦  «        |¦  «         Œ6t          ¦   «         | k    r;t          ¦   «         }|                     d| › d�¦  «         |                     ¦   «          t          j                             ¦   «         }t          j                             ¦   «         }t          j                             d¦  «         	 t-          ¦   «          t          j                             |¦  «         ~dS # t          j                             |¦  «         ~w xY w)	aD  
        Set a breakpoint, but only on a single rank.  All other ranks will wait for you to be
        done with the breakpoint before continuing.

        Args:
            rank (int): Which rank to break on.  Default: ``0``
            skip (int): Skip the first ``skip`` calls to this breakpoint. Default: ``0``.
        r   é   zSkip the breakpoint, counter=%dN)ÚsecondszS
!!! ATTENTION !!!

Type 'up' to get to the frame that called dist.breakpoint(rank=z)
F)ÚhashÚstrÚ	tracebackÚ
format_excrA   ÚgetÚlogÚwarningr   ÚdistributedÚdistributed_c10dÚ_pg_mapÚ_set_pg_timeoutr   Úget_rankr@   ÚmessageÚ	set_tracer	   Ú_meta_in_tls_dispatch_includeÚ_DisableTorchDispatchÚ!_set_meta_in_tls_dispatch_includeÚbarrier)	rC   rD   Ú	timeout_sÚkeyÚcounterÚgroupr;   Úmeta_in_tlsÚguards	            r   Ú
breakpointr`   e   s¯  € ð �!Š8ˆ8Ý•s�9Ô/Ñ1Ô1Ñ2Ô2Ñ3Ô3ˆCÝ'×+Ò+¨C°Ñ3Ô3°aÑ7ˆGØ%,Õ˜cÑ"Ø˜$ŠˆÝ—’Ð=¸wÑGÔGÐGØ�ð Ð ÝÔ*Ô;ÔCð ð �ÝÔ!Ô2×BÒBÝ iÐ0Ñ0Ô0°%ñô ð ð õ ‰:Œ:˜ÒÐÝ'Ñ)Ô)ˆCØ�KŠKð\ØRVð\ð \ð \ñô ð ð �MŠM‰OŒOˆOõ ”h×<Ò<Ñ>Ô>ˆÝ”×.Ò.Ñ0Ô0ˆÝŒ×2Ò2°5Ñ9Ô9Ð9ð	Ý‰IŒIˆIåŒH×6Ò6°{ÑCÔCÐCØ��øõ ŒH×6Ò6°{ÑCÔCÐCØˆIˆIˆIˆIs   Å6F& Æ&"GÚwin32)Ú	HashStorerF   )Ú
DeviceMeshÚinit_device_mesh)Ú*)	Ú_all_gather_baseÚ_coalescing_managerÚ_CoalescingManagerÚ_create_process_group_wrapperÚ_get_process_group_nameÚ_rank_not_in_groupÚ_reduce_scatter_baseÚ_time_estimatorÚget_node_local_rank)Ú_remote_device)Ú_create_store_from_optionsÚregister_rendezvous_handlerÚ
rendezvousc                   ó   — e Zd ZdS )Ú_StubN)r<   r=   r>   r
   r   r   rt   rt   ³   s   € € € € € Øˆr   rt   ztorch.distributed)r   r   rB   )VÚloggingr2   rJ   ÚtypingÚdatetimer   r   ÚintÚSymIntÚRankTypeÚ	getLoggerr<   rM   Úboolr   r   r	   r   ÚRuntimeErrorÚ
_DistErrorÚ	DistErrorÚ_DistBackendErrorÚDistBackendErrorÚ_DistNetworkErrorÚDistNetworkErrorÚ_DistStoreErrorÚDistStoreErrorÚ_DistQueueEmptyErrorÚQueueEmptyErrorÚtorch._C._distributed_c10dr   r   r   r   r   r   r   r   r   r   r   Ú_Backendr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Ú_Workr@   rA   ÚdictÚAnyÚ__annotations__r`   Úplatformrb   Údevice_meshrc   rd   rP   rf   rg   rh   ri   rj   rk   rl   rm   rn   Úremote_devicero   rr   rp   rq   rt   ÚmodulesÚ	GroupNamer
   r   r   ú<module>r“      sã  ðà €€€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à €€€ð �”Ñ€ð €gÔ˜Ñ!Ô!€ð+�dð +ð +ð +ð +ð> $ð >ð >ð >ð >ð €<�>„>ð A˜%œ(×-Ò-Ñ/Ô/ð AØ
ˆ,Ð?Ñ
@Ô
@Ð@ð ŒHÔ€	Ø”8Ô-Ð Ø”8Ô-Ð Ø”Ô)€Ø”(Ô/€à€<�>„>ð G:ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð8!ð !ð !ð, 02Ð�t˜C ¤˜OÔ,Ð1Ð1Ñ1ð(ð (˜ð (¨ð (ð (ð (ð (ðT „|�wÒÐØ8Ð8Ð8Ð8Ð8Ð8à9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ð
 $Ð#Ð#Ð#ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð .Ð-Ð-Ð-Ð-Ð-ðð ð ð ð ð ð ð ð ð ð ÐÑÔÐÐÐðð ð ð ð ñ ô ð ð 27€C„KÐ#Ô$Ô.Ø49€C„KÐ#Ô$Ô1Ð1Ð1r   