
    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dededefdZdeedz           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                  o/home/longshao/multi-rider-rag/.venv/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	 	    	gradientsNc                 \   | 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+   r0   r   params_with_gradgrads
state_sumsstate_stepsr2   r3   paramgradientr$   s               r-   r   z_FunctionalAdagrad.stepH   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%)r   r	   r	   r	   r
   r	   r   TFFFF)	__name__
__module____qualname__listr   floatboolr.   r    r/   r-   r   r      s        
 !+.&)"%"(-- -V- - 	-
 - $)- $-  - - - - - - "&- - - -^*d6D=1 * * * * * *r/   r   )r   torch.optim._functionaloptim_functionalr;   r   ,torch.distributed.optim._deprecation_warningr   r   rF   r#   __annotations__r    scriptr   rI   r/   r-   <module>rP      s     # # # # # # # # #           
 c    Z Z Z Z Z Z Z Z Z Zr/   