
    IЦi                         % S SK JrJrJr  S SKrS SKJs  Jr  S SKJ	r	  S SK
Jr  / r\\   \S'   \R                  R                    " S S5      5       rg)    )DictListOptionalN)Tensor)2_scripted_functional_optimizer_deprecation_warning__all__c                       \ rS rSr            SS\\   S\S\S\S\S\S\S	\S
\S\S\S\S\4S jjrS\\	\      4S jr
Srg)_FunctionalAdagrad   paramslrlr_decayweight_decayinitial_accumulator_valuewarmup_lr_multiplierwarmup_num_itersepscoalesce_gradforeachfusedmaximize_allow_empty_param_listc                    [        SS9  UUUUUUUS.U l        Xl        Xl        Xl        Xl        [        R                  R                  [        [        R                  [        [        [        R                  4   4   0 5      U l        [        U5      S:X  a  U(       d  [        S5      eSU0U l        U R                  S    HH  n[        R                   " UR"                  U5      [        R$                  " S5      S.U R                  U'   MJ     g )	N   )
stacklevel)r   r   r   r   r   r   r   r   z%optimizer got an empty parameter listr           )sumstep)r   defaultsr   r   r   r   torchjitannotater   r   strstatelen
ValueErrorparam_group	full_likedatatensor)selfr   r   r   r   r   r   r   r   r   r   r   r   r   ps                  i/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/distributed/optim/functional_adagrad.py__init___FunctionalAdagrad.__init__   s      	;aH ()B$8 0
 +
 YY''U\\4U\\@Q;R-R(SUWX
v;!$;DEE %f- !!(+Aqvv/HIS)DJJqM ,    	gradientsc                 R   U R                   S   n/ n/ n/ n/ n[        U5      [        U5      :w  a*  [        SS[        U5       S3-   S[        U5       3-   5      eSu  px[        U R                   S   U5       H  u  pU
c  M
  XzR                  -  nU[
        R                  " U	5      -  nUR                  U	5        UR                  U
5        U R                  U	   nUR                  US   5        UR                  US   5        M     [
        R                  " 5          [        R                  " UUUUU R                  S	   U R                  S
   U R                  S   U R                  S   UU R                  U R                  UU R                  S S S9  S S S 5        g ! , (       d  f       g = f)Nr   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: )FFr   r   r   r   r   r   )r   r   r   r   has_sparse_gradr   r   has_complexr   
grad_scale	found_inf)r'   r%   r&   zip	is_sparser    
is_complexappendr$   no_gradFadagradr   r   r   r   )r+   r1   r   params_with_gradgrads
state_sumsstate_stepsr3   r4   paramgradientr$   s               r-   r   _FunctionalAdagrad.stepI   s   !!(+
$&v;#i.(W#CK=34&s9~&678  (4$"4#3#3H#=yIOE##5#55u//66 ''.X&

5)!!%,/""5=1  J ]]_II==&!]]>:z2MM%( /'jj __s   A5F
F&)r   r   r   r   r   r'   r$   N)g{Gz?r   r   r   g      ?r   g|=TFFFF)__name__
__module____qualname____firstlineno__r   r   floatboolr.   r   r   __static_attributes__ r0   r-   r
   r
      s    
 !+.&)"%"(--V- - 	-
 - $)- $-  - - - - - - "&-^*d8F#34 *r0   r
   )typingr   r   r   r    torch.optim._functionaloptim_functionalr<   r   ,torch.distributed.optim._deprecation_warningr   r   r#   __annotations__r!   scriptr
   rL   r0   r-   <module>rT      sR    ' '  # # 
 c  Z Z Zr0   