
    Vh+                         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y)    )OptionalN)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	e      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	            Y/home/dcms/DCMS/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-    	gradientsc                 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.stepC   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:N)gMbP?)g?g+?g:0yE>r   FFF)__name__
__module____qualname__listr   floattupleboolr$   r   r(    r%   r#   r   r      s    
 %1!(-'.V'. '. UE\"	'.
 '. '. '. '. "&'.R8d8F#34 8r%   r   )typingr   r   torch.optim._functionaloptim_functionalr4   r   ,torch.distributed.optim._deprecation_warningr   r   r@   r   __annotations__r   scriptr   rD   r%   r#   <module>rL      sO      # # 
 c  b b br%   