
    ק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                   v    e Zd Z	 	 	 	 	 	 	 dde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 )_FunctionalAdadelta      ??ư>        Fparamslrrhoepsweight_decayforeachmaximize_allow_empty_param_listc	                 D   ||||d| _         || _        || _        t          |          dk    r|st	          d          d|i| _        t          j                            t          t          j
        t          t          t          j
        f         f         i           | _        d S )N)r   r   r   r   r   z%optimizer got an empty parameter listr   )defaultsr   r   len
ValueErrorparam_grouptorchjitannotater   r   strstate)	selfr   r   r   r   r   r   r   r   s	            g/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/distributed/optim/functional_adadelta.py__init__z_FunctionalAdadelta.__init__   s     (	
 
  v;;!$;DEEE %f-Y''U\4U\@Q;R-R(SUWXX


    	gradientsc                 f   | j         d         }g }g }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 ]%\  }}||t          j        |          z  }|                    |           |                    |           || j        vrti | j        |<   | j        |         }t          j	        d          |d<   t          j
        |t
          j                  |d<   t          j
        |t
          j                  |d<   | j        |         }|                    |d                    |                    |d                    |                    |d                    't          j                    5  t          j        |||||||	|
|| j        | j        |           d d d            d S # 1 swxY w Y   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: Fr   step)memory_format
square_avg	acc_delta)r   r   r   r   r   r   has_complex)r   r   r   r   zipr   
is_complexappendr   tensor
zeros_likepreserve_formatno_gradFadadeltar   r   )r    r$   r   params_with_gradgradssquare_avgs
acc_deltasstate_stepsr   r   r   r   r*   paramgradientr   s                   r!   r&   z_FunctionalAdadelta.step4   s   !(+
]4 mE"mE"}^4v;;#i..((W3CKK33347s9~~778  
 "6955 	2 	2OE8#u/666 ''...X&&&
**(*DJu% Ju-E$)L$5$5E&M*/*:U-B+ + +E,' */)9U-B* * *E+& 
5)""5#6777!!%"4555""5=111]__ 	 	J )'   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   .+H&&H*-H*N)r
   r   r   r   FFF)
__name__
__module____qualname__r   r   floatboolr"   r   r&    r#   r!   r	   r	      s        
 !(-Y YVY Y 	Y
 Y Y Y Y "&Y Y Y Y:7d8F#34 7 7 7 7 7 7r#   r	   )typingr   r   r   r   torch.optim._functionaloptim_functionalr2   r   r   r   __annotations__r   scriptr	   r@   r#   r!   <module>rG      s    ' ' ' ' ' ' ' ' ' ' '  # # # # # # # # #       c    U U U U U U U U U Ur#   