Ë
    Q/æj7}  ã            *       ó:  — d dl mZmZmZmZmZ d dlZd dlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddgZ G d„ de«      Zd	d
e› de› de	› de› de› d�z   e_        dee   dee   dee   dee   dee   dee   dee   dee   deded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ee   dee   dee   dee   dee   dee   dee   deded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ee   dee   dee   dee   dee   dee   dee   dededededeeef   dededededed!df&d"„Z! ee¬#«      	 	 	 	 	 	 	 d'dee   dee   dee   dee   dee   dee   d$ee   deded%ee   dee   dee   dededededeeef   dededef(d&„«       Z"y)(é    )ÚcastÚListÚOptionalÚTupleÚUnionN)Ú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Ú_stack_if_compilingÚ_use_grad_for_differentiableÚ_view_as_realÚ
DeviceDictÚ	OptimizerÚParamsTÚAdamÚadamc                   ó¨   ‡ — e Zd Z	 	 	 	 	 dddddddœdedeeef   deeef   deded	ed
e	e   dededede	e   fˆ fd„Z
ˆ fd„Zd„ Zedd„«       Zˆ xZS )r   FN)ÚforeachÚmaximizeÚ
capturableÚdifferentiableÚfusedÚparamsÚlrÚbetasÚepsÚweight_decayÚamsgradr   r   r    r!   r"   c                ó  •— t        |t        «      r-|r|	st        d«      ‚|j                  «       dk7  r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|› �«      ‚t	        ||||||||	|
|¬«
      }t
        ‰| �  ||«       |r"|
rt        d«      ‚d| _        |rt        d«      ‚y y )NúElr as a Tensor is not supported for capturable=False and foreach=Truer	   z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: )
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ÚdictÚsuperÚ__init__ÚRuntimeErrorÚ_step_supports_amp_scaling)Úselfr#   r$   r%   r&   r'   r(   r   r   r    r!   r"   ÚdefaultsÚ	__class__s                €úS/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/optim/adam.pyr2   zAdam.__init__!   sL  ø€ ô �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äØØØØ%ØØØØ!Ø)Øô
ˆô 	‰Ñ˜ Ô*áÙÜ"Ð#NÓOÐOØ.2ˆDÔ+ñ
 Ü"Ð#UÓVÐVð ð ó    c                 óŠ  •— t         ‰| �  |«       | j                  D �]#  }|j                  dd«       |j                  dd«       |j                  dd «       |j                  dd«       |j                  dd«       |j                  dd «      }|d   D ]¬  }| j                  j                  |g «      }t        |«      d	k7  sŒ.t        j                  |d
   «      rŒGt        |d
   «      }|d   s|d   r,t        j                  |t        |¬«      |j                  ¬«      nt        j                  |t        «       ¬«      |d
