Ë
    [^(hK  ã                   óÔ  — d dl mZ d dlmZmZ d dlmZmZ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 e      de!fd„Z"	 d"deejF                     dee
e$ejJ                  f      de!de&e&ejF                        fd„Z' e	de¬«      Z(	 d"de(dee
e$ejJ                  f      de!de&e(   fd„Z)y)#é    )ÚOrderedDict)ÚIteratorÚSequence)ÚcastÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)Ú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     úY/var/www/skyplay_api_hub/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*   r1   Úchilds       r   r;   r;   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} |rt        j                  | |«      S t	        | «      dkD  rO |j
                  |g| ¢­Ž }t        dt	        |«      t	        | «      «      D �cg c]  }|||t	        | «      z    ‘Œ c}S g S c c}w )Nr   )Ú	Broadcast)Útorch.nn.parallel._functionsrA   r   Úbroadcast_coalescedÚlenÚapplyÚrange)r=   r>   r?   rA   Útensor_copiesÚis         r   Ú_broadcast_coalesced_reshaperI   S   s‹   € õ
 7áÜ×'Ñ'¨°Ó9Ð9ô ˆw‹<˜!ÒØ+˜IŸO™O¨GÐ>°gÒ>ˆMô ˜q¤# mÓ"4´c¸'³lÓCöàð ˜a !¤c¨'£lÑ"2Ò3òð ð
 ˆIùòs   Á!A>Ú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 )NzKCannot replicate network where python modules are childrens of ScriptModuleT)r?   r   )r;   ÚRuntimeErrorr   rD   ÚlistÚ
parametersÚ	enumeraterI   ÚbuffersÚrequires_gradÚappendr.   rF   Ú_replicate_for_data_parallelr   Ú_former_parametersÚ_modulesÚitemsÚsetattrÚ_parametersÚ_buffersr   rJ   )!rL   r>   r?   ÚxÚnum_replicasÚparamsÚidxÚparamÚparam_indicesÚparam_copiesrR   Ú
buffers_rgÚbuffers_not_rgÚbufÚbuffer_indices_rgÚbuffer_indices_not_rgÚbuffer_copies_rgÚbuffer_copies_not_rgr.   Ú_Úmodule_copiesÚmodule_indicesrH   r   ÚjÚreplicaÚkeyr<   Ú
module_idxÚ	param_idxÚ
param_copyÚbuffer_copiesÚ
buffer_idxs!                                    r   r   r   k   sW  € ô
   Ô(Üð(ó
ð 	
ñ
 Øˆ	à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   r	   r
   Útyping_extensionsr   r   Útorch._utilsr   Útorch.nn.modulesr   Útorch.nn.parallelr   Útorch._Cr   r   r   r&   r   Ú__all__r   Úobjectr!   r$   r)   r6   Úboolr;   ÚTensorÚintÚdevicerO   rI   rJ   r   © r   r   ú<module>r„      sK  ðÝ #ß .ß @Õ @Ý $ã Ý *Ý #Ý "ñ Ý%Ý&Ý-ð ˆ-€ð6˜fð 6¨°Ñ)?ó 6ð5˜fð 5¨°Ñ)?ó 5ó$ó%ñ ð ¨x¸¸F¹Ñ/Dð ÐPTó ðD ñØ�e—l‘lÑ#ðà�e˜C §¡Ð-Ñ.Ñ/ðð ðð 
ˆ$ˆu�|‰|Ñ
Ñó	ñ* ˆC�vÔ€ð ñaGØðaGà�e˜C §¡Ð-Ñ.Ñ/ðaGð ðaGð 
ˆ!�Wô	aGr   