Ë
    3êñi[  ã                   óÄ  — d dl mZ d dlmZmZ d dlmZ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rd d	lmZ d d
lmZ d dlmZ dgZdede
d   fd„Zdede
d   fd„Zdd„Zd d„Zd!dedee   dz  defd„Z 	 d"deejB                     dee"ejF                  z     dede$e$ejB                        fd„Z% ede¬«      Z&	 d"de&dee"ejF                  z     dede$e&   fd„Z'y)#é    )ÚOrderedDict)ÚIteratorÚSequence)ÚcastÚTYPE_CHECKINGÚTypeVar)ÚTypeIsN)Ú_get_device_index)ÚModule)Úcomm)ÚScriptMethod)ÚScriptModule)ÚEnabledProxyÚ	replicateÚmoduleÚreturnr   c                 óJ   — dd l }t        | |j                  j                  «      S ©Nr   )Ú	torch.jitÚ
isinstanceÚjitr   ©r   Útorchs     ú]/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/torch/nn/parallel/replicate.pyÚ_is_script_moduler      s   € Ûä�f˜eŸi™i×4Ñ4Ó5Ð5ó    r   c                 óJ   — dd l }t        | |j                  j                  «      S r   )r   r   Ú_Cr   r   s     r   Ú_is_script_methodr      s   € Ûä�f˜eŸh™h×3Ñ3Ó4Ð4r   c                  ó>   — dd l } | j                  j                  «       S r   )r   r   r   ©r   s    r   Ú_init_script_moduler"   !   s   € Ûà�9‰9×!Ñ!Ó#Ð#r   c                  óJ   — dd l } | j                  j                  j                  S r   )Útorch.jit._stater   Ú_stateÚ_enabledr!   s    r   Ú_is_jit_enabledr'   '   s   € Ûà�9‰9×Ñ×$Ñ$Ð$r   Úmemoc                 óF  — dt         dt        t            fd„}t        «       sy|€
t        «       }|j	                  | «       t        | «      r/|j                   || «      «       t        d„  || «      D «       «      S | j                  «       D ]  }||v rŒt        ||«      rŒ y y)Nr   r   c                 ó<   — | j                  «       }t        |«       |S ©N)ÚmodulesÚnext)r   Úgens     r   Údescendant_modulesz0_replicatable_module.<locals>.descendant_modules6   s   € Ø�n‰nÓˆÜˆSŒ	Øˆ
r   Tc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr+   )r   )Ú.0Ú
descendants     r   ú	<genexpr>z'_replicatable_module.<locals>.<genexpr>D   s   è ø€ ò 
Ø.8Ô˜j×)ñ
ùs   ‚F)
r   r   r'   ÚsetÚaddr   ÚupdateÚallÚchildrenÚ_replicatable_module)r   r(   r/   Úchilds       r   r9   r9   4   s®   € ð¤6ð ¬h´vÑ.>ó ô
 ÔØØ€|Ü‹uˆð 	‡H�HˆVÔÜ˜Ô Ø�‰Ñ& vÓ.Ô/Üñ 
Ù<NÈvÓ<Vô
ó 
ð 	
ð —‘Ó"ò ˆð �D‰=ØÜ# E¨4Õ0Ùðð r   ÚtensorsÚdevicesÚdetachc                 ó  — ddl m} t        | «      dk(  rg S |r”| D �cg c]9  }t        |t        j
                  j                  «       xr |j                  «       ‘Œ; }}t        j                  | |«      }|D ]3  }t        |«      D ]#  \  }}	|	sŒ	t	        j                  ||   «      ||<   Œ% Œ5 |S  |j                  |g| ¢­Ž }
t        dt        |
«      t        | «      «      D �cg c]  }t        |
||t        | «      z    «      ‘Œ c}S c c}w c c}w )Nr   )Ú	Broadcast)Útorch.nn.parallel._functionsr?   Úlenr   r   ÚnnÚUninitializedParameterÚ
is_complexr   Úbroadcast_coalescedÚ	enumerateÚview_as_complexÚapplyÚrangeÚlist)r;   r<   r=   r?   ÚtÚcomplex_maskÚoutputsÚdevice_outputsÚirD   Útensor_copiess              r   Ú_broadcast_coalesced_reshaperQ   S   s"  € õ
 7ä