<   Œ® �Œ& y )Nr(   Fr   r   r    r!   r"   r#   r   Ústep©Úis_fused©ÚdtypeÚdevice©r?   )r1   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r@   )r5   rE   Úgroupr"   ÚpÚp_stateÚstep_valr7   s          €r8   rB   zAdam.__setstate__[   s%  ø€ Ü‰Ñ˜UÔ#Ø×&Ñ&ó 	ˆEØ×Ñ˜Y¨Ô.Ø×Ñ˜Z¨Ô/Ø×Ñ˜Y¨Ô-Ø×Ñ˜\¨5Ô1Ø×ÑÐ-¨uÔ5Ø×$Ñ$ W¨dÓ3ˆEØ˜8‘_ò �ØŸ*™*Ÿ.™.¨¨BÓ/�Ü�w“< 1Ó$¬U¯_©_¸WÀV¹_Õ-MÜ$ W¨V¡_Ó5�Hð ! Ò.°%¸².ô Ÿ™Ø$Ü"3¸UÔ"CØ#$§8¡8õô #Ÿ\™\¨(Ô:KÓ:MÔNð ˜F’Oò	ñ	r9   c                 óR  — d}|d   D �]  }	|	j                   €Œ|t        j                  |	«      z  }|j                  |	«       |	j                   j                  rt        d«      ‚|j                  |	j                   «       | j                  |	   }
t        |
«      dk(  rè|d   rt        |	«       |d   s|d   r/t        j                  dt        |d   ¬«      |	j                  ¬	«      nt        j                  d
t        «       ¬«      |
d<   t        j                  |	t        j                  ¬«      |
d<   t        j                  |	t        j                  ¬«      |
d<   |d   r(t        j                  |	t        j                  ¬«      |
d<   |j                  |
d   «       |j                  |
d   «       |d   r|j                  |
d   «       |d   r|
d   j                  rt        d«      ‚|d   r(t        j                   |d   «      r|d   st        d«      ‚|j                  |
d   «       �Œ |S )NFr#   zJAdam does not support sparse gradients, please consider SparseAdam insteadr   r"   r    © r<   r>   r+   rA   r;   )Úmemory_formatÚexp_avgÚ
exp_avg_sqr(   Úmax_exp_avg_sqr!   zB`requires_grad` is not supported for `step` in differentiable moder   r$   r*   )ÚgradrH   Ú
is_complexÚappendÚ	is_sparser3   rE   rG   r   Úzerosr   r@   rK   Ú
zeros_likeÚpreserve_formatÚrequires_gradrI   )r5   rL   Úparams_with_gradÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsÚhas_complexrM   rE   s              r8   Ú_init_groupzAdam._init_groupr   s  € ð ˆØ�x‘ó =	2ˆ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Ø! ,Ò/ä&Ø_óð ð ×"Ñ" 5¨¡=Ö1ð{=	2ð| Ðr9   c                 ó¤  — | j                  «        d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]|  }g }g }g }g }g }g }	|d   \  }
}| j	                  |||||||	«      }t        ||||||	f|d   ||
||d   |d   |d   |d   |d   |d	   |d
   |d   t        | dd«      t        | dd«      dœŽ Œ~ |S # 1 sw Y   Œ–xY w)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_inf)r(   rd   Úbeta1Úbeta2r$   r'   r&   r   r   r    r!   r"   rg   rh   )Ú _cuda_graph_capture_health_checkrH   Úenable_gradrC   re   r   Úgetattr)r5   ÚclosureÚlossrL   r^   r_   r`   ra   rb   rc   ri   rj   rd   s                r8   r;   z	Adam.step½   s>  € ð 	×-Ñ-Ô/àˆØÐÜ×"Ñ"Ó$ñ !Ù“y�÷!ð ×&Ñ&ò (	ˆEØ-/ÐØ"$ˆEØ%'ˆHØ(*ˆKØ,.ˆOØ(*ˆKØ  ™>‰LˆE�5à×*Ñ*ØØ ØØØØØóˆKô Ø ØØØØØðð ˜iÑ(Ø'ØØØ˜‘;Ø" >Ñ2Ø˜%‘LØ˜zÑ*Ø˜iÑ(Ø  Ñ.Ø$Ð%5Ñ6Ø˜G‘nÜ" 4¨°tÓ<Ü! $¨°TÓ:ô)ð'(	ðT ˆ÷[!ð !ús   ©CÃC)gü©ñÒMbP?)gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?g:Œ0âŽyE>r   F©N)Ú__name__Ú
