§
    Ÿ²ÅjW  ã                   óª   — U d dl mZmZmZmZ d dlZd dlmc mZ	 d dlm
Z
 d dlmZ g Zee         ed<   ej        j         G d„ d¦  «        ¦   «         ZdS )é    )ÚDictÚListÚOptionalÚTupleN)ÚTensor)Ú2_scripted_functional_optimizer_deprecation_warningÚ__all__c                   ó®   — e Zd Z	 	 	 	 	 	 	 	 	 ddee         dedeeef         d	ed
edededededefd„Zdede	e         fd„Z
dee	e                  fd„ZdS )Ú_FunctionalAdamWçü©ñÒMbP?©gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?ç:Œ0âŽyE>ç{®Gáz„?FÚparamsÚlrÚbetasÚepsÚweight_decayÚamsgradÚmaximizeÚforeachÚfusedÚ_allow_empty_param_listc                 óÞ  — t          d¬¦  «         d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|d         cxk    rdk     sn t          d|d         › �¦  «        ‚d|d	         cxk    rdk     sn t          d
|d	         › �¦  «        ‚d|k    st          d|› �¦  «        ‚|||d         |d	         |dœ| _        || _        || _        || _        |	| _        t          j         	                    t          t          j        t          t          t          j        f         f         i ¦  «        | _        t          |¦  «        dk    r|
st          d¦  «        ‚d|i| _        d S )Né   )Ú
stacklevelç        zInvalid learning rate: zInvalid epsilon value: r   g      ð?z#Invalid beta parameter at index 0: é   z#Invalid beta parameter at index 1: zInvalid weight_decay value: )r   r   Úbeta1Úbeta2r   z%optimizer got an empty parameter listr   )r   Ú
ValueErrorÚdefaultsr   r   r   r   ÚtorchÚjitÚannotater   r   ÚstrÚstateÚlenÚparam_group)Úselfr   r   r   r   r   r   r   r   r   r   s              úYC:\Projects\Historical\venv\Lib\site-packages\torch/distributed/optim/functional_adamw.pyÚ__init__z_FunctionalAdamW.__init__   s¥  € õ 	;ÀaÐHÑHÔHÐHØ�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<Ø�cŠzˆzÝÐ<°sÐ<Ð<Ñ=Ô=Ð=Ø�e˜A”hÐ$Ð$Ò$Ð$ Ò$Ð$Ð$Ð$ÝÐMÀ5ÈÄ8ÐMÐMÑNÔNÐNØ�e˜A”hÐ$Ð$Ò$Ð$ Ò$Ð$Ð$Ð$ÝÐMÀ5ÈÄ8ÐMÐMÑNÔNÐNØ�lÒ"Ð"ÝÐJ¸LÐJÐJÑKÔKÐKð ØØ˜1”XØ˜1”XØ(ð
ð 
ˆŒð ˆŒØ ˆŒØˆŒØˆŒ
Ý”Y×'Ò'­­U¬\½4ÅÅUÄ\Ð@QÔ;RÐ-RÔ(SÐUWÑXÔXˆŒ
åˆv‰;Œ;˜!ÒÐÐ$;ÐÝÐDÑEÔEÐEð % fÐ-ˆÔÐÐó    ÚparamÚgradc                 ó&  — g }g }g }g }g }g }t          j        |¦  «        }	|�*|                     |¦  «         |                     |¦  «         || j        vrži | j        |<   | j        |         }
t          j        d¦  «        |
d<   t          j        |t           j        ¬¦  «        |
d<   t          j        |t           j        ¬¦  «        |
d<   | j        r#t          j        |t           j        ¬¦  «        |
d<   | j        |         }
|                     |
d         ¦  «         |                     |
d         ¦  «         | j        r|                     |
d         ¦  «         |                     |
d         ¦  «         t          j        ¦   «         5  t          j
        ||||||| j        | j        | j        d         | j        d         | j        d	         | j        d
         | j        d         | j        | j        d d |	¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   Ústep©Úmemory_formatÚexp_avgÚ
