§
    ×§g€  ã                   óš   — U d dl mZmZmZ d dlZd dlmc mZ d dlm	Z	 g Z
ee         ed<   ej        j         G d„ d¦  «        ¦   «         ZdS )é    )ÚDictÚListÚOptionalN)ÚTensorÚ__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
dS )Ú_FunctionalSGDç{®Gáz„?ç        FÚparamsÚlrÚmomentumÚ	dampeningÚweight_decayÚnesterovÚmaximizeÚforeachÚfusedÚ_allow_empty_param_listc                 ó`  — ||||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)r   r   r   r   r   z%optimizer got an empty parameter listr   )Údefaultsr   r   r   r   ÚtorchÚjitÚannotater   r   ÚstrÚstateÚlenÚ
ValueErrorÚparam_group)Úselfr   r   r   r   r   r   r   r   r   r   s              úb/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/distributed/optim/functional_sgd.pyÚ__init__z_FunctionalSGD.__init__   s©   € ð Ø Ø"Ø(ð	
ð 
ˆŒð !ˆŒØ ˆŒØˆŒØˆŒ
Ý”Y×'Ò'­­U¬\½4ÅÅUÄ\Ð@QÔ;RÐ-RÔ(SÐUWÑXÔXˆŒ
åˆv‰;Œ;˜!ÒÐÐ$;ÐÝÐDÑEÔEÐEð % fÐ-ˆÔÐÐó    ÚparamÚgradc                 óh  — | j         d         }| j         d         }| j         d         }| j         d         }|g}g }g }	d}
|s|	                     |¦  «         |j        rd}
|| j        vr
i | j        |<   | j        |         }d|vr|                     d¦  «         n|                     |d         ¦  «         t	          j        ¦   «         5  t          j        ||	|||||| j        | j	        |
| j
        | j        dd¬	¦  «         ddd¦  «         n# 1 swxY w Y   | j        |         }|d
         }|||d<   dS dS )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_param7   s¶  € ð ”} ^Ô4ˆØ”= Ô,ˆØ”M +Ô.ˆ	ØŒ]˜4Ô ˆØˆØ79ÐØˆàˆØÐØLŠL˜ÑÔÐØŒ~ð 'Ø"&Ø˜DœJÐ&Ð&Ø$&”
˜5Ñ!Ø”J˜uÔ%ˆEØ ¨Ð-Ð-Ø$×+Ò+¨DÑ1Ô1Ð1Ð1à$×+Ò+¨EÐ2CÔ,DÑEÔEÐEåŒ]‰_Œ_ð 	ð 	ÝŒEØØØ$Ø)Ø!ØØ#ØœØœØ /ØœØ”jØØðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð$ ”
˜5Ô!ˆØ.¨qÔ1ˆØÐ&Ø'6ˆEÐ#Ñ$Ð$Ð$ð 'Ð&s   Ã7D	Ä	DÄDÚ	gradientsc                 ó¨  — | j         d         }g }g }g }| j        d         }| j        d         }| j        d         }| j        d         }	t          |¦  «        t          |¦  «        k    r6t          ddt          |¦  «        › dz   d	t          |¦  «        › z   ¦  «        ‚d
}
t	          ||¦  «        D ]\  }}|ˆ|                     |¦  «         |                     |¦  «         |j        rd}
|| j        vr
i | j        |<   | j        |         }d|vr|                     d ¦  «         Œt|                     |d         ¦  «         Œt          j	        ¦   «         5  t          j        |||||||	| j        | j        |
| j        | j        d d ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t!          |¦  «        D ]!\  }}| j        |         }||         }|||d<   Œ"d S )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.stepi   sj  € ØÔ! (Ô+ˆØÐØˆØ79ÐØŒ]˜4Ô ˆØ”} ^Ô4ˆØ”= Ô,ˆØ”M +Ô.ˆ	åˆv‰;Œ;#˜i™.œ.Ò(Ð(ÝØWØ3¥C¨¡K¤KÐ3Ð3Ð3ñ4à7¥s¨9¡~¤~Ð7Ð7ñ8ñô ð ð  ˆÝ" 6¨9Ñ5Ô5ð 	Jð 	J‰OˆE8ØÐ#Ø ×'Ò'¨Ñ.Ô.Ð.Ø—’˜XÑ&Ô&Ð&ØÔ%ð +Ø&*Oà ¤
Ð*Ð*Ø(*D”J˜uÑ%àœ
 5Ô)Ø$¨EÐ1Ð1Ø(×/Ò/°Ñ5Ô5Ð5Ð5à(×/Ò/°Ð6GÔ0HÑIÔIÐIøåŒ]‰_Œ_ð 	ð 	ÝŒEØ ØØ$Ø)Ø!ØØ#ØœØœØ /ØœØ”jØØðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ& Ð.Ñ/Ô/ð 	;ð 	;‰DˆAˆqØ”J˜q”MˆEØ2°1Ô5ˆOØÐ*Ø+:Ð'Ñ(øð		;ð 	;s   Å7FÆFÆFN)	r
   r   r   r   FFFFF)Ú__name__Ú
__module__Ú__qualname__r   r   ÚfloatÚboolr"   r   r3   r<   © r#   r!   r	   r	      sþ   € € € € € ð
 ØØØ!ØØØØØ(-ð.ð .àV”ð.ð ð.ð ð	.ð
 ð.ð ð.ð ð.ð ð.ð ð.ð ð.ð "&ð.ð .ð .ð .ð@07 ð 07¨h°vÔ.>ð 07ð 07ð 07ð 07ðd9;˜d 8¨FÔ#3Ô4ð 9;ð 9;ð 9;ð 9;ð 9;ð 9;r#   r	   )Útypingr   r   r   r   Útorch.optim._functionalÚoptimÚ_functionalr/   r   r   r   Ú__annotations__r   Úscriptr	   rB   r#   r!   ú<module>rI      sÀ   ðà 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ð €ˆˆcŒÐ Ð Ñ ð „ÔðL;ð L;ð L;ð L;ð L;ñ L;ô L;ñ ÔðL;ð L;ð L;r#   