__module__Ú__qualname__r   r   rJ   r   r   Úboolr   r2   rB   re   r   r;   Ú__classcell__)r7   s   @r8   r   r       sã   ø„ ð $(Ø%1ØØØð8Wð #'ØØ Ø$Ø $ò8Wàð8Wð �%˜�-Ñ ð8Wð �U˜E�\Ñ"ð	8Wð
 ð8Wð ð8Wð ð8Wð ˜$‘ð8Wð ð8Wð ð8Wð ð8Wð ˜‰~õ8Wôtò.IðV "ò8ó "ô8r9   a  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}                                                              \\
            &\textbf{initialize} :  m_0 \leftarrow 0 \text{ ( first moment)},
                v_0\leftarrow 0 \text{ (second moment)},\: \widehat{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}\widehat{v_t} \leftarrow   v_t/\big(1-\beta_2^t \big)                   \\
            &\hspace{5mm}\textbf{if} \: amsgrad                                                  \\
            &\hspace{10mm}\widehat{v_t}^{max} \leftarrow \mathrm{max}(\widehat{v_t}^{max},
                \widehat{v_t})                                                                   \\
            &\hspace{10mm}\theta_t \leftarrow \theta_{t-1} - \gamma \widehat{m_t}/
                \big(\sqrt{\widehat{v_t}^{max}} + \epsilon \big)                                 \\
            &\hspace{5mm}\textbf{else}                                                           \\
            &\hspace{10mm}\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`_.
    a�  
    Args:
        params (iterable): iterable of parameters to optimize or dicts defining
            parameter groups
        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[float, float], optional): coefficients used for computing
            running averages of gradient and its square (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)
        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#   r_   r`   ra   rb   rc   rg   rh   r(   rd   ri   rj   r$   r'   r&   r   r    r!   c       
         ó"  — |€|�J ‚t         j                  j                  «       rt        |t        «      sJ ‚t        | «      D �]J  \  }}|s||   n||    }||   }||   }||   }t         j                  j                  «       s\|rZt        «       }|j                  j                  |j                  j                  k(  r|j                  j                  |v sJ d|› d�«       ‚|dz  }|dk7  r|j                  ||¬«      }t        j                  |«      rqt        j                  |«      }t        j                  |«      }t        j                  |«      }|rt        j                  ||   «      ||<   t        j                  |«      }|j                  |d|
z
  «       |j                  |«      j!                  ||j#                  «       d|z
  ¬«       |s|rã|}d|
|z  z
  }d||z  z
  }||z  }|j%                  «       }|j'                  «       }|ro|r||   j)                  «       }n||   }||   j+                  t        j,                  ||«      «       ||   j'                  «       ||z  z  j/                  ||z  «      } n(|j'                  «       ||z  z  j/                  ||z  «      } |j1                  || «       n¢t3        |«      }d|
|z  z
  }d||z  z
  }||z  }|dz  }|rDt        j,                  ||   |||   ¬«       ||   j'                  «       |z  j/                  |«      } n"|j'                  «       |z  j/                  |«      } |j1                  || | ¬«       |s�Œt        j                  | |   «      s�Œ0t        j4                  ||   «      ||<   �ŒM y )	NúIIf capturable=True, params and state_steps must be on supported devices: ú.r	   r   ©Úalpha)Úvalueç      à?)Úout)rH   ÚjitÚis_scriptingr-   rJ   Ú	enumerateÚ_utilsÚis_compilingr   r@   ÚtypeÚaddrW   Úview_as_realÚlerp_Úmul_Úaddcmul_ÚconjÚnegÚsqrtÚcloneÚcopy_ÚmaximumÚadd_Úaddcdiv_r   Úview_as_complex)!r#   r_   r`   ra   rb   rc   rg   rh   r(   rd   ri   rj   r$   r'   r&   r   r    r!   ÚiÚparamrV   rS   rT   Ústep_tÚcapturable_supported_devicesr;   Úbias_correction1Úbias_correction2Ú	step_sizeÚstep_size_negÚbias_correction2_sqrtrU   Údenoms!                                    r8   Ú_single_tensor_adamrœ   @  s™  € ð* Ð )Ð"3Ð3Ð3ä‡y�y×ÑÔô ˜"œeÔ$Ð$Ð$ä˜fÓ%ó WK‰ˆˆ5Ù'ˆu�QŠx¨e°A©h¨YˆØ˜1‘+ˆØ  ‘^ˆ
