§
    W’j
  ã                   ó’   — U 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 )é    N)Ú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dz  fd„Zdeedz           fd„Z	dS )Ú_FunctionalSGDç{®Gáz„?ç        FÚparamsÚlrÚmomentumÚ	dampeningÚweight_decayÚnesterovÚmaximizeÚforeachÚfusedÚ_allow_empty_param_listc                 ó€  — t          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)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              úk/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/distributed/optim/functional_sgd.pyÚ__init__z_FunctionalSGD.__init__   sº   € õ 	;ÀaÐHÑHÔHÐHàØ Ø"Ø(ð	
ð 
ˆŒð !ˆŒØ ˆŒØˆŒØˆŒ
Ý”Y×'Ò'­­U¬\½4ÅÅUÄ\Ð@QÔ;RÐ-RÔ(SÐUWÑXÔXˆŒ
åˆv‰;Œ;˜!ÒÐÐ$;ÐÝÐDÑEÔEÐEð % fÐ-ˆÔÐÐó    ÚparamÚgradNc                 ó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_param:   s¶  € ð ”} ^Ô4ˆØ”= Ô,ˆØ”M +Ô.ˆ	ØŒ]˜4Ô ˆØˆØ46ÐØˆàˆØÐØ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/   r0   r1   r   r   r   r   Ú	enumerate)r!   r5   r
   Úparams_with_gradr3   r2   r   r   r   r   r*   r%   Úgradientr   ÚiÚpr(   s                    r"   Ústepz_FunctionalSGD.stepl   sj  € ØÔ! (Ô+ˆØÐØˆØ46ÐØŒ]˜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)	r   r	   r	   r	   FFFFF)
Ú__name__Ú
__module__Ú__qualname__Úlistr   ÚfloatÚboolr#   r4   r=   © r$   r"   r   r      sü   € € € € € ð
 ØØØ!ØØØØØ(-ð.ð .àV”ð.ð ð.ð ð	.ð
 ð.ð ð.ð ð.ð ð.ð ð.ð ð.ð "&ð.ð .ð .ð .ðB07 ð 07¨f°t©mð 07ð 07ð 07ð 07ðd9;˜d 6¨D¡=Ô1ð 9;ð 9;ð 9;ð 9;ð 9;ð 9;r$   r   )r   Útorch.optim._functionalÚoptimÚ_functionalr0   r   Ú,torch.distributed.optim._deprecation_warningr   r   rA   r   Ú__annotations__r   Úscriptr   rD   r$   r"   ú<module>rK      sÁ   ðð €€€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð
 €ˆˆcŒÐ Ð Ñ ð „ÔðM;ð M;ð M;ð M;ð M;ñ M;ô M;ñ ÔðM;ð M;ð M;r$   