
    i                         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y)    N)Tensor)2_scripted_functional_optimizer_deprecation_warning__all__c                   l    e Zd Z	 	 	 	 	 	 	 ddee   dedeeef   dededededefd	Zd
eedz     fdZ	y)_FunctionalAdamaxparamslrbetasepsweight_decayforeachmaximize_allow_empty_param_listc	                 J   t        d       d|k  st        d|       d|k  st        d|       d|d   cxk  rdk  sn t        d|d          d|d	   cxk  rdk  sn t        d
|d	          d|k  st        d|       |||d   |d	   |d| _        || _        || _        t
        j                  j                  t        t
        j                  t        t        t
        j                  f   f   i       | _        t        |      dk(  r|st        d      d|i| _        y )N   )
stacklevel        zInvalid learning rate: zInvalid epsilon value: r   g      ?z#Invalid beta parameter at index 0:    z#Invalid beta parameter at index 1: zInvalid weight_decay value: )r	   r   beta1beta2r   z%optimizer got an empty parameter listr   )r   
ValueErrordefaultsr   r   torchjitannotatedictr   strstatelenparam_group)	selfr   r	   r
   r   r   r   r   r   s	            c/var/www/html/engine/venv/lib/python3.12/site-packages/torch/distributed/optim/functional_adamax.py__init__z_FunctionalAdamax.__init__   s<    	;aHby6rd;<<cz6se<==eAh$$B58*MNNeAh$$B58*MNNl";L>JKK 1X1X(
  YY''U\\4U\\@Q;R-R(SUWX
v;!$;DEE %f-    	gradientsNc                 z   | j                   d   }g }g }g }g }g }t        |      t        |      k7  r*t        ddt        |       dz   dt        |       z         d}t        | j                   d   |      D ]"  \  }	}
|

|t	        j
                  |	      z  }|j                  |	       |j                  |
       |	| j                  vri | j                  |	<   | j                  |	   }t	        j                  d      |d<   t	        j                  |	t        j                  	      |d
<   t	        j                  |	t        j                  	      |d<   | j                  |	   }|j                  |d
          |j                  |d          |j                  |d          % t	        j                         5  t        j                  |||||| j                  d   | j                  d   | j                  d   | j                  d   | j                  d   | j                  | j                   |       d d d        y # 1 sw Y   y xY w)Nr   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: Fr   step)memory_formatexp_avgexp_infr   r   r   r	   r   )r   r   r   r	   r   r   r   has_complex)r    r   r   zipr   
is_complexappendr   tensor
zeros_likepreserve_formatno_gradFadamaxr   r   r   )r!   r%   r   params_with_gradgradsexp_avgsexp_infsstate_stepsr+   paramgradientr   s               r"   r'   z_FunctionalAdamax.stepB   s   !!(+$&v;#i.(W#CK=34&s9~&678  "4#3#3H#=yI 	2OE8#u//66 ''.X&

*(*DJJu% JJu-E$)LL$5E&M','7'7U-B-B(E)$ (-'7'7U-B-B(E)$ 

5)i 01i 01""5=1/	22 ]]_ 	HH MM%(mmG,mmG,==&!]]>:'	 	 	s   0A8H11H:)gMbP?)g?g+?g:0yE>r   FFF)
__name__
__module____qualname__listr   floattupleboolr#   r'    r$   r"   r   r      s    
 %1!(-'.V'. '. UE\"	'.
 '. '. '. '. "&'.R8d6D=1 8r$   r   )r   torch.optim._functionaloptim_functionalr3   r   ,torch.distributed.optim._deprecation_warningr   r   r?   r   __annotations__r   scriptr   rC   r$   r"   <module>rJ      sN     # # 
 c  b b br$   