
    `i                         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dS )    )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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                    t          d           |||||||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   )
stacklevel)r   r   r   r   r   r   r   r   z%optimizer got an empty parameter listr   r
   )sumstep)r   defaultsr   r   r   r   torchjitannotatedictr   strstatelen
ValueErrorparam_group	full_likedatatensor)selfr   r   r   r   r   r   r   r   r   r   r   r   r   ps                  ~/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/distributed/optim/functional_adagrad.py__init__z_FunctionalAdagrad.__init__   s     	;aHHHH ()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,   r1   r   params_with_gradgrads
state_sumsstate_stepsr3   r4   paramgradientr%   s               r.   r   z_FunctionalAdagrad.stepI   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__listr   floatboolr/   r   r    r0   r.   r   r      s        
 !+.&)"%"(-- -V- - 	-
 - $)- $-  - - - - - - "&- - - -^*d8F#34 * * * * * *r0   r   )typingr   r    torch.optim._functionaloptim_functionalr<   r   ,torch.distributed.optim._deprecation_warningr   r   rG   r$   __annotations__r!   scriptr   rJ   r0   r.   <module>rR      s            # # # # # # # # #           
 c    Z Z Z Z Z Z Z Z Z Zr0   