exp_avg_sqÚmax_exp_avg_sqr   r    r   r   r   ©r   r   r   r    r   r   r   r   r   Ú
grad_scaleÚ	found_infÚhas_complex)r#   Ú
is_complexÚappendr'   ÚtensorÚ
zeros_likeÚpreserve_formatr   Úno_gradÚFÚadamwr   r"   r   r   )r*   r.   r/   Úparams_with_gradÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsr:   r'   s              r+   Ú
step_paramz_FunctionalAdamW.step_paramG   st  € ØÐØˆØˆØˆØˆØ$&ˆÝÔ& uÑ-Ô-ˆØÐØ×#Ò# EÑ*Ô*Ð*Ø�LŠL˜ÑÔÐà˜œ
Ð"Ð"Ø "ˆDŒJ�uÑØ”J˜uÔ%ˆEÝ!œL¨Ñ-Ô-ˆE�&‰Må$Ô/Ø¥UÔ%:ð ñ  ô  ˆE�)Ñõ #(Ô"2Ø¥UÔ%:ð#ñ #ô #ˆE�,Ñð Œ|ð å*/Ô*:Ø­Ô)>ð+ñ +ô +�Ð&Ñ'ð ”
˜5Ô!ˆà�Š˜˜iÔ(Ñ)Ô)Ð)Ø×Ò˜5 Ô.Ñ/Ô/Ð/àŒ<ð 	<Ø×"Ò" 5Ð)9Ô#:Ñ;Ô;Ð;à×Ò˜5 œ=Ñ)Ô)Ð)ÝŒ]‰_Œ_ð 	ð 	ÝŒGØ ØØØØØØœØœØ”m GÔ,Ø”m GÔ,Ø”= Ô&Ø!œ]¨>Ô:Ø”M %Ô(ØœØ”jØØØ'ð%ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÆA2HÈH
ÈH
Ú	gradientsc                 ó>  — | j         d         }g }g }g }g }g }g }t          |¦  «        t          |¦  «        k    r6t          ddt          |¦  «        › d�z   dt          |¦  «        › �z   ¦  «        ‚d}	t          | j         d         |¦  «        D �]q\  }
}|��h|	t	          j        |
¦  «        z  }	|                     |
¦  «         |                     |¦  «         |
| j        vrži | j        |
<   | j        |
         }t	          j        d¦  «        |d<   t	          j	        |
t          j
        ¬	¦  «        |d
<   t	          j	        |
t          j
        ¬	¦  «        |d<   | j        r#t	          j	        |
t          j
        ¬	¦  «        |d<   | j        |
         }|                     |d
         ¦  «         |                     |d         ¦  «         | j        r|                     |d         ¦  «         |                     |d         ¦  «         �Œst	          j        ¦   «         5  t          j        ||||||| j        | j        | j        d         | j        d         | j        d         | j        d         | j        d         | j        | j        d d |	¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: Fr   r1   r2   r4   r5   r6   r   r    r   r   r   r7   )r)   r(   r!   Úzipr#   r;   r<   r'   r=   r>   r?   r   r@   rA   rB   r   r"   r   r   )r*   rJ   r   rC   rD   rE   rF   rG   rH   r:   r.   Úgradientr'   s                r+   r1   z_FunctionalAdamW.step„   s  € ØÔ! (Ô+ˆØÐØˆØˆØˆØˆØ$&ˆåˆv‰;Œ;�#˜i™.œ.Ò(Ð(ÝØWØ3¥C¨¡K¤KÐ3Ð3Ð3ñ4à7¥s¨9¡~¤~Ð7Ð7ñ8ñô ð ð ˆÝ" 4Ô#3°HÔ#=¸yÑIÔIð  	2ñ  	2‰OˆE�8ØÑ#Ø�uÔ/°Ñ6Ô6Ñ6�Ø ×'Ò'¨Ñ.Ô.Ð.Ø—’˜XÑ&Ô&Ð&à ¤
Ð*Ð*Ø(*�D”J˜uÑ%Ø œJ uÔ-�EÝ$)¤L°Ñ$5Ô$5�E˜&‘Må',Ô'7Ø­UÔ-Bð(ñ (ô (�E˜)Ñ$õ +0Ô*:Ø­UÔ-Bð+ñ +ô +�E˜,Ñ'ð ”|ð å27Ô2BØ!µÔ1Fð3ñ 3ô 3˜Ð.Ñ/ð œ
 5Ô)�à—’  iÔ 0Ñ1Ô1Ð1Ø×"Ò" 5¨Ô#6Ñ7Ô7Ð7à”<ð DØ#×*Ò*¨5Ð1AÔ+BÑCÔCÐCà×"Ò" 5¨¤=Ñ1Ô1Ð1ùåŒ]‰_Œ_ð 	ð 	ÝŒGØ ØØØØØØœØœØ”m GÔ,Ø”m GÔ,Ø”= Ô&Ø!œ]¨>Ô:Ø”M %Ô(ØœØ”jØØØ'ð%ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÈA2JÊJÊJN)	r   r   r   r   FFFFF)Ú__name__Ú
__module__Ú__qualname__r   r   Úfloatr   Úboolr,   r   rI   r1   © r-   r+   r   r      s  € € € € € ð
 Ø%1ØØ"ØØØØØ(-ð+.ð +.à�V”ð+.ð ð+.ð �U˜E�\Ô"ð	+.ð
 ð+.ð ð+.ð ð+.ð ð+.ð ð+.ð ð+.ð "&ð+.ð +.ð +.ð +.ðZ; ð ;¨h°vÔ.>ð ;ð ;ð ;ð ;ðzG˜d 8¨FÔ#3Ô4ð Gð Gð Gð Gð Gð Gr-   r   )Útypingr   r   r   r   r#   Útorch.optim._functionalÚoptimÚ_functionalrA   r   Ú,torch.distributed.optim._deprecation_warningr   r	   r&   Ú__annotations__r$   Úscriptr   rS   r-   r+   ú<module>r[      sä   ðà .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð
 €ˆˆcŒÐ Ð Ñ ð „Ôðrð rð rð rð rñ rô rñ Ôðrð rð rr-   