Ë
    g^(h2  ã                   óž   — 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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)Ú_FunctionalSGDÚparamsÚlrÚmomentumÚ	dampeningÚweight_decayÚnesterovÚmaximizeÚforeachÚfusedÚ_allow_empty_param_listc                 ób  — t        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)r
   r   r   r   r   z%optimizer got an empty parameter listr	   )r   Údefaultsr   r   r   r   ÚtorchÚjitÚannotateÚdictr   ÚstrÚstateÚlenÚ
ValueErrorÚparam_group)Úselfr	   r
   r   r   r   r   r   r   r   r   s              úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributed/optim/functional_sgd.pyÚ__init__z_FunctionalSGD.__init__   sž   € ô 	;ÀaÕHàØ Ø"Ø(ñ	
ˆŒð !ˆŒØ ˆŒØˆŒØˆŒ
Ü—Y‘Y×'Ñ'¬¬U¯\©\¼4ÄÄUÇ\Á\Ð@QÑ;RÐ-RÑ(SÐUWÓXˆŒ
äˆv‹;˜!ÒÑ$;ÜÐDÓEÐEð % fÐ-ˆÕó    ÚparamÚgradc                 óœ  — | j                   d   }| j                   d   }| j                   d   }| j                   d   }|g}g }g }	d}
|�u|	j                  |«       |j                  rd}
|| j                  vri | j                  |<   | j                  |   }d|vr|j                  d«       n|j                  |d   «       t	        j
                  «       5  t        j                  ||	|||||| j                  | j                  |
| j                  | j                  dd¬	«       ddd«       | j                  |   }|d
   }|�||d<   yy# 1 sw Y   Œ&xY w)z[Similar to self.step, but operates on a single parameter and
        its gradient.
        r   r   r   r
   FNTÚmomentum_buffer©r   r   r
   r   r   r   Úhas_sparse_gradr   r   Ú
grad_scaleÚ	found_infr   )r   ÚappendÚ	is_sparser   r   Úno_gradÚFÚsgdr   r   r   r   )r    r$   r%   r   r   r   r
   r	   Úmomentum_buffer_listÚgradsr)   r   r'   s                r!   Ú
step_paramz_FunctionalSGD.step_param;   sW  € ð —}‘} ^Ñ4ˆØ—=‘= Ñ,ˆØ—M‘M +Ñ.ˆ	Ø�]‰]˜4Ñ ˆØ�ˆØ79ÐØˆàˆØÐØ�L‰L˜ÔØ�~Š~Ø"&�Ø˜DŸJ™JÑ&Ø$&�—
‘
˜5Ñ!Ø—J‘J˜uÑ%ˆEØ ¨Ñ-Ø$×+Ñ+¨DÕ1à$×+Ñ+¨EÐ2CÑ,DÔEä�]‰]‹_ñ 	Ü�E‰EØØØ$Ø)Ø!ØØ#ØŸ™ØŸ™Ø /ØŸ™Ø—j‘jØØõ÷	ð$ —
‘
˜5Ñ!ˆØ.¨qÑ1ˆØÐ&Ø'6ˆEÐ#Ò$ð '÷)	ð 	ús   ÃAEÅEÚ	gradientsc                 ó¬  — | j                   d   }g }g }g }| j                  d   }| j                  d   }| j                  d   }| j                  d   }	t        |«      t        |«      k7  r*t        ddt        |«      › d�z   d	t        |«      › �z   «      ‚d
}
t	        ||«      D ]Ž  \  }}|€Œ	|j                  |«       |j                  |«       |j                  rd}
|| j                  vri | j                  |<   | j                  |   }d|vr|j                  d «       Œ{|j                  |d   «       Œ� t        j                  «       5  t        j                  |||||||	| j                  | j                  |
| j                  | j                  d d ¬«       d d d «       t!        |«      D ]!  \  }}| j                  |   }||   }|€Œ||d<   Œ# y # 1 sw Y   Œ9xY w)Nr	   r
   r   r   r   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: FTr'   r(   )r   r   r   r   Úzipr,   r-   r   r   r.   r/   r0   r   r   r   r   Ú	enumerate)r    r4   r	   Úparams_with_gradr2   r1   r
   r   r   r   r)   r$   Úgradientr   ÚiÚpr'   s                    r!   Ústepz_FunctionalSGD.stepm   sð  € Ø×!Ñ! (Ñ+ˆØÐØˆØ79ÐØ�]‰]˜4Ñ ˆØ—}‘} ^Ñ4ˆØ—=‘= Ñ,ˆØ—M‘M +Ñ.ˆ	äˆv‹;œ#˜i›.Ò(ÜØWØ#¤C¨£K =°Ð3ñ4à&¤s¨9£~Ð&6Ð7ñ8óð ð  ˆÜ" 6¨9Ó5ò 	J‰OˆE�8ØÑ#Ø ×'Ñ'¨Ô.Ø—‘˜XÔ&Ø×%Ò%Ø&*�Oà §
¡
Ñ*Ø(*�D—J‘J˜uÑ%àŸ
™
 5Ñ)�Ø$¨EÑ1Ø(×/Ñ/°Õ5à(×/Ñ/°Ð6GÑ0HÕIð	Jô  �]‰]‹_ñ 	Ü�E‰EØ ØØ$Ø)Ø!ØØ#ØŸ™ØŸ™Ø /ØŸ™Ø—j‘jØØõ÷	ô& Ð.Ó/ò 	;‰DˆAˆqØ—J‘J˜q‘MˆEØ2°1Ñ5ˆOØÑ*Ø+:�Ð'Ò(ñ		;÷'	ð 	ús   ÅAG
Ç
GN)	g{®Gáz„?ç        r=   r=   FFFFF)Ú__name__Ú
__module__Ú__qualname__Úlistr   ÚfloatÚboolr"   r   r3   r<   © r#   r!   r   r      sº   „ ð
 ØØØ!ØØØØØ(-ñ.à�V‘ð.ð ð.ð ð	.ð
 ð.ð ð.ð ð.ð ð.ð ð.ð ð.ð "&ó.ðB07 ð 07¨h°vÑ.>ó 07ðd9;˜d 8¨FÑ#3Ñ4ô 9;r#   r   )Útypingr   r   Útorch.optim._functionalÚoptimÚ_functionalr/   r   Ú,torch.distributed.optim._deprecation_warningr   r   rA   r   Ú__annotations__r   Úscriptr   rD   r#   r!   ú<module>rL      sO   ðæ ã ß #Ð #Ý õð
 €ˆˆc‰Ó ð ‡�×Ñ÷M;ð M;ó ñM;r#   