Ø˜Q‘ˆô �|‰|×(Ñ(Ô*©zÜ+LÓ+NÐ(à—‘×!Ñ! V§]¡]×%7Ñ%7Ò7Ø—L‘L×%Ñ%Ð)EÑEð{ð [Ð[wÐZxÐxyÐzó{ðFð
 	�!‰ˆà˜1ÒØ—8‘8˜E¨�8Ó6ˆDä×Ñ˜EÔ"Ü×%Ñ% dÓ+ˆDÜ×(Ñ(¨Ó1ˆGÜ×+Ñ+¨JÓ7ˆJÙÜ%*×%7Ñ%7¸ÈÑ8JÓ%K� Ñ"Ü×&Ñ& uÓ-ˆEð 	�‰�d˜A ™IÔ&Ø�‰˜Ó×'Ñ'¨¨d¯i©i«kÀÀUÁÐ'ÔKá™ØˆDà  5¨$¡;™ÐØ  5¨$¡;™ÐàÐ-Ñ-ˆ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˜]Ñ*Ó+ð ð �N‰N˜7 EÕ*ä˜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Ô<ó ”u×'Ñ'¨¨q©	Ö2Ü!&×!6Ñ!6°ÀqÑ7IÓ!JˆO˜AÓñoWKr9   c       
   	      ó
  ‡'— t        | «      dk(  ry t        |t        «      r|st        d«      ‚t        j
                  j                  «       s7|r5t        d¬«      Š't        ˆ'fd„t        | |«      D «       «      sJ d‰'› d�«       ‚|€|�J ‚|rJ d«       ‚t        j                  | |||||g«      }|j                  «       D �]9  \  \  }}}}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }|	r7|r't        t        t           |«      }t        |||||«       nt        ||||«       |rt	        j                   |«      }t        j
                  j                  «       s=|d   j"                  r.t	        j$                  |t	        j&                  d	d
¬«      d	¬«       nt	        j$                  |d«       |dk7  r3|rt	        j$                  |||¬«       nt	        j(                  |||¬«      }t	        j*                  ||d|
z
  «       t	        j,                  ||«       t	        j.                  |||d|z
  «       ~|�rft	        j0                  |
|«      } t	        j0                  ||«      }!t	        j2                  | d«       t	        j2                  |!d«       t	        j4                  |!«       t	        j6                  | |«       t	        j8                  | «       t	        j:                  |!«       | }"|!}#|rCt        t        t           |«      }t	        j<                  ||«       t	        j>                  |«      }$nt	        j>                  |«      }$t	        j6                  |$|#«       t	        j$                  |$|«       t	        j6                  |$|"«       t	        j@                  |||$«       �Œ/|D �%cg c]  }%d|
tC        |%«      z  z
  ‘Œ } }%|D �%cg c]  }%d|tC        |%«      z  z
  ‘Œ }!}%tE        | D �&cg c]
  }&||&z  dz  ‘Œ c}&«      }"|!D �&cg c]  }&|&dz  ‘Œ	 }#}&|rCt        t        t           |«      }t	        j<                  ||«       t	        j>                  |«      }$nt	        j>                  |«      }$t	        j6                  |$|#«       t	        j$                  |$|«       t	        j@                  |||$|"«       �Œ< y c c}%w c c}%w c c}&w c c}&w )Nr   r*   F)Úsupports_xlac              3   ó²   •K  — | ]N  \  }}|j                   j                  |j                   j                  k(  xr |j                   j                  ‰v –— ŒP y ­wrp   )r@   rƒ   )Ú.0rM   r;   r•   s      €r8   ú	<genexpr>z%_multi_tensor_adam.<locals>.<genexpr>Ù  sQ   øè ø€ ò 
