ó
    "Eñi�  ã            .       ó~  • 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 )NúElr 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                 €ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/optim/adam.pyr7   ÚAdam.__init__#   s<  ø€ ô  �bœ&×!Ñ!ÞžzÜ Ø[óð ð �x‰x‹z˜Q‹Ü Ð!>Ó?Ð?Ø�b‹yÜÐ6°r°dÐ;Ó<Ð<Ø�c‹zÜÐ6°s°eÐ<Ó=Ð=Ø�e˜A‘hÕ$ Õ$ÜÐBÀ5ÈÁ8À*ÐMÓNÐNØ�e˜A‘hÕ$ Õ$ÜÐBÀ5ÈÁ8À*ÐMÓNÐNØ�lÓ"ÜÐ;¸L¸>ÐJÓKÐKä˜˜a™¤%×(Ñ(¬Z¸¸a¹Ä%×-HÑ-HÜ˜5 ™8¤V×,Ñ,´¸EÀ!¹HÄf×1MÑ1MäÐOÓPÐPÜ�e˜A‘h¤×'Ñ'Þ¦'Ü Øaóð ð �Q‰x�~‰~Ó 1Ó$Ü Ð!DÓEÐEÜ�e˜A‘h¤×'Ñ'Þ¦'Ü Øaóð ð �Q‰x�~‰~Ó 1Ó$Ü Ð!DÓEÐEÜ”cœ* eÓ,Ó-ˆð ØØØ(ØØ ØØ$Ø,ØØ&<ñ
ˆô 	‰Ñ˜Ô*æÞÜ"Ð#NÓOÐOØ.2ˆDÔ+ö
 Ü"Ð#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Ø×ÑÐ5°uÔ=Ø×$Ñ$ W¨dÓ3ˆEØ˜8”_�ØŸ*™*Ÿ.™.¨¨BÓ/�Ü�w“< 1Õ$¬U¯_ª_¸WÀV¹_×-MÓ-MÜ$ W¨V¡_Ó5�Hð ! ×.°%¸·.ô ŸšØ$Ü"3¸UÑ"CØ#$§8¡8òô #Ÿ\š\¨(Ô:KÓ:MÑNð ˜F“Oô	 %ò '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Ø�v‰vÓ!Øœu×/Ò/°Ó2Ñ2�Ø ×'Ñ'¨Ô*Ø—6‘6×#×#Ü&Ødóð ð —‘˜QŸV™VÔ$àŸ
™
 1™�ä�u“: “?Ø˜W—~Ü5°aÔ8ð ! ×.°%¸·.ô ŸšØÜ"3¸UÀ7¹^Ñ"LØ#$§8¡8òô #Ÿ\š\¨#Ô5FÓ5HÑIð ˜&‘Mô (-×'7Ò'7Ø¬×)>Ñ)>ñ(�E˜)Ñ$ô +0×*:Ò*:Ø¬×)>Ñ)>ñ+�E˜,Ñ'ð ˜Y×'ä27×2BÒ2BØ¬U×-BÑ-Bñ3˜Ð.Ñ/ð —‘  iÑ 0Ô1Ø×"Ñ" 5¨Ñ#6Ô7à˜×#Ø#×*Ñ*¨5Ð1AÑ+BÔCØÐ)×*¨u°V©}×/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  p«U 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)z�Perform 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#   )Ú'_accelerator_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  € ð 	×4Ñ4Ô6àˆØÑÜ×"Ò"Õ$Ù“y�÷ %ð ×&Ô&ˆEØ-/ÐØ"$ˆEØ%'ˆHØ(*ˆKØ,.ˆOØ(*ˆKØ  ™>‰LˆEà×*Ñ*ØØ ØØØØØóˆKô Ø ØØØØØðð ˜iÑ(Ø'ØØØ˜‘;Ø" >Ñ2Ø˜%‘LØ˜zÑ*Ø˜iÑ(Ø  Ñ.Ø$Ð%5Ñ6Ø˜G‘nÜ" 4¨°tÓ<Ü! $¨°TÓ:Ø',Ð-EÑ'Fõ+ñ' 'ðV ˆ÷] %Õ$ús   «CÃ
C)r9   )gü©ñÒMbP?)gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?g:Œ0âŽyE>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ð �F‰NðNWð �U˜V‘^ U¨V¡^Ð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        OµU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ä‡y�y×Ñ×Ñô ˜"œe×$Ñ$Ü Ð#FÄtÈBÃxÀjÐ!QÓRÐRÜ˜%¤×'Ñ'Ü Ð#IÌ$ÈuË+ÈÐ!WÓXÐXÜ˜%¤×'Ñ'Ü Ð#IÌ$ÈuË+ÈÐ!WÓXÐXð (ô ˜‹^ˆÜ˜5Ó!ˆÜ˜5Ó!ˆô �%œ× Ñ Ø/4¯|©|¸U¿[¹[Ð.IÈ5Ð-Q‰
àˆ
ä˜f×%‰ˆˆ5Þ'ˆu�QŠx¨e°A©h¨YˆØ˜1‘+ˆØ  ‘^ˆ
Ø˜Q‘ˆô �~‰~×*Ñ*×,Ñ,¶Ü+LÓ+NÐ(à—‘×!Ñ! V§]¡]×%7Ñ%7Ó7Ø—L‘L×%Ñ%Ð)EÓEä$Ø_Ð`|Ð_}Ð}~Ðóð ð
 	�!‰ˆà˜1ÓÞ%à—
‘
˜1˜rÑ0Ñ0Õ1ö "¤j°¼v×&FÑ&FØ#×1×1Ø#Ÿ}™}¨U¯[©[«]¸LÓI™ð  $Ÿx™x¨°\˜xÐB™àŸ8™8 E°˜8Ð>�Dä×Ò˜E×"Ñ"Ü×%Ò% dÓ+ˆDÜ×(Ò(¨Ó1ˆGÜ×+Ò+¨JÓ7ˆJÞÜ%*×%7Ò%7¸ÈÑ8JÓ%K� Ñ"Ü×&Ò& uÓ-ˆEà—‘ˆàÑ!Ø—K‘KˆEð ˜5�/ˆCØ˜*Ó$Ø"'§(¡(Ø!¨¸Tð #+ð #�
˜3‘ð ,6°c©?‰Là ˆLð 	�‰�d˜A Ñ,Ô-ö œj¨´×7Ñ7Ø×"×"ð × Ñ ¤§¢¨dÓ!3¸AÀ¹IÐ ÒFà—‘ Ó&×/Ñ/Ø˜$¤d¬5°!°e±)Ó&<ð 0ò ð �O‰O˜EÓ"×+Ñ+¨D°$¸aÀ%¹iÐ+ÑHæŸØˆDö ¤*¨U´F×";Ñ";Ø×&×&Ø'(¨5°D·J±J³LÑ+@Ñ'@Ñ$à'(¨5°$©;¡Ñ$à#$ u¨d¡{¡?Ð ö ¤*¨U´F×";Ñ";Ø×&×&Ø'(¨5°D·J±J³LÑ+@Ñ'@Ñ$à'(¨5°$©;¡Ñ$à#$ u¨d¡{¡?Ð àÐ-Ñ-ˆIØ%ŸM™M›OˆMà$4×$9Ñ$9Ó$;Ð!ææ!Ø%4°QÑ%7×%=Ñ%=Ó%?‘Nà%4°QÑ%7�Nà Ñ"×(Ñ(¬¯ª°~ÀzÓ)RÔSð $ AÑ&×+Ñ+Ó-Ð1FÈÑ1VÑWß‘$�s˜]Ñ*Ó+ñ ð
 —O‘OÓ%Ð)>ÀÑ)NÑOß‘$�s˜]Ñ*Ó+ð ö Ø—‘˜wŸ}™}›°Õ6à—‘˜w¨Õ.ä˜fÓ%ˆDà  5¨$¡;™ÐØ  5¨$¡;™ÐàÐ-Ñ-ˆIà$4°cÑ$9Ð!æä—’˜o¨aÑ0°*À/ÐRSÑBTÒUð )¨Ñ+×0Ñ0Ó2Ð5JÑJ×PÑPÐQTÓU‘à#Ÿ™Ó*Ð-BÑB×HÑHÈÓM�à�N‰N˜7 E°)°ˆNÑ<÷ ‰7”u×'Ò'¨¨q©	×2Ô2Ü!&×!6Ò!6°ÀqÑ7IÓ!JˆO˜AÔò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‘�ð �H‰H�M‰M˜TŸ[™[×-Ñ-Ñ-÷ >Ø—‘—‘Ð!=Ñ=ô>â@ù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óð ð �8‰8‹:˜‹?ÜÐ:Ó;Ð;ä�%œ× Ñ ÞÜØZóð ð �;‰;‹=˜AÓÜÐ=Ó>Ð>ä�%œ× Ñ ÞÜØZóð ð �;‰;‹=˜AÓÜÐ=Ó>Ð>ô �>‰>×&Ñ&×(Ñ(®ZÜ'HØñ(
Ð$ô ô 
ô ˜v¸4Ò@ó
÷ 
ñ 
ô
 !Ø[Ð\xÐ[yÐyzÐ{óð ð Ñ Ñ!6ÜÐKÓLÐLæÜÐBÓCÐCä	�B‹€BÜ�uÓ€EÜ�uÓ€Eä×BÒBØ	˜¨ÐLó€Oô �eœV×$Ñ$¬¨U¯\©\Ó):¸eÓ)Cð 
�‰�uÑàð ð ×"Ñ"×$ñ		ñ 	ØØØØØØØÜœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜœt¤F™|Ð-=Ó>ˆÜ!¤$¤v¡,Ð0CÓDÐÜ!¤$¤v¡,Ð0CÓDÐà˜qÑ!×(Ñ(ˆØÑ! f°JÓ&>Ø!&§¡°Àd Ð!KˆJ�vÑæ-7�z &Ò)¸Uˆö ÞÜ)-¬d´6©lÐ<SÓ)TÐ&ÜØ!Ø Ø#Ø&Ø*õô Ø! <°ÐBTôö Ü ×-Ò-¨lÓ;ˆLô �~‰~×*Ñ*×,Ñ,Ð1CÀAÑ1F×1M×1MÜ×ÒØ"¤E§L¢L°¸UÑ$CÈ3óô ×ÒÐ 2°AÔ6à˜1ÓÞ%ä×#Ò# M°1°rÑ7HÑ3HÕIö Ü×'Ò'¨°mÈ<ÓXä#(×#5Ò#5Ø$ m¸<ñ$�Lô 	×ÒØ˜\¬4´°q¸<Ñ7GÓ+Hô	
ô 	×ÒÐ.°Ô6ô �eœUŸ\™\×*Ñ*Ü"'×"4Ò"4°\À1ÀuÁ9Ó"MÐØ‰Eà".ÐØ˜‘IˆEä×ÒØÐ 3°\À5ô	
ð
 Ø÷ Ü$×1Ò1°%Ð9KÓLÐÜ$×1Ò1°%Ð9KÓLÐä×ÒÐ 0°!Ô4Ü×ÒÐ 0°!Ô4ä×ÒÐ 0Ô1ô ×ÒÐ 0°"Ô5Ü×&Ò&Ð'7Ô8ä× Ò Ð!1Ô2ð
 )ˆIØ$4Ð!æÜ)-¬d´6©lÐ<SÓ)TÐ&ä×'Ò'Ð(>Ð@RÔSô #(×"5Ò"5Ð6LÓ"M‘ä"'×"5Ò"5Ð6HÓ"I�ä×Ò Ð1FÔGÜ×Ò °Ô5Ü×Ò °Ô;ô ×#Ò# M°?ÀO×Tñ ;Mó Ú:L°$��EœZ¨Ó-Ñ-Ô-Ñ:Lð ð  ñ ;Mó Ú:L°$��EœZ¨Ó-Ñ-Ô-Ñ:Lð ð  ô ,ÑFVÓ,WÒFVÀ¨b°2©g¸¬^ÑFVÑ,WÓXˆIá7GÓ$HÒ7G° R¨¤WÑ7GÐ!Ð$HæÜ)-¬d´6©lÐ<SÓ)TÐ&ä×'Ò'Ð(>Ð@RÔSô #(×"5Ò"5Ð6LÓ"M‘ä"'×"5Ò"5Ð6HÓ"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Ñ1´c¸"¿)¹)³nÈÓ6Mˆ�‰�B‰ÐSWð ô  ×BÒBØ	˜¨ÐLó€Oð 
×	Ñ	×	 ñ
	‰ˆ�ñ 
ñ	
ØØØØØ"Øà	äœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜœt¤F™|Ð-=Ó>ˆÜ!¤$¤v¡,Ð0CÓDÐÜ!¤$¤v¡,Ð0CÓDÐà.8Ñ+ÐÐ+ØÑ!Ø /× :Ñ :Ø˜
Ÿ™ f¸4˜Ð@ó!Ðð Ñ Ø-×8Ñ8Ø˜	Ÿ™ V¸$˜Ð?ó Ðð Ñ 6°Ó#8Ø Ÿe™e¨6À˜eÐEˆG�F‰OØ˜‘ˆBÜ×ÒÐ.°Ô2Þ)?Œu×!Ò!ÄU×EXÑEXˆáØØØØØ"ØØØØØØ%ØØØ(Ø&ò	
ð" Ô'Ü×ÒØ"Ð%5Ð$6¼Ð=OÓ9PÑ$P÷òQ 
!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¨Œ
�1”e—l‘l×#Ð#ª[ù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ô Ø^ó
ð 	
ö ”5—9‘9×)Ñ)×+Ñ+ÜÐSÓTÐTÞ”—‘×'Ñ'×)Ñ)ÜÐQÓRÐRæ”U—Y‘Y×+Ñ+×-Ñ-Ü‰Þ	œŸ™×/Ñ/×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ð �6‰lð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ð �6‰lðvð �f‘ð	vð
 ˜&‘\ðvð �f‘ðvð ˜‘ðvð ˜‰}ðvð ðvð ðvð �6‰>ðvð �6‰>ðvð 	�‰ðvð ðvð  
ð!vð" ð#vð$ ð%vð& ð'vð( !ð)vð* 
ô+vðraØ�‰Lðaà�‰<ðað �6‰lðað �f‘ð	að
 ˜&‘\ðað �f‘ðað ˜‘ðað ˜‰}ðað ðað ðað �6‰>ðað �6‰>ðað 	�‰ðað ðað  
ð!að" ð#að$ ð%að& ð'að( !ð)að* 
ô+añH  Ð1DÑEð  ØØ ØØ $Ø#ØØ#(ñ!WØ�‰LðWà�‰<ðWð �6‰lð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?   