§
    �Štj]  ã                   óÚ  — 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j!                 dee"ej#        z           dede$e$ej!                          fd„Z% ede¬¦  «        Z&	 d$de&dee"ej#        z           dede$e&         fd „Z'dS )%é    )ÚOrderedDict)ÚIteratorÚSequence)ÚcastÚTYPE_CHECKINGÚTypeVar)ÚTypeIsN©Ú_get_device_index)ÚModule)Úcomm)ÚScriptMethod)ÚScriptModule)ÚEnabledProxyÚ	replicateÚmoduleÚreturnr   c                 ó>   — dd l }t          | |j        j        ¦  «        S ©Nr   )Ú	torch.jitÚ
isinstanceÚjitr   ©r   Útorchs     úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/nn/parallel/replicate.pyÚ_is_script_moduler      s#   € ØÐÐÐå�f˜eœiÔ4Ñ5Ô5Ð5ó    r   c                 ó>   — dd l }t          | |j        j        ¦  «        S r   )r   r   Ú_Cr   r   s     r   Ú_is_script_methodr       s#   € ØÐÐÐå�f˜eœhÔ3Ñ4Ô4Ð4r   c                  ó<   — dd l } | j                             ¦   «         S r   )r   r   r   ©r   s    r   Ú_init_script_moduler#   !   s"   € ØÐÐÐàŒ9×!Ò!Ñ#Ô#Ð#r   r   c                  ó,   — dd l } | j        j        j        S r   )Útorch.jit._stater   Ú_stateÚ_enabledr"   s    r   Ú_is_jit_enabledr(   '   s   € ØÐÐÐàŒ9ÔÔ$Ð$r   Úmemoc                 ó¦  — dt           dt          t                    fd„}t          ¦   «         sdS |€t          ¦   «         }|                     | ¦  «         t          | ¦  «        r@|                      || ¦  «        ¦  «         t          d„  || ¦  «        D ¦   «         ¦  «        S |                      ¦   «         D ]}||v rŒt          ||¦  «        s dS ŒdS )Nr   r   c                 óL   — |                       ¦   «         }t          |¦  «         |S ©N)ÚmodulesÚnext)r   Úgens     r   Údescendant_modulesz0_replicatable_module.<locals>.descendant_modules6   s!   € Ø�nŠnÑÔˆÝˆS‰	Œ	ˆ	Øˆ
r   Tc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r,   )r   )Ú.0Ú
descendants     r   ú	<genexpr>z'_replicatable_module.<locals>.<genexpr>D   s<   è è € ð 
ð 
Ø.8Õ˜jÑ)Ô)ð
ð 
ð 
ð 
ð 
ð 
r   F)
r   r   r(   ÚsetÚaddr   ÚupdateÚallÚchildrenÚ_replicatable_module)r   r)   r0   Úchilds       r   r:   r:   4   s  € ð¥6ð ­hµvÔ.>ð ð ð ð õ
 ÑÔð ØˆtØ€|Ý‰uŒuˆð 	‡H‚HˆVÑÔÐÝ˜Ñ Ô ð 
Ø�ŠÐ&Ð& vÑ.Ô.Ñ/Ô/Ð/Ýð 
ð 
Ø<NÐ<NÈvÑ<VÔ<Vð
ñ 
ô 
ñ 
ô 
ð 	
ð —’Ñ"Ô"ð ð ˆð �Dˆ=ˆ=ØÝ# E¨4Ñ0Ô0ð 	Ø�5�5ð	ð ˆ4r   FÚtensorsÚdevicesÚdetachc                 ó„  ‡ ‡	— ddl m} t          ‰ ¦  «        dk    rg S |r\d„ ‰ D ¦   «         }t          j        ‰ |¦  «        }|D ]6}t          |¦  «        D ]$\  }}|rt          j        ||         ¦  «        ||<   Œ%Œ7|S  |j        |g‰ ¢R Ž Š	ˆ	ˆ fd„t          dt          ‰	¦  «        t          ‰ ¦  «        ¦  «        D ¦   «         S )Nr   )Ú	Broadcastc                 óv   — g | ]6}t          |t          j        j        ¦  «         o|                     ¦   «         ‘Œ7S © )r   r   ÚnnÚUninitializedParameterÚ
is_complex)r2   Úts     r   ú
<listcomp>z0_broadcast_coalesced_reshape.<locals>.<listcomp>^   sG   € ð 
ð 
ð 
àõ ˜1�eœhÔ=Ñ>Ô>Ð>ÐQÀ1Ç<Â<Á>Ä>ð
ð 
ð 
r   c           
      ó^   •— g | ])}t          ‰||t          ‰¦  «        z   …         ¦  «        ‘Œ*S rB   )ÚlistÚlen)r2   ÚiÚtensor_copiesr<   s     €€r   rG   z0_broadcast_coalesced_reshape.<locals>.<listcomp>m   sF   ø€ ð 