ñ ��4ð �H‰H�M‰M˜TŸ[™[×-Ñ-Ñ-ò >Ø—‘—‘Ð!=Ð=ó>ñ
ùs   ƒAArw   rx   z#_foreach ops don't support autogradr,   Úcpu)r@   ry   r	   éÿÿÿÿr|   )#rG   r-   r   r3   rH   r�   r‚   r   ÚallÚzipr   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   r   r   Ú_foreach_negÚis_cpuÚ_foreach_add_rK   Ú_foreach_addÚ_foreach_lerp_Ú_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#   r_   r`   ra   rb   rc   rg   rh   r(   rd   ri   rj   r$   r'   r&   r   r    r!   Úgrouped_tensorsÚ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_stepsÚdevice_max_exp_avg_sqsr–   r—   r˜   rš   Úexp_avg_sq_sqrtr;   Úbcr•   s(                                          @r8   Ú_multi_tensor_adamrÈ   ·  så  ø€ ô* ˆ6ƒ{�aÒØä�"”fÔ¡jÜØSó
ð 	
ô
 �<‰<×$Ñ$Ô&©:Ü'HØô(
Ð$ô ó 
ô ˜v {Ó3ô
ô 
ð 	wð WÐWsÐVtÐtuÐvó		wð 
ð Ð )Ð"3Ð3Ð3áÐDÐDÓDÐä×BÑBØ	�˜ +¨ÀÐLó€Oð ×"Ñ"Ó$óCñ 		ñ 	ØØØØØØØÜœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜœt¤F™|Ð-=Ó>ˆÜ!¤$¤v¡,Ð0CÓDÐÜ!¤$¤v¡,Ð0CÓDÐñ ÙÜ)-¬d´6©lÐ<SÓ)TÐ&ÜØ!Ø Ø#Ø&Ø*õô Ø! <°ÐBTôñ Ü ×-Ñ-¨lÓ;ˆLô �|‰|×(Ñ(Ô*Ð/AÀ!Ñ/D×/KÒ/KÜ×ÑØ"¤E§L¡L°¸UÔ$CÈ3öô ×ÑÐ 2°AÔ6à˜1ÒáÜ×#Ñ# L°-À|ÖTä$×1Ñ1Ø  -°|ô �ô
 	×Ñ˜_¨l¸AÀ¹IÔFä×ÑÐ.°Ô6Ü×ÑØ ¨l¸AÀ¹Iô	
ð
 ò Ü$×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ö Ø26��EœZ¨Ó-Ñ-Ó-ð Ðð  ð ;Mö Ø26��EœZ¨Ó-Ñ-Ó-ð Ðð  ô ,ÐFVÖ,WÀ¨b°2©g¸«^Ò,WÓXˆIà7GÖ$H° R¨£WÐ$HÐ!Ð$HáÜ)-¬d´6©lÐ<SÓ)TÐ&ä×'Ñ'Ð(>Ð@RÔSô #(×"5Ñ"5Ð6LÓ"M‘ä"'×"5Ñ"5Ð6HÓ"I�ä×Ñ Ð1FÔGÜ×Ñ °Ô5Ü×#Ñ#Ø˜°ÀöñCCùòT ùò ùò -Xùâ$Hs   Ï0S;ÐT Ð1T
ÑT
Úreturnc       
         ó  — | sy |rt        d«      ‚|�|j                  |ini }|�|j                  |ini }t        |t        «      r&t	        |j                  «      dk7  r|j                  |ind }t        j                  | |||||g«      }|j                  «       D �]l  \  \  }}\  \  }}}}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      } t        t        t           |«      }!t        t        t           |«      }"|j                  dk(  r|€|�J ‚d\  }#}$|�#|j                  ||j                  |d¬«      «      }#|�#|j                  ||j                  |d¬«      «      }$|�||vr|j                  |d¬«      ||<   ||   }t        j                  |"d«       t        j                  ||| |!||"|||
|||||#|$¬	«       |$€�ŒJt        j                   |"|$gt#        |"«      z  «       �Œo y )
Nz9Adam with fused=True does not support differentiable=Truer¢   Úmps)NNT)Únon_blocking)r@   rÌ   r	   )	r(   r$   ri   rj   r'   r&   r   rg   rh   )r3   r@   r-   r   Ústrr   r¦   Úitemsr   r   rƒ   rD   ÚtorH   rª   Ú_fused_adam_r°   rG   )%r#   r_   r`   ra   rb   rc   rg   rh   r(   rd   ri   rj   r$   r'   r&   r   r    r!   Úgrad_scale_dictÚfound_inf_dictÚlr_dictr¸   r@   r¿   r¹   rº   r»   r¼   rÅ   r¾   rÀ   rÁ   rÂ   rÃ   rÄ   Údevice_grad_scaleÚdevice_found_infs%                                        r8   Ú_fused_adamrÖ   l  sY  € ñ* ØÙÜÐVÓWÐWð ,6Ð+Aˆ×	Ñ	˜JÑ'Àrð ð *3Ð)>ˆ×	Ñ	˜9Ñ%ÀBð ô & b¬&Ô1´c¸"¿)¹)³nÈÒ6Mˆ�‰�B‰ÐSWð ô  ×BÑBØ	�˜ +¨ÀÐLó€Oð 
×	Ñ	Ó	 ó5ñ 
	‰ˆ�ñ 
ñ	
ØØØØØ"Øà	äœ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Ü×ÑØØØØØ"ØØØØØØ%ØØØ(Ø&õ	
ð" Ò'Ü×ÑØ"Ð%5Ð$6¼Ð=OÓ9PÑ$Pöñg5r9   )Úsingle_tensor_fnr   r"   c                óh  — |	€)|€'t        | |d¬«      \  }}|rt        |t        «      r|sd}|	€d}	|€d}t        j                  j                  «       st        d„ |D «       «      st        d«      ‚|r)t        j                  j                  «       rt        d«      ‚|	r)t        j                  j                  «       rt        d«      ‚|	r%t        j                  j                  «       st        }n-|r%t        j                  j                  «       st        }nt        } || ||||||||||||||||
|¬«       y)	znFunctional API that performs Adam algorithm computation.

    See :class:`~torch.optim.Adam` for details.
    NF)Ú	use_fusedc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrp   )r-   rH   r   )r    Úts     r8   r¡   zadam.<locals>.<genexpr>ý  s    è ø€ ò 3Ø()Œ