ˆ7ƒ|�qÒØˆ	áð ö
àô ˜1œeŸh™h×=Ñ=Ó>Ð>ÒQÀ1Ç<Á<Ã>ÑQð
ˆð 
ô
 ×*Ñ*¨7°GÓ<ˆà%ò 	QˆNÜ!*¨<Ó!8ò Q‘��:ÚÜ(-×(=Ñ(=¸nÈQÑ>OÓ(P�N 1Ò%ñQð	Qð
 ˆà'˜	Ÿ™¨Ð:°'Ò:ˆô ˜1œc -Ó0´#°g³,Ó?ö
àô �˜q 1¤s¨7£|Ñ#3Ð4Õ5ò
ð 	
ùò
ùò
s   �>DÃ!!D
ÚT)ÚboundÚnetworkc           	      ój  — t        | «      st        d«      ‚|sg S |D �cg c]  }t        |d«      ‘Œ }}t        |«      }t	        | j                  «       «      }t        |«      D ��ci c]  \  }}||“Œ
 }}}t        |||«      }	t	        | j                  «       «      }
g }g }|
D ]3  }|j                  r|s|j                  |«       Œ#|j                  |«       Œ5 t        |«      D ��ci c]  \  }}||“Œ
 }}}t        |«      D ��ci c]  \  }}||“Œ
 }}}t        |||¬«      }t        ||d¬«      }t	        | j                  «       «      }|D �cg c]  }g ‘Œ }}i }t        |«      D ]M  \  }}|||<   t        |«      D ]5  }|j                  «       }t        «       |_        ||   j                  |«       Œ7 ŒO t        |«      D �]£  \  }}|j                   j#                  «       D ]_  \  }}|€(t        |«      D ]  }||   |   }d |j                   |<   Œ Œ0||   }t        |«      D ]  }||   |   }t%        ||||   |   «       Œ Œa |j&                  j#                  «       D ]p  \  }}|€(t        |«      D ]  }||   |   }d |j&                  |<   Œ Œ0||   }t        |«      D ].  }||   |   }|	|   |   }t%        |||«       ||j                  |<   Œ0 Œr |j(                  j#                  «       D ]w  \  }}|€(t        |«      D ]  }||   |   }d |j(                  |<   Œ Œ0|j                  r
|s|}||   } n|}||   } t        |«      D ]  }||   |   }t%        ||||   |    «       Œ Œy �Œ¦ t        |«      D �cg c]  }t+        t,        ||   d   «      ‘Œ c}S c c}w c c}}w c c}}w c c}}w c c}w c c}w )NzJCannot replicate network where python modules are children of ScriptModuleT)r=   r   )r9   ÚRuntimeErrorr
   rA   rJ   Ú
