
    <Цi                        S SK Jr  S SKJrJrJrJrJrJrJ	r	J
r
JrJr  S SKrS SKJr  S SKJr  S SKJr  \
(       a  S SKJr  S SKJr  S	/rS
\S\4S jrS
\S\4S jrSS jrSS jrSS
\S\\	\      S\4S jjr SS\\R>                     S\\\ \RB                  4      S\S\\\R>                        4S jjr"\" S\S9r# SS\#S\\\ \RB                  4      S\S\\#   4S jjr$g)    )OrderedDict)
castDictIteratorListOptionalSequenceSetTYPE_CHECKINGTypeVarUnionN)_get_device_index)Module)comm)ScriptModule)EnabledProxy	replicatemodulereturnc                 H    SS K n[        XR                  R                  5      $ Nr   )	torch.jit
isinstancejitr   r   torchs     Z/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/nn/parallel/replicate.py_is_script_moduler      s    fii4455    c                 H    SS K n[        XR                  R                  5      $ r   )r   r   _CScriptMethodr   s     r   _is_script_methodr#   #   s    fhh3344r   c                  >    SS K n U R                  R                  5       $ r   )r   r   r   r   s    r   _init_script_moduler&   )   s    99!!##r   c                  J    SS K n U R                  R                  R                  $ r   )torch.jit._stater   _state_enabledr%   s    r   _is_jit_enabledr+   /   s    99$$$r   memoc                 n   S[         S[        [            4S jn[        5       (       d  gUc
  [        5       nUR	                  U 5        [        U 5      (       a/  UR                  U" U 5      5        [        S U" U 5       5       5      $ U R                  5        H  nX1;   a  M
  [        X15      (       a  M    g   g)Nr   r   c                 <    U R                  5       n[        U5        U$ N)modulesnext)r   gens     r   descendant_modules0_replicatable_module.<locals>.descendant_modules>   s    nnS	
r   Tc              3   8   #    U  H  n[        U5      v   M     g 7fr/   )r   ).0
descendants     r   	<genexpr>'_replicatable_module.<locals>.<genexpr>L   s      
<Vjj))<Vs   F)
r   r   r+   setaddr   updateallchildren_replicatable_module)r   r,   r3   childs       r   r?   r?   <   s    6 hv.> 
 |u 	HHV  &v./ 
<Nv<V
 
 	
 " =#E00 # r   tensorsdevicesdetachc           	         SSK Jn  U(       a  [        R                  " X5      $ [	        U 5      S:  aQ  UR
                  " U/U Q76 n[        S[	        U5      [	        U 5      5       Vs/ s H  nXEU[	        U 5      -    PM     sn$ / $ s  snf )Nr   )	Broadcast)torch.nn.parallel._functionsrE   r   broadcast_coalescedlenapplyrange)rA   rB   rC   rE   tensor_copiesis         r   _broadcast_coalesced_reshaperM   [   s    
 7''99 w<!%OOG>g>M q#m"4c'lCCA !c'l"23C 
 Is   'BT)boundnetworkc           	         [        U 5      (       d  [        S5      eU(       d  / $ U Vs/ s H  n[        US5      PM     nn[        U5      n[	        U R                  5       5      n[        U5       VVs0 s H  u  pgXv_M	     nnn[        XQU5      n	[	        U R                  5       5      n
/ n/ nU
 H?  nUR                  (       a  U(       d  UR                  U5        M.  UR                  U5        MA     [        U5       VVs0 s H  u  pmX_M	     nnn[        U5       VVs0 s H  u  pmX_M	     nnn[        XUS9n[        XSS9n[	        U R                  5       5      nU Vs/ s H  n/ PM     nn0 n[        U5       HP  u  nnUUU'   [        U5       H6  nUR                  5       n[        5       Ul        UU   R                  U5        M8     MR     [        U5       GH  u  nnUR                   R#                  5        Hf  u  nnUc+  [        U5       H  nUU   U   nS UR                   U'   M     M4  UU   n[        U5       H  nUU   U   n[%        UUUU   U   5        M      Mh     UR&                  R#                  5        Hv  u  nnUc+  [        U5       H  nUU   U   nS UR&                  U'   M     M4  X   n[        U5       H/  nUU   U   nU	U   U   n[%        UUU5        UUR                  U'   M1     Mx     UR(                  R#                  5        H  u  nnUc+  [        U5       H  nUU   U   nS UR(                  U'   M     M4  UR                  (       a  U(       d  UnX   n OUnX   n [        U5       H  nUU   U   n[%        UUUU   U    5        M      M     GM     [        U5       Vs/ s H  n[+        [,        UU   S   5      PM     sn$ s  snf s  snnf s  snnf s  snnf s  snf s  snf )NzKCannot replicate network where python modules are childrens of ScriptModuleT)rC   r   )r?   RuntimeErrorr   rH   list
parameters	enumeraterM   buffersrequires_gradappendr0   rJ   _replicate_for_data_parallelr   _former_parameters_modulesitemssetattr_parameters_buffersr   rN   )!rP   rB   rC   xnum_replicasparamsidxparamparam_indicesparam_copiesrV   
buffers_rgbuffers_not_rgbufbuffer_indices_rgbuffer_indices_not_rgbuffer_copies_rgbuffer_copies_not_rgr0   _module_copiesmodule_indicesrL   r   jreplicakeyr@   
module_idx	param_idx
param_copybuffer_copies
buffer_idxs!                                    r   r   r   s   s   
  (((
 	

 	3:;7a D)7G;w<L'$$&'F2;F2CD2CJCUZ2CMD/HL7??$%G%'J)+NVc"!!#&	  3<J2GH2Ghc2GH6?6OP6O(#SX6OP3JPVW7 7??$%G5<(=WWM(=(*Nw'	6!"v|$A99;G *5G&!##G, % ( w'	6 ////1JC}|,A+A.q1G,0G$$S) - ,E2
|,A+A.q1GGS-*::*FG - 2 !,,224JC}|,A+A.q1G/3G'', - *0	|,A+A.q1G!-a!;J GS*56@G..s3 - 5 --/HC{|,A+A.q1G,0G$$S) - $$V$4M!2!7J$8M!6!;J|,A+A.q1GGS-*::*FG - 05 (T 382EF2EQDM!$Q'(2EFFg < E IP )>t Gs#   O3O OO$!O*0 O/)r   r   )r   r   r/   )F)%collectionsr   typingr   r   r   r   r   r	   r
   r   r   r   r   torch._utilsr   torch.nn.modulesr   torch.nn.parallelr   r   r   r(   r   __all__boolr   r#   r&   r+   r?   TensorintdevicerM   rN   r    r   r   <module>r      sC   #    * # " &- -6f 6 65f 5 5$% xF/D PT D ell#eC-./  
$u||
	* Cv aGaGeC-./aG aG 
!W	aGr   