�1”e—l‘l×#ñ3ù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(   rd   ri   rj   r$   r'   r&   r   r    r!   rg   rh   )r   r-   r   rH   r�   r‚   r¤   r3   r~   r   rÖ   rÈ   rœ   )r#   r_   r`   ra   rb   rc   r   r    r!   r"   rg   rh   rd   r(   ri   rj   r$   r'   r&   r   r¿   Úfuncs                         r8   r   r   Í  s3  € ðD €}˜˜Ü1Ø�N¨eô
‰
ˆˆ7ñ ”z "¤fÔ-±jØˆGØ€}ØˆØ€Øˆô �<‰<×$Ñ$Ô&¬sñ 3Ø-8ô3ô 0ô Ø^ó
ð 	
ñ ”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTÙ”—‘×'Ñ'Ô)ÜÐQÓRÐRá”U—Y‘Y×+Ñ+Ô-Ü‰Ù	œŸ™×/Ñ/Ô1Ü!‰ä"ˆáØØØØØØØØØØØØ!ØØØØ%ØØö%r9   )NFFNNNF)#Útypingr   r   r   r   r   rH   r   Ú	optimizerr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rt   rJ   rœ   rÈ   rÖ   r   rQ   r9   r8   ú<module>rá      sÕ  ð÷ 6Õ 5ã Ý ÷÷ ÷ ÷ õ ð* �6Ð
€ôVˆ9ô Vðt&ðN	ð 
ˆð 	Ø	ˆð 	Ø	Ðð 	Ø	Ðð 	Ø	ˆð ð'ñOBð „ðNtKØ�‰LðtKà�‰<ðtKð �6‰lðtKð �f‘ð	tKð
 ˜&‘\ðtKð �f‘ðtKð ˜Ñ ðtKð ˜ÑðtKð ðtKð ðtKð ðtKð ðtKð 	ˆe�VˆmÑðtKð ðtKð  
ð!tKð" ð#tKð$ ð%tKð& ó'tKðnrØ�‰Lðrà�‰<ðrð �6‰lðrð �f‘ð	rð
 ˜&‘\ðrð �f‘ðrð ˜Ñ ðrð ˜Ñðrð ðrð ðrð ðrð ðrð 	ˆe�VˆmÑðrð ðrð  
ð!rð" ð#rð$ ð%rð& ó'rðj^Ø�‰Lð^à�‰<ð^ð �6‰lð^ð �f‘ð	^ð
 ˜&‘\ð^ð �f‘ð^ð ˜Ñ ð^ð ˜Ñð^ð ð^ð ð^ð ð^ð ð^ð 	ˆe�VˆmÑð^ð ð^ð  
ð!^ð" ð#^ð$ ð%^ð& ð'^ð( 
ó)^ñB  Ð1DÔEð #ØØ Ø Ø#'Ø"&ØñUØ�‰LðUà�‰<ðUð �6‰lðUð �f‘ð	Uð
 ˜&‘\ðUð �f‘ðUð �d‰^ðUð ðUð ðUð �D‰>ðUð ˜Ñ ðUð ˜ÑðUð ðUð" ð#Uð$ ð%Uð& ð'Uð( 	ˆe�VˆmÑð)Uð* ð+Uð, 
ð-Uð. ò/Uó FñUr9   