parametersrF   rQ   ÚbuffersÚrequires_gradÚappendr,   rI   Ú_replicate_for_data_parallelr   Ú_former_parametersÚ_modulesÚitemsÚsetattrÚ_parametersÚ_buffersr   rR   )!rT   r<   r=   ÚxÚnum_replicasÚparamsÚidxÚparamÚparam_indicesÚparam_copiesrX   Ú
buffers_rgÚbuffers_not_rgÚbufÚbuffer_indices_rgÚbuffer_indices_not_rgÚbuffer_copies_rgÚbuffer_copies_not_rgr,   Ú_Úmodule_copiesÚmodule_indicesrO   r   ÚjÚreplicaÚkeyr:   Ú
module_idxÚ	param_idxÚ
param_copyÚbuffer_copiesÚ
buffer_idxs!                                    r   r   r   v   sU  € ô
   Ô(ÜØXó
ð 	
ñ Øˆ	à3:Ö;¨aÔ   DÕ)Ð;€GÐ;Ü�w“<€Lä�'×$Ñ$Ó&Ó'€FÜ2;¸FÓ2C×D¡J C¨�U˜C‘ZÐD€MÑDÜ/°¸ÀÓH€Lä�7—?‘?Ó$Ó%€GØ%'€JØ)+€NØò 'ˆØ×Ò¡VØ×Ñ˜cÕ"à×!Ñ! #Õ&ð	'ô 3<¸JÓ2G×H¡h c¨3˜˜c™ÐHÐÑHÜ6?ÀÓ6O×P©(¨#¨s˜S #™XÐPÐÑPä3°JÀÐPVÔWÐÜ7Ø˜¨ôÐô �7—?‘?Ó$Ó%€GØ5<Ö(=°ªÐ(=€MÐ(=Ø(*€Nä˜wÓ'ò -‰	ˆˆ6Ø!"ˆ�vÑÜ�|Ó$ò 		-ˆAØ×9Ñ9Ó;ˆGô *5«ˆGÔ&à˜!Ñ×#Ñ# GÕ,ñ		-ð-ô ˜wÓ'ó (H‰	ˆˆ6Ø Ÿ/™/×/Ñ/Ó1ò 		H‰JˆC�Øˆ}Ü˜|Ó,ò 1�AØ+¨AÑ.¨qÑ1�GØ,0�G×$Ñ$ SÒ)ñ1ð ,¨EÑ2�
Ü˜|Ó,ò H�AØ+¨AÑ.¨qÑ1�GÜ˜G S¨-¸Ñ*:¸:Ñ*FÕGñHð		Hð !×,Ñ,×2Ñ2Ó4ò 	A‰JˆC�Øˆ}Ü˜|Ó,ò 4�AØ+¨AÑ.¨qÑ1�GØ/3�G×'Ñ'¨Ò,ñ4ð *¨%Ñ0�	Ü˜|Ó,ò A�AØ+¨AÑ.¨qÑ1�GØ!-¨a¡°Ñ!;�Jô ˜G S¨*Ô5à6@�G×.Ñ.¨sÒ3ñAð	Að Ÿ™×-Ñ-Ó/ò 	H‰HˆC�Øˆ{Ü˜|Ó,ò 1�AØ+¨AÑ.¨qÑ1�GØ,0�G×$Ñ$ SÒ)ñ1ð ×$Ò$©VØ$4�MØ!2°3Ñ!7‘Jà$8�MØ!6°sÑ!;�JÜ˜|Ó,ò H�AØ+¨AÑ.¨qÑ1�GÜ˜G S¨-¸Ñ*:¸:Ñ*FÕGñHò	Hð5(HôT 38¸Ó2EÖF¨QŒD”�M !Ñ$ QÑ'Õ(ÒFÐFùòg <ùó Eùó IùÛPùò )>ùòt Gs#   ŸNÁ&NÃ&NÄN%Å	N+Í4N0)r   r   )r   r   r+   )F)(Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r   Útyping_extensionsr	   r   Útorch._utilsr
   Útorch.nn.modulesr   Útorch.nn.parallelr   Útorch._Cr   r   r   r$   r   Ú__all__r   Úobjectr   r"   r'   r4   Úboolr9   ÚTensorÚintÚdevicerJ   rQ   rR   r   © r   r   ú<module>rŠ      sA  ðÝ #ß .ß /Ñ /Ý $ã Ý *Ý #Ý "ñ Ý%Ý&Ý-ð ˆ-€ð6˜fð 6¨°Ñ)?ó 6ð5˜fð 5¨°Ñ)?ó 5ó$ó%ñ ð ¨s°6©{¸TÑ/Að ÈTó ðD ñ
Ø�e—l‘lÑ#ð
à�c˜EŸL™LÑ(Ñ)ð
ð ð
ð 
ˆ$ˆu�|‰|Ñ
Ñó	
ñ@ ˆC�vÔ€ð ñ`GØð`Gà�c˜EŸL™LÑ(Ñ)ð`Gð ð`Gð 
ˆ!�Wô	`Gr   