ð 
ð 
àõ �˜q 1¥s¨7¡|¤|Ñ#3Ð3Ô4Ñ5Ô5ð
ð 
ð 
r   )
Útorch.nn.parallel._functionsr@   rJ   r   Úbroadcast_coalescedÚ	enumerater   Úview_as_complexÚapplyÚrange)
r<   r=   r>   r@   Úcomplex_maskÚoutputsÚdevice_outputsrK   rE   rL   s
   `        @r   Ú_broadcast_coalesced_reshaperV   S   s*  øø€ ð
 7Ð6Ð6Ð6Ð6Ð6å
ˆ7�|„|�qÒÐØˆ	àð 
ð
ð 
àð
ñ 
ô 
ˆõ
 Ô*¨7°GÑ<Ô<ˆà%ð 	Qð 	QˆNÝ!*¨<Ñ!8Ô!8ð Qð Q‘��:Øð QÝ(-Ô(=¸nÈQÔ>OÑ(PÔ(P�N 1Ñ%øðQð ˆà'˜	œ¨Ð:°'Ð:Ð:Ð:ˆð
ð 
ð 
ð 
ð 
å˜1�c -Ñ0Ô0µ#°g±,´,Ñ?Ô?ð
ñ 
ô 
ð 	
r   ÚT)ÚboundÚnetworkc           	      óÄ  ‡— t          | ¦  «        st          d¦  «        ‚|sg S d„ |D ¦   «         }t          |¦  «        }t          |                      ¦   «         ¦  «        }d„ t          |¦  «        D ¦   «         }t          |||¦  «        }t          |                      ¦   «         ¦  «        }g }g }	|D ]6}
|
j        r|s| 	                    |
¦  «         Œ!|	 	                    |
¦  «         Œ7d„ t          |¦  «        D ¦   «         }d„ t          |	¦  «        D ¦   «         }t          |||¬¦  «        }t          |	|d¬¦  «        }t          |  
                    ¦   «         ¦  «        }d„ |D ¦   «         Ši }t          |¦  «        D ]^\  }}|||<   t          |¦  «        D ]D}|                     ¦   «         }t          ¦   «         |_        ‰|          	                    |¦  «         ŒEŒ_t          |¦  «        D �]Û\  }}|j                             ¦   «         D ]w\  }}|€+t          |¦  «        D ]}‰|         |         }d |j        |<   ŒŒ2||         }t          |¦  «        D ]-}‰|         |         }t#          ||‰|         |         ¦  «         Œ.Œx|j                             ¦   «         D ]ƒ\  }}|€+t          |¦  «        D ]}‰|         |         }d |j        |<   ŒŒ2||         }t          |¦  «        D ]9}‰|         |         }||         |         }t#          |||¦  «         ||j        |<   Œ:Œ„|j                             ¦   «         D ]�\  }}
|
€+t          |¦  «        D ]}‰|         |         }d |j        |<   ŒŒ2|
j        r|s|}||
         }n
|}||
         }t          |¦  «        D ]-}‰|         |         }t#          ||||         |         ¦  «         Œ.ŒŽ�ŒÝˆfd	„t          |¦  «        D ¦   «         S )
NzJCannot replicate network where python modules are children of ScriptModulec                 ó.   — g | ]}t          |d ¦  «        ‘ŒS )Tr
   )r2   Úxs     r   rG   zreplicate.<locals>.<listcomp>ƒ   s#   € Ð;Ð;Ð;¨aÕ   DÑ)Ô)Ð;Ð;Ð;r   c                 ó   — i | ]\  }}||“Œ	S rB   rB   )r2   ÚidxÚparams      r   ú
<dictcomp>zreplicate.<locals>.<dictcomp>‡   s   € ÐDÐDÐD¡J C¨�U˜CÐDÐDÐDr   c                 ó   — i | ]\  }}||“Œ	S rB   rB   ©r2   r^   Úbufs      r   r`   zreplicate.<locals>.<dictcomp>“   s   € ÐHÐHÐH¡h c¨3˜˜cÐHÐHÐHr   c                 ó   — i | ]\  }}||“Œ	S rB   rB   rb   s      r   r`   zreplicate.<locals>.<dictcomp>”   s   € ÐPÐPÐP©(¨#¨s˜S #ÐPÐPÐPr   )r>   Tc                 ó   — g | ]}g ‘ŒS rB   rB   )r2   Ú_s     r   rG   zreplicate.<locals>.<listcomp>œ   s   € Ð(=Ð(=Ð(=°¨Ð(=Ð(=Ð(=r   c                 óR   •— g | ]#}t          t          ‰|         d          ¦  «        ‘Œ$S )r   )r   rW   )r2   ÚjÚmodule_copiess     €r   rG   zreplicate.<locals>.<listcomp>Ö   s-   ø€ ÐFÐFÐF¨Q�D•�M !Ô$ QÔ'Ñ(Ô(ÐFÐFÐFr   )r:   ÚRuntimeErrorrJ   rI   Ú
parametersrO   rV   ÚbuffersÚrequires_gradÚappendr-   rR   Ú_replicate_for_data_parallelr   Ú_former_parametersÚ_modulesÚitemsÚsetattrÚ_parametersÚ_buffers)rY   r=   r>   Únum_replicasÚparamsÚparam_indicesÚparam_copiesrl   Ú
buffers_rgÚbuffers_not_rgrc   Úbuffer_indices_rgÚbuffer_indices_not_rgÚbuffer_copies_rgÚbuffer_copies_not_rgr-   Úmodule_indicesrK   r   rh   ÚreplicaÚkeyr;   Ú
module_idxr_   Ú	param_idxÚ
param_copyÚbuffer_copiesÚ
buffer_idxri   s                                @r   r   r   v   sá  ø€ õ
   Ñ(Ô(ð 
ÝØXñ
ô 
ð 	
ð ð Øˆ	à;Ð;°7Ð;Ñ;Ô;€GÝ�w‘<”<€Lå�'×$Ò$Ñ&Ô&Ñ'Ô'€FØDÐDµ)¸FÑ2CÔ2CÐDÑDÔD€MÝ/°¸ÀÑHÔH€Lå�7—?’?Ñ$Ô$Ñ%Ô%€GØ%'€JØ)+€NØð 'ð 'ˆØÔð 	' Vð 	'Ø×Ò˜cÑ"Ô"Ð"Ð"à×!Ò! #Ñ&Ô&Ð&Ð&àHÐHµ)¸JÑ2GÔ2GÐHÑHÔHÐØPÐPµiÀÑ6OÔ6OÐPÑPÔPÐå3°JÀÐPVÐWÑWÔWÐÝ7Ø˜¨ðñ ô Ðõ �7—?’?Ñ$Ô$Ñ%Ô%€GØ(=Ð(=°WÐ(=Ñ(=Ô(=€MØ(*€Nå˜wÑ'Ô'ð -ð -‰	ˆˆ6Ø!"ˆ�vÑÝ�|Ñ$Ô$ð 		-ð 		-ˆAØ×9Ò9Ñ;Ô;ˆGõ *5©¬ˆGÔ&à˜!Ô×#Ò# GÑ,Ô,Ð,Ð,ð		-õ ˜wÑ'Ô'ð (Hñ (H‰	ˆˆ6Ø œ/×/Ò/Ñ1Ô1ð 		Hð 		H‰JˆC�Øˆ}Ý˜|Ñ,Ô,ð 1ð 1�AØ+¨AÔ.¨qÔ1�GØ,0�GÔ$ SÑ)Ð)ð1ð ,¨EÔ2�
Ý˜|Ñ,Ô,ð Hð H�AØ+¨AÔ.¨qÔ1�GÝ˜G S¨-¸Ô*:¸:Ô*FÑGÔGÐGÐGðHð !Ô,×2Ò2Ñ4Ô4ð 	Að 	A‰JˆC�Øˆ}Ý˜|Ñ,Ô,ð 4ð 4�AØ+¨AÔ.¨qÔ1�GØ/3�GÔ'¨Ñ,Ð,ð4ð *¨%Ô0�	Ý˜|Ñ,Ô,ð Að A�AØ+¨AÔ.¨qÔ1�GØ!-¨a¤°Ô!;�Jõ ˜G S¨*Ñ5Ô5Ð5à6@�GÔ.¨sÑ3Ð3ðAð œ×-Ò-Ñ/Ô/ð 	Hð 	H‰HˆC�Øˆ{Ý˜|Ñ,Ô,ð 1ð 1�AØ+¨AÔ.¨qÔ1�GØ,0�GÔ$ SÑ)Ð)ð1ð Ô$ð <¨Vð <Ø$4�MØ!2°3Ô!7�J�Jà$8�MØ!6°sÔ!;�JÝ˜|Ñ,Ô,ð Hð H�AØ+¨AÔ.¨qÔ1�GÝ˜G S¨-¸Ô*:¸:Ô*FÑGÔGÐGÐGðHñ	Hð  GÐFÐFÐFµ%¸Ñ2EÔ2EÐFÑFÔFÐFr   )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(   r5   Úboolr:   ÚTensorÚintÚdevicerI   rV   rW   r   rB   r   r   ú<module>r–      s  ðØ #Ð #Ð #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø $Ð $Ð $Ð $Ð $Ð $à €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø #Ð #Ð #Ð #Ð #Ð #Ø "Ð "Ð "Ð "Ð "Ð "ð ð .Ø%Ð%Ð%Ð%Ð%Ð%Ø&Ð&Ð&Ð&Ð&Ð&Ø-Ð-Ð-Ð-Ð-Ð-ð ˆ-€ð6˜fð 6¨°Ô)?ð 6ð 6ð 6ð 6ð5˜fð 5¨°Ô)?ð 5ð 5ð 5ð 5ð$ð $ð $ð $ð%ð %ð %ð %ðð  ð ¨s°6¬{¸TÑ/Að ÈTð ð ð ð ðD ð
ð 
Ø�e”lÔ#ð
à�c˜EœLÑ(Ô)ð
ð ð
ð 
ˆ$ˆuŒ|Ô
Ôð	
ð 
ð 
ð 
ð@ €GˆC�vÐÑÔ€ð ð`Gð `GØð`Gà�c˜EœLÑ(Ô)ð`Gð ð`Gð 
ˆ!„Wð	`Gð `Gð `Gð `Gð `Gð `Gr   