
    ק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dededefdZdeee                  fdZ	dS )_FunctionalAdagrad{Gz?              ?绽|=TF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                    |||||||d| _         |	| _        |
| _        || _        || _        t
          j                            t          t
          j	        t          t          t
          j	        f         f         i           | _        t          |          dk    r|st          d          d|i| _        | j        d         D ]9}t          j        |j        |          t          j        d          d| j        |<   :d S )N)r   r   r   r   r   r   r   r   z%optimizer got an empty parameter listr   r   )sumstep)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                  f/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/distributed/optim/functional_adagrad.py__init__z_FunctionalAdagrad.__init__   s   "  ()B$8 0
 
 +
 Y''U\4U\@Q;R-R(SUWXX
v;;!$;DEEE %f- !(+ 	 	Aqv/HIIS)) DJqMM	 	    	gradientsc                 \   | j         d         }g }g }g }g }t          |          t          |          k    r6t          ddt          |           dz   dt          |           z             d\  }}t          | j         d         |          D ]\  }	}
|
||
j        z  }|t          j        |	          z  }|                    |	           |                    |
           | j        |	         }|                    |d                    |                    |d                    t          j	                    5  t          j        ||||| j        d	         | j        d
         | j        d         | j        d         || j        | j        || j        d d            d d d            d S # 1 swxY w Y   d S )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*   r/   r   params_with_gradgrads
state_sumsstate_stepsr1   r2   paramgradientr#   s               r,   r   z_FunctionalAdagrad.stepE   s   !(+
$&v;;#i..((W3CKK33347s9~~778   (4$"4#3H#=yII 	2 	2OE8#8#55u/666 ''...X&&&
5)!!%,///""5=111]__ 	 	I=&!]>:z2M%( /'j   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   5AF!!F%(F%N)r
   r   r   r   r   r   r   TFFFF)
__name__
__module____qualname__r   r   floatboolr-   r   r    r.   r,   r	   r	      s        
 !+.&)"%"(-, ,V, , 	,
 , $), $,  , , , , , , "&, , , ,\*d8F#34 * * * * * *r.   r	   )typingr   r   r   r   torch.optim._functionaloptim_functionalr:   r   r   r"   __annotations__r    scriptr	   rG   r.   r,   <module>rN      s    ' ' ' ' ' ' ' ' ' ' '  # # # # # # # # #       c    Y Y Y Y Y Y Y Y Y Yr.   