Ë
    g^(h  ã                   óž   — U d dl 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y)é    )ÚOptionalN)Ú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y)Ú_FunctionalAdamÚparamsÚlrÚbetasÚepsÚweight_decayÚamsgradÚmaximizeÚforeachÚfusedÚ_allow_empty_param_listc                 óf  — 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                  j                  t        t        j                  t        t        t        j                  f   f   i «      | _        t        |«      dk(  r|
st        d«      ‚d|i| _        y )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ÚannotateÚdictr   ÚstrÚstateÚlenÚparam_group)Úselfr	   r
   r   r   r   r   r   r   r   r   s              úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributed/optim/functional_adam.pyÚ__init__z_FunctionalAdam.__init__   sJ  € ô 	;ÀaÕHØ�bŠyÜÐ6°r°dÐ;Ó<Ð<Ø�cŠzÜÐ6°s°eÐ<Ó=Ð=Ø�e˜A‘hÔ$ Ô$ÜÐBÀ5ÈÁ8À*ÐMÓNÐNØ�e˜A‘hÔ$ Ô$ÜÐBÀ5ÈÁ8À*ÐMÓNÐNØ�lÒ"ÜÐ;¸L¸>ÐJÓKÐKð ØØ˜1‘XØ˜1‘XØ(ñ
ˆŒð ˆŒØ ˆŒØˆŒØˆŒ
Ü—Y‘Y×'Ñ'¬¬U¯\©\¼4ÄÄUÇ\Á\Ð@QÑ;RÐ-RÑ(SÐUWÓXˆŒ
äˆv‹;˜!ÒÑ$;ÜÐDÓEÐEð % fÐ-ˆÕó    ÚparamÚgradc                 óf  — g }g }g }g }g }g }t        j                  |«      }	|�"|j                  |«       |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                  |   }
|j                  |
d   «       |j                  |
d   «       | j                  r|j                  |
d   «       |j                  |
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«       y# 1 sw Y   yxY w)zo
        Similar to step, but operates on a single parameter and optionally a
        gradient tensor.
        Nr   Ústep©Úmemory_formatÚexp_avgÚ
exp_avg_sqÚmax_exp_avg_sqr   r   r
   r   r   ©r   Úhas_complexr   r   r   r
   r   r   r   r   Ú
grad_scaleÚ	found_inf)r   Ú
is_complexÚappendr!   ÚtensorÚ
zeros_likeÚpreserve_formatr   Úno_gradÚFÚadamr   r   r   r   )r$   r(   r)   Úparams_with_gradÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsr2   r!   s              r%   Ú
step_paramz_FunctionalAdam.step_paramG   s÷  € ð
 ÐØˆØˆØˆØˆØ$&ˆÜ×&Ñ& uÓ-ˆØÐØ×#Ñ# EÔ*Ø�L‰L˜ÔØ˜Ÿ
™
Ñ"Ø "ˆD�J‰J�uÑØ—J‘J˜uÑ%ˆEÜ!ŸL™L¨Ó-ˆE�&‰MÜ$×/Ñ/Ø¤U×%:Ñ%:ô ˆE�)Ñô #(×"2Ñ"2Ø¤U×%:Ñ%:ô#ˆE�,Ñð �|Š|Ü*/×*:Ñ*:Ø¬×)>Ñ)>ô+�Ð&Ñ'ð —
‘
˜5Ñ!ˆØ�‰˜˜iÑ(Ô)Ø×Ñ˜5 Ñ.Ô/à�<Š<Ø×"Ñ" 5Ð)9Ñ#:Ô;à×Ñ˜5 ™=Ô)Ü�]‰]‹_ñ 	Ü�F‰FØ ØØØØØØŸ™Ø'ØŸ™Ø—m‘m GÑ,Ø—m‘m GÑ,Ø—=‘= Ñ&Ø!Ÿ]™]¨>Ñ:Ø—M‘M %Ñ(ØŸ™Ø—j‘jØØõ%÷	÷ 	ñ 	ús   ÆBH'È'H0Ú	gradientsc                 óX  — | j                   d   }g }g }g }g }g }g }d}	t        |«      t        |«      k7  r*t        ddt        |«      › d�z   dt        |«      › �z   «      ‚t        | j                   d   |«      D �]v  \  }
}|€Œ
|	t	        j
                  |
