
    3KiΜ              .       ~   S SK Jr  S SKrS SKJr  SSKJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJr  SS/r " S S\5      rS	S
\ S\
 S\ S\ S\ S\ S3-   \l        S\\   S\\   S\\   S\\   S\\   S\\   S\S-  S\S-  S\S\S\\-  S\\-  S\\-  S\S\S\S\S\S \S!S4(S" jrS\\   S\\   S\\   S\\   S\\   S\\   S\S-  S\S-  S\S\S\\-  S\\-  S\\-  S\S\S\S\S\S \S!S4(S# jr S\\   S\\   S\\   S\\   S\\   S\\   S\S-  S\S-  S\S\S\\-  S\\-  S\\-  S\S\S\S\S\S \S!S4(S$ jr!\	" \S%9        S)S\\   S\\   S\\   S\\   S\\   S\\   S&\S-  S\S\S'\S-  S\S-  S\S-  S\S \S\S\\-  S\\-  S\\-  S\S\S\S!S4,S( jj5       r"g)*    )castN)Tensor   )_capturable_doc_default_to_fused_or_foreach_device_dtype_check_for_fused_differentiable_doc_disable_dynamo_if_unsupported_foreach_doc
_fused_doc!_get_capturable_supported_devices_get_scalar_dtype
_get_value_maximize_doc_params_doc_stack_if_compiling
_to_scalar_use_grad_for_differentiable_view_as_real
DeviceDictDeviceDtypeDict	OptimizerParamsTAdamadamc                      ^  \ rS rSr     SSSSSSSS.S\S\\-  S\\\-  \\-  4   S\S	\S
\S\S-  S\S\S\S\S-  S\SS4U 4S jjjjr	U 4S jr
S r\SS j5       rSrU =r$ )r   "   FN)foreachmaximize
capturabledifferentiablefuseddecoupled_weight_decayparamslrbetasepsweight_decayamsgradr   r   r    r!   r"   r#   returnc                  > [        U[        5      (       a8  U(       a  U	(       d  [        S5      eUR                  5       S:w  a  [        S5      eSU::  d  [        SU 35      eSU::  d  [        SU 35      eSUS   s=::  a  S:  d  O  [        S	US    35      eSUS   s=::  a  S:  d  O  [        S
US    35      eSU::  d  [        SU 35      e[        US   [        5      (       a  [        US   [        5      (       d;  [        US   [        5      (       a  [        US   [        5      (       d  [        S5      e[        US   [        5      (       a;  U	(       d  U(       a  [        S5      eUS   R                  5       S:w  a  [        S5      e[        US   [        5      (       a;  U	(       d  U(       a  [        S5      eUS   R                  5       S:w  a  [        S5      e[        [        [        U5      5      nUUUUUUUU	U
UUS.n[        TU ]%  X5        U(       a,  U
(       a  [        S5      eSU l        U(       a  [        S5      eg g )NElr as a Tensor is not supported for capturable=False and foreach=Truer   Tensor lr must be 1-element        zInvalid learning rate: zInvalid epsilon value: r         ?z#Invalid beta parameter at index 0: z#Invalid beta parameter at index 1: zInvalid weight_decay value: z0betas must be either both floats or both TensorszKbetas[0] as a Tensor is not supported for capturable=False and foreach=Truez!Tensor betas[0] must be 1-elementzKbetas[1] as a Tensor is not supported for capturable=False and foreach=Truez!Tensor betas[1] must be 1-element)r%   r&   r'   r(   r)   r   r   r    r!   r"   r#   z)`fused` does not support `differentiable`Tz0`fused` and `foreach` cannot be `True` together.)
isinstancer   
ValueErrornumelfloattuplemapr   super__init__RuntimeError_step_supports_amp_scaling)selfr$   r%   r&   r'   r(   r)   r   r   r    r!   r"   r#   defaults	__class__s                 R/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/torch/optim/adam.pyr7   Adam.__init__#   s<     b&!!z [  xxzQ !>??by6rd;<<cz6se<==eAh$$B58*MNNeAh$$B58*MNNl";L>JKKa%((Za%-H-H58V,,E!Hf1M1MOPPeAh''' a  Qx~~1$ !DEEeAh''' a  Qx~~1$ !DEEc*e,- ( $,&<
 	*"#NOO.2D+
 "#UVV      c           	        > [         TU ]  U5        U R                   GHD  nUR                  SS5        UR                  SS5        UR                  SS 5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS 5      nUS	    H  nU R                  R                  U/ 5      n[        U5      S
:w  d  M0  [        R                  " US   5      (       a  MP  [        US   5      nUS   (       d
  US   (       a'  [        R                  " U[        US9UR                  S9O[        R                  " U[        5       S9US'   M     GMG     g )Nr)   Fr   r   r    r!   r#   r"   r$   r   stepis_fuseddtypedevicerE   )r6   __setstate__param_groups
setdefaultstategetlentorch	is_tensorr3   tensorr   rF   )r:   rK   groupr"   pp_statestep_valr<   s          r=   rH   Adam.__setstate__s   s/   U#&&EY.Z/Y-\51-u55u=$$Wd3E8_**..B/w<1$U__WV_-M-M$WV_5H !.%. $"3U"C#$88 #\\(:K:MN FO	 % 'r?   c                    SnUS    GHK  n	U	R                   c  M  U[        R                  " U	5      -  nUR                  U	5        U	R                   R                  (       a  [        S5      eUR                  U	R                   5        U R                  U	   n
[        U
5      S:X  a  US   (       a  [        U	5        US   (       d
  US   (       a*  [        R                  " S[        US   S9U	R                  S	9O[        R                  " S
[        5       S9U
S'   [        R                  " U	[        R                  S9U
S'   [        R                  " U	[        R                  S9U
S'   US   (       a&  [        R                  " U	[        R                  S9U
S'   UR                  U
S   5        UR                  U
S   5        US   (       a  UR                  U
S   5        US   (       a  U
S   R                  (       a  [        S5      eUS   (       a3  [        R                   " US   5      (       a  US   (       d  [        S5      eUR                  U
S   5        GMN     U$ )NFr$   zJAdam does not support sparse gradients, please consider SparseAdam insteadr   r"   r     rB   rD   r.   rG   rA   )memory_formatexp_avg
exp_avg_sqr)   max_exp_avg_sqr!   zB`requires_grad` is not supported for `step` in differentiable moder   r%   r,   )gradrN   
is_complexappend	is_sparser8   rK   rM   r   zerosr   rF   rP   
zeros_likepreserve_formatrequires_gradrO   )r:   rQ   params_with_gradgradsexp_avgsexp_avg_sqsmax_exp_avg_sqsstate_stepshas_complexrR   rK   s              r=   _init_groupAdam._init_group   s    xAvv!u//22 ''*66##&d  QVV$

1u:?W~5a8 !.%. "3U7^"L#$88 #\\#5F5HI &M (-'7'7)>)>(E)$ +0*:*:)>)>+E,' Y'272B2BU-B-B3./ i 01""5#67##**51A+BC)*uV}/J/J&\  )$d44!,/&_  ""5=1{ !| r?   c                    U R                  5         SnUb%  [        R                  " 5          U" 5       nSSS5        U R                   H  n/ n/ n/ n/ n/ n/ n	US   u  pU R	                  UUUUUUU	5      n[        UUUUUU	4US   UU
UUS   US   US   US   US   US	   US
   US   [        U SS5      [        U SS5      US   S.6  M     U$ ! , (       d  f       N= f)zPerform a single optimization step.

Args:
    closure (Callable, optional): A closure that reevaluates the model
        and returns the loss.
Nr&   r)   r%   r(   r'   r   r   r    r!   r"   
grad_scale	found_infr#   )r)   rj   beta1beta2r%   r(   r'   r   r   r    r!   r"   rn   ro   r#   ) _cuda_graph_capture_health_checkrN   enable_gradrI   rk   r   getattr)r:   closurelossrQ   rd   re   rf   rg   rh   ri   rp   rq   rj   s                r=   rA   	Adam.step   s9    	--/""$y % &&E-/"$E%'H(*K,.O(*K >LE** K   i(';">2%Lz*i( .$%56Gn"4t<!$T:',-E'F+' 'V ] %$s   C
C)r9   )gMbP?)g?g+?g:0yE>r   FN)__name__
__module____qualname____firstlineno__r   r3   r   r4   boolr7   rH   rk   r   rA   __static_attributes____classcell__)r<   s   @r=   r   r   "   s    "7CNW  $ $!',NWNW FNNW UV^UV^34	NW
 NW NW NW NW NW NW NW d{NW !%NW 
NW NW`0IV "9 "9r?   af  Implements Adam algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \beta_1, \beta_2
                \text{ (betas)},\theta_0 \text{ (params)},f(\theta) \text{ (objective)}          \\
            &\hspace{13mm}      \lambda \text{ (weight decay)},  \: \textit{amsgrad},
                \:\textit{maximize},  \: \epsilon \text{ (epsilon)}                              \\
            &\textbf{initialize} :  m_0 \leftarrow 0 \text{ ( first moment)},
                v_0\leftarrow 0 \text{ (second moment)},\: v_0^{max}\leftarrow 0          \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\

            &\hspace{5mm}\textbf{if} \: \textit{maximize}:                                       \\
            &\hspace{10mm}g_t           \leftarrow   -\nabla_{\theta} f_t (\theta_{t-1})         \\
            &\hspace{5mm}\textbf{else}                                                           \\
            &\hspace{10mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})          \\
            &\hspace{5mm}\textbf{if} \: \lambda \neq 0                                           \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda  \theta_{t-1}                            \\
            &\hspace{5mm}m_t           \leftarrow   \beta_1 m_{t-1} + (1 - \beta_1) g_t          \\
            &\hspace{5mm}v_t           \leftarrow   \beta_2 v_{t-1} + (1-\beta_2) g^2_t          \\
            &\hspace{5mm}\widehat{m_t} \leftarrow   m_t/\big(1-\beta_1^t \big)                   \\
            &\hspace{5mm}\textbf{if} \: amsgrad                                                  \\
            &\hspace{10mm} v_t^{max} \leftarrow \mathrm{max}(v_{t-1}^{max},v_t)                  \\
            &\hspace{10mm}\widehat{v_t} \leftarrow v_t^{max}/\big(1-\beta_2^t \big)              \\
            &\hspace{5mm}\textbf{else}                                                           \\
            &\hspace{10mm}\widehat{v_t} \leftarrow   v_t/\big(1-\beta_2^t \big)                  \\
            &\hspace{5mm}\theta_t \leftarrow \theta_{t-1} - \gamma \widehat{m_t}/
                \big(\sqrt{\widehat{v_t}} + \epsilon \big)                                       \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    For further details regarding the algorithm we refer to `Adam: A Method for Stochastic Optimization`_.
    z
    Args:
        aG  
        lr (float, Tensor, optional): learning rate (default: 1e-3). A tensor LR
            is not yet supported for all our implementations. Please use a float
            LR if you are not also specifying fused=True or capturable=True.
        betas (tuple[Union[float, Tensor], Union[float, Tensor]], optional):
            coefficients used for computing running averages of gradient and
            its square. If a tensor is provided, must be 1-element. (default: (0.9, 0.999))
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-8)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        decoupled_weight_decay (bool, optional): if True, this optimizer is
            equivalent to AdamW and the algorithm will not accumulate weight
            decay in the momentum nor variance. (default: False)
        amsgrad (bool, optional): whether to use the AMSGrad variant of this
            algorithm from the paper `On the Convergence of Adam and Beyond`_
            (default: False)
        z	
        a=  
    .. Note::
        A prototype implementation of Adam and AdamW for MPS supports `torch.float32` and `torch.float16`.
    .. _Adam\: A Method for Stochastic Optimization:
        https://arxiv.org/abs/1412.6980
    .. _On the Convergence of Adam and Beyond:
        https://openreview.net/forum?id=ryQu7f-RZ

    r$   re   rf   rg   rh   ri   rn   ro   r)   rj   rp   rq   r%   r(   r'   r   r    r!   r#   r*   c          
      N   Uc  Ub  [        S5      e[        R                  R                  5       (       a  [	        U[
        5      (       d  [        S[        U5       35      e[	        U
[
        5      (       d  [        S[        U
5       35      e[	        U[
        5      (       d  [        S[        U5       35      eO![        U5      n[        U
5      n
[        U5      n[	        U
[        5      (       a  U
R                  U
R                  4U
0nOS n[        U 5       GH  u  nnU(       d  UU   OUU   * nUU   nUU   nUU   n[        R                  R                  5       (       dh  U(       aa  [        5       nUR                  R                  UR                  R                  :X  a  UR                  R                  U;   d  [        SU S35      eUS-  nUS:w  a  U(       a  UR                  SX-  -
  5        OoU(       aX  [	        U[        5      (       aC  UR                   (       a!  UR#                  UR%                  5       U5      nO!UR'                  UUS	9nOUR'                  UUS	9n[        R(                  " U5      (       a{  [        R*                  " U5      n[        R*                  " U5      n[        R*                  " U5      nU(       a  [        R*                  " UU   5      UU'   [        R*                  " U5      nUR                  nUb0  UR                  nUU4nUU;  a  U
R-                  UUS
S9UU'   UU   nOU
nUR/                  USU-
  5        U(       a  [	        U[        5      (       ak  UR                   (       a(  UR/                  [        R0                  " U5      SU-
  S9  OUUR                  U5      R#                  UU[3        [
        SU-
  5      S9  O#UR                  U5      R#                  UUSU-
  S9  U(       d  U(       Ga  UnU(       aF  [	        U
[        5      (       a1  U
R                   (       a  SU
UR%                  5       -  -
  n OSU
U-  -
  n OSU
U-  -
  n U(       aF  [	        U[        5      (       a1  UR                   (       a  SUUR%                  5       -  -
  n!OSUU-  -
  n!OSUU-  -
  n!UU -  n"U"R5                  5       n#U!R7                  5       n$U(       au  U(       a  UU   R%                  5       n%OUU   n%UU   R9                  [        R:                  " U%U5      5        UU   R7                  5       U$U#-  -  R=                  UU#-  5      n&O(UR7                  5       U$U#-  -  R=                  UU#-  5      n&U(       a!  UR?                  UR%                  5       U&5        OUR?                  UU&5        O[A        U5      nSU
U-  -
  n SUU-  -
  n!UU -  n"U!S-  n$U(       aB  [        R:                  " UU   UUU   S9  UU   R7                  5       U$-  R=                  U5      n&O"UR7                  5       U$-  R=                  U5      n&UR?                  UU&U"* S9  U(       d  GML  [        R(                  " U U   5      (       d  GMm  [        RB                  " UU   5      UU'   GM     g )N,Expected grad_scale and found_inf to be Nonez#Expected lr to be a float, but got z&Expected beta1 to be a float, but got z&Expected beta2 to be a float, but got IIf capturable=True, params and state_steps must be on supported devices: .r   r   alphaT)rF   rE   non_blocking)weight)value      ?)out)"AssertionErrorrN   jitis_scriptingr0   r3   typer   r   rF   rE   	enumeratecompileris_compilingr   mul_rc   addcmul_cloneaddr]   view_as_realtolerp_squarer   negsqrtcopy_maximumadd_addcdiv_r   view_as_complex)'r$   re   rf   rg   rh   ri   rn   ro   r)   rj   rp   rq   r%   r(   r'   r   r    r!   r#   
beta1_dictiparamr\   rY   rZ   step_tcapturable_supported_devicesrF   rE   keydevice_beta1rA   bias_correction1bias_correction2	step_sizestep_size_negbias_correction2_sqrtr[   denoms'                                          r=   _single_tensor_adamr   [  s   , !6KLLyy "e$$ #FtBxj!QRR%'' #I$u+!WXX%'' #I$u+!WXX ( ^5!5! %  /4||U[[.I5-Q

f%5'uQxeAhY1+ ^
Q ~~**,,+L+N(!!V]]%7%77LL%%)EE$_`|_}}~ 
 	!1%

1r001 "jv&F&F#11#}}U[[]LI  $xx\xB88E8>DE""%%d+D((1G++J7J%*%7%78J%K"&&u-E!KKE 5/C*$"'((!T #+ #
3 ,6c?L L 	dA,- j77""   d!3AI F&//$d5!e)&< 0  OOE"++D$a%i+HD *UF";";&&'(5DJJL+@'@$'(5$;$#$ud{?  *UF";";&&'(5DJJL+@'@$'(5$;$#$ud{? --I%MMOM$4$9$9$;!!%4Q%7%=%=%?N%4Q%7N"((~z)RS $A&++-1F1VW$s]*+ 
 OO%)>)NO$s]*+  w}}6w.f%D 5$; 5$;--I$4c$9!oa0*/RSBTU )+0025JJPPQTU#*-BBHHMNN7E)N< 7u''q	22!&!6!6q7I!JOAw &r?   c          
        ^- [        U 5      S:X  a  g [        U[        5      (       a1  U(       d  [        S5      eUR	                  5       S:w  a  [        S5      e[        U
[        5      (       a1  U(       d  [        S5      eU
R	                  5       S:w  a  [        S5      e[        U[        5      (       a1  U(       d  [        S5      eUR	                  5       S:w  a  [        S5      e[        R                  R                  5       (       dA  U(       a:  [        S	S
9m-[        U-4S j[        XSS9 5       5      (       d  [        ST- S35      eUc  Ub  [        S5      eU(       a  [        S5      e[        U5      n[        U
5      n
[        U5      n[        R                  " XX#XE/5      n[        U
[        5      (       a'  [!        U
R"                  5      S:w  a  U
R"                  U
0OS nUR%                  5        GH3  u  u  nnnnnnn['        [(        [           U5      n['        [(        [           U5      n['        [(        [           U5      n['        [(        [           U5      n['        [(        [           U5      n US   R"                  n!Ub  U!U;  a  U
R+                  U!SS9UU!'   U(       a  UU!   OU
n"U	(       a<  U(       a'  ['        [(        [           U5      n#[-        UUUUU#5        O[-        UUUU5        U(       a  [        R.                  " U5      n[        R                  R                  5       (       d>  U S   R0                  (       a*  [        R2                  " U [        R4                  " SSS9SS9  O[        R2                  " U S5        US:w  aX  U(       a  [        R6                  " USX-  -
  5        O4U(       a  [        R2                  " UUUS9  O[        R8                  " UUUS9n[        R:                  " UU['        [<        SU"-
  5      5        [        R6                  " UU5        [        U[        R                  5      (       a  [        R>                  " USU-
  5      n$Sn%OUn$SU-
  n%[        R@                  " UU$UU%5        AA$U(       Ga{  [        RB                  " U
U 5      n&[        RB                  " UU 5      n'[        RD                  " U&S5        [        RD                  " U'S5        [        RF                  " U'5        [        RH                  " U&U5        [        RJ                  " U&5        [        RL                  " U'5        U&n(U'n)U(       aE  ['        [(        [           U5      n#[        RN                  " U#U5        [        RP                  " U#5      n*O[        RP                  " U5      n*[        RH                  " U*U)5        [        R2                  " U*U5        [        RH                  " U*U(5        [        RR                  " UUU*5        GM  U  V+s/ s H  n+SU
[U        U+5      -  -
  PM     n&n+U  V+s/ s H  n+SU[U        U+5      -  -
  PM     n'n+[W        U& V,s/ s H  n,UU,-  S-  PM     sn,5      n(U' V,s/ s H  n,U,S-  PM
     n)n,U(       aE  ['        [(        [           U5      n#[        RN                  " U#U5        [        RP                  " U#5      n*O[        RP                  " U5      n*[        RH                  " U*U)5        [        R2                  " U*U5        [        RR                  " UUU*U(5        GM6     g s  sn+f s  sn+f s  sn,f s  sn,f )Nr   r,   r   r-   zHbeta1 as a Tensor is not supported for capturable=False and foreach=TruezTensor beta1 must be 1-elementzHbeta2 as a Tensor is not supported for capturable=False and foreach=TruezTensor beta2 must be 1-elementF)supports_xlac              3      >#    U  HT  u  pUR                   R                  UR                   R                  :H  =(       a    UR                   R                  T;   v   MV     g 7frx   )rF   r   ).0rR   rA   r   s      r=   	<genexpr>%_multi_tensor_adam.<locals>.<genexpr>`  sO      
 A HHMMT[[--- >!==>@s   AAT)strictr   r   r   z#_foreach ops don't support autogradcpurF   r   r/   )rF   r   r   ),rM   r0   r   r8   r2   r1   rN   r   r   r   allzipr   r   r   "_group_tensors_by_device_and_dtypestrrF   valuesr   listr   r   _foreach_negis_cpu_foreach_add_rP   _foreach_mul__foreach_add_foreach_lerp_r3   _foreach_mul_foreach_addcmul__foreach_pow_foreach_sub__foreach_neg__foreach_div__foreach_reciprocal__foreach_sqrt__foreach_maximum__foreach_sqrt_foreach_addcdiv_r   r   ).r$   re   rf   rg   rh   ri   rn   ro   r)   rj   rp   rq   r%   r(   r'   r   r    r!   r#   grouped_tensorsr   device_params_device_grads_device_exp_avgs_device_exp_avg_sqs_device_max_exp_avg_sqs_device_state_steps__device_paramsdevice_gradsdevice_exp_avgsdevice_exp_avg_sqsdevice_state_stepsrF   r   device_max_exp_avg_sqsscaled_device_gradsr   r   r   r   r   exp_avg_sq_sqrtrA   bcr   s.                                                @r=   _multi_tensor_adamr   *  s   , 6{a"fW  88:?:;;%  Z  ;;=A=>>%  Z  ;;=A=>> >>&&((Z'H(
$  
 v4@
 
 

 ![\x[yyz{  !6KLLBCC	BBuEuEBB	LO eV$$U\\):e)C 
u  ""$		 	T&\>:DL-8tF|-=>!$v,0CD!$v,0CDq!((!fJ&>!&d!KJv-7z&)U )-d6l<S)T&! #&* !<BT  --l;L ~~**,,1CA1F1M1M"ELLU$C3  2A61%##M1r7H3HI ''m<X#(#5#5$m<$L 	\4q<7G+H	
 	.6 eU\\**"'"4"4\1u9"ME".IE 3\5	

  $11%9KL$11%9KL 0!4 0!4 01  0"5&&'78  !12
 )I$4!)-d6l<S)T&''(>@RS #("5"56L"M"'"5"56H"I1FG5; ##M?OT ;M :L$EZ---:L    ;M :L$EZ---:L    ,FV,WFVb2g^FV,WXI7G$H7GRW7G!$H)-d6l<S)T&''(>@RS #("5"56L"M"'"5"56H"I1FG5##	k %|   -X$Hs   \,)\1\6
,\;c                f   U (       d  g U(       a  [        S5      e[        U
5      n
[        U5      nUb  UR                  U0O0 nUb  UR                  U0O0 n[        U[        5      (       a'  [        UR                  5      S:w  a  UR                  U0OS n[        R                  " XX#XE/5      nUR                  5        GHo  u  u  nnu  u  nnnnnnn[        [        [           U5      n[        [        [           U5      n [        [        [           U5      n![        [        [           U5      n"[        [        [           U5      n#Su  n$n%Ub   UR                  UUR                  USS95      n$Ub   UR                  UUR                  USS95      n%Ub  UU;  a  UR                  USS9UU'   UU   n[        R                  " U#S5        U(       d  [        R                  O[        R                   n&U&" UU U!U"UU#UUU
UUUUU$U%S9  U%c  GMK  [        R"                  " U#U%/[%        U#5      -  5        GMr     g )	Nz9Adam with fused=True does not support differentiable=Truer   )NNT)r   r   r   )	r)   r%   rp   rq   r(   r'   r   rn   ro   )r8   r   rF   r0   r   r   r   r   itemsr   r   rJ   r   rN   r   _fused_adam__fused_adamw_r   rM   )'r$   re   rf   rg   rh   ri   rn   ro   r)   rj   rp   rq   r%   r(   r'   r   r    r!   r#   grad_scale_dictfound_inf_dictlr_dictr   rF   r   r   r   r   r   r   r   r   r   r   r   r   device_grad_scaledevice_found_inffuncs'                                          r=   _fused_adamr   #  sW   , VWWuEuE ,6+A		J'r  *3)>		9%B  &b&11c"))n6MBSW   BB	LO 
			 
	 
	
"	T&\>:DL-8tF|-=>!$v,0CD!$v,0CD.8++! / : :
f4@!  -88	V$?  6#8 ee6eEGFOB.2)?u!!UEXEX"%(&	
" '"%5$6=O9P$PO 
!r?   )single_tensor_fnr   r"   c                   U	c5  Uc2  [        XSS9u  nnU(       a  [        U[        5      (       a	  U(       d  SnU	c  Sn	Uc  Sn[        R                  R                  5       (       d"  [        S U 5       5      (       d  [        S5      eU(       a.  [        R                  R                  5       (       a  [        S5      eU	(       a.  [        R                  R                  5       (       a  [        S5      eU	(       a*  [        R                  R                  5       (       d  [        nO7U(       a*  [        R                  R                  5       (       d  [        nO[        nU" U UUUUU4UUUUUUUUUUU
UUS.6  g)	zfFunctional API that performs Adam algorithm computation.

See :class:`~torch.optim.Adam` for details.
NF)	use_fusedc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7frx   )r0   rN   r   )r   ts     r=   r   adam.<locals>.<genexpr>  s!      5-8
1ell##[s   ')zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsz6torch.jit.script not supported with foreach optimizersz4torch.jit.script not supported with fused optimizers)r)   rj   rp   rq   r%   r(   r'   r   r    r!   rn   ro   r#   )r   r0   r   rN   r   r   r   r8   r   r   r   r   r   )r$   re   rf   rg   rh   ri   r   r    r!   r"   rn   ro   rj   r#   r)   rp   rq   r%   r(   r'   r   r   r   s                          r=   r   r     sR   F }1e

7 z"f--jG} >>&&(( 5-85 2 2 ^
 	
 599))++STT''))QRRUYY++--	//11!" !%5'r?   )NFFNNNFF)#typingr   rN   r   	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __all__r   __doc__r   r}   r3   r   r   r   r   rW   r?   r=   <module>r      s5          0 6
n9 nd$J		 	  
 		 		 		 		 -KC PLKLLK<LK 6lLK f	LK
 &\LK fLK LK }LK LK LK 6>LK 6>LK 	LK LK  
!LK" #LK$ %LK& 'LK( !)LK* 
+LK^vLv<v 6lv f	v
 &\v fv v }v v v 6>v 6>v 	v v  
!v" #v$ %v& 'v( !)v* 
+vr`L`<` 6l` f	`
 &\` f` ` }` ` ` 6>` 6>` 	` `  
!`" #`$ %`& '`( !)`* 
+`F  1DE    $##(!WLW<W 6lW f	W
 &\W fW D[W W W $;W W }W W  !!W$ %W& 6>'W( 6>)W* 	+W, -W. 
/W0 1W2 
3W FWr?   