«      z  }	|j                  |
«       |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                  |
   }|j                  |d
   «       |j                  |d   «       | j                  r|j                  |d   «       |j                  |d   «       �Œy t	        j                  «       5  t        j                  ||||||| j                  |	| j                  | j                   d   | j                   d   | j                   d   | j                   d   | j                   d   | j"                  | j$                  d d ¬«       d d d «       y # 1 sw Y   y xY w)Nr	   FzEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: r   r+   r,   r.   r/   r0   r   r   r
   r   r   r1   )r#   r"   r   Úzipr   r5   r6   r!   r7   r8   r9   r   r:   r;   r<   r   r   r   r   )r$   rD   r	   r=   r>   r?   r@   rA   rB   r2   r(   Úgradientr!   s                r%   r+   z_FunctionalAdam.stepƒ   sƒ  € Ø×!Ñ! (Ñ+ˆØÐØˆØˆØˆØˆØ$&ˆØˆäˆv‹;œ#˜i›.Ò(ÜØWØ#¤C¨£K =°Ð3ñ4à&¤s¨9£~Ð&6Ð7ñ8óð ô  # 4×#3Ñ#3°HÑ#=¸yÓIó  	2‰OˆE�8ØÑ#Øœu×/Ñ/°Ó6Ñ6�Ø ×'Ñ'¨Ô.Ø—‘˜XÔ&à §
¡
Ñ*Ø(*�D—J‘J˜uÑ%Ø ŸJ™J uÑ-�EÜ$)§L¡L°Ó$5�E˜&‘Mä',×'7Ñ'7Ø¬U×-BÑ-Bô(�E˜)Ñ$ô +0×*:Ñ*:Ø¬U×-BÑ-Bô+�E˜,Ñ'ð —|’|ä27×2BÑ2BØ!´×1FÑ1Fô3˜Ð.Ñ/ð Ÿ
™
 5Ñ)�à—‘  iÑ 0Ô1Ø×"Ñ" 5¨Ñ#6Ô7à—<’<Ø#×*Ñ*¨5Ð1AÑ+BÔCà×"Ñ" 5¨¡=Ö1ðA 	2ôD �]‰]‹_ñ 	Ü�F‰FØ ØØØØØØŸ™Ø'ØŸ™Ø—m‘m GÑ,Ø—m‘m GÑ,Ø—=‘= Ñ&Ø!Ÿ]™]¨>Ñ:Ø—M‘M %Ñ(ØŸ™Ø—j‘jØØõ%÷	÷ 	ñ 	ús   ÈBJ Ê J)N)	gü©ñÒMbP?)gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?g:Œ0âŽyE>r   FFFFF)Ú__name__Ú
__module__Ú__qualname__Úlistr   ÚfloatÚtupleÚboolr&   r   rC   r+   © r'   r%   r   r      sÅ   „ ð
 Ø%1ØØ!ØØØØØ(-ñ+.à�V‘ð+.ð ð+.ð �U˜E�\Ñ"ð	+.ð
 ð+.ð ð+.ð ð+.ð ð+.ð ð+.ð ð+.ð "&ó+.ðZ: ð :¨h°vÑ.>ó :ðxG˜d 8¨FÑ#3Ñ4ô Gr'   r   )Útypingr   r   Útorch.optim._functionalÚoptimÚ_functionalr;   r   Ú,torch.distributed.optim._deprecation_warningr   r   rK   r    Ú__annotations__r   Úscriptr   rO   r'   r%   ú<module>rW      sO   ðæ ã ß #Ð #Ý õð
 €ˆˆc‰Ó ð ‡�×Ñ÷qð qó ñqr'   