Ë
    Q/æj±y  ã            *       ó:  — 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eef   de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eef   de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eef   de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ÚAdamWÚadamwc                   ó¨   ‡ — 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de	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)ÚmaximizeÚforeachÚ
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                €úT/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/optim/adamw.pyr2   zAdamW.__init__!   sJ  ø€ ô �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AdamW.__setstate__V   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	                 óB  — 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<   |r(t        j                  |
t        j                  ¬«      |d<   |j                  |d   «       |j                  |d   «       |d   r|j                  |d   «       |d   r|d   j                  rt        d«      ‚|d   r#t!        |d   t"        «      r|d   st        d«      ‚|j                  |d   «       �Œ |	S )NFr#   z'AdamW does not support sparse gradientsr   r"   r    © r<   r>   r+   rA   r;   )Úmemory_formatÚexp_avgÚ
exp_avg_sqÚmax_exp_avg_sqr(   r!   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_gradr-   r   )r5   rL   Úparams_with_gradÚgradsr(   Úexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsÚhas_complexrM   rE   s               r8   Ú_init_groupzAdamW._init_groupm   s  € ð ˆØ�x‘ó <	.ˆAØ�v‰vˆ~ØØœ5×+Ñ+¨AÓ.Ñ.ˆKØ×#Ñ# AÔ&Ø�v‰v×ÒÜ"Ð#LÓMÐMØ�L‰L˜Ÿ™Ô à—J‘J˜q‘MˆEô �5‹z˜QŠØ˜’>Ü1°!Ô4ð ˜\Ò*¨e°Gªnô —K‘KØÜ/¸¸w¹ÔHØ Ÿx™xõô Ÿ™ cÔ1BÓ1DÔEð �f‘ô $)×#3Ñ#3Ø¤U×%:Ñ%:ô$��iÑ ô ',×&6Ñ&6Ø¤U×%:Ñ%:ô'��lÑ#ñ ä.3×.>Ñ.>Ø¬×)>Ñ)>ô/�EÐ*Ñ+ð �O‰O˜E )Ñ,Ô-Ø×Ñ˜u \Ñ2Ô3à�YÒØ×&Ñ& uÐ-=Ñ'>Ô?ØÐ%Ò&¨5°©=×+FÒ+FÜ"ØXóð ð �iÒ Ü˜u T™{¬FÔ3Ø˜lÒ+ä"Ø[óð ð ×Ñ˜u V™}Ö-ðy<	.ðz Ðr9   c                 óà  — | j                  «        d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]š  }g }g }g }g }g }g }	|d   }
t	        t
        t        t        f   |d   «      \  }}| j                  ||||
||||	«      }t        ||||||	f|
|||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(   Úbeta1Úbeta2r$   r'   r&   r   r   r    r!   r"   rg   rh   rd   )
Ú _cuda_graph_capture_health_checkrH   Úenable_gradrC   r   r   rJ   re   r   Úgetattr)r5   ÚclosureÚlossrL   r^   r_   r`   ra   rb   rc   r(   ri   rj   rd   s                 r8   r;   z
AdamW.step¸   sV  € ð 	×-Ñ-Ô/àˆØÐÜ×"Ñ"Ó$ñ !Ù“y�÷!ð ×&Ñ&ò *	ˆEØ-/ÐØ"$ˆEØ%'ˆHØ(*ˆKØ,.ˆOØ(*ˆKØ! )Ñ,ˆGÜ¤¤e¬U lÑ 3°U¸7±^ÓD‰LˆE�5à×*Ñ*ØØ ØØØØØØó	ˆKô Ø ØØØØØðð  ØØØ˜‘;Ø" >Ñ2Ø˜%‘LØ˜zÑ*Ø˜iÑ(Ø  Ñ.Ø$Ð%5Ñ6Ø˜G‘nÜ" 4¨°tÓ<Ü! $¨°TÓ:Ø'ô)ð+*	ðX ˆ÷_!ð !ús   ©C$Ã$C-)gü©ñÒMbP?)gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?g:Œ0âŽyE>g{®Gáz„?F©N)Ú__name__Ú
__module__Ú__qualname__r   r   rJ   r   r   Úboolr   r2   rB   re   r   r;   Ú__classcell__)r7   s   @r8   r   r       sã   ø„ ð $(Ø%1ØØ"Øð3Wð Ø"&Ø Ø$Ø $ò3Wàð3Wð �%˜�-Ñ ð3Wð �U˜E�\Ñ"ð	3Wð
 ð3Wð ð3Wð ð3Wð ð3Wð ˜$‘ð3Wð ð3Wð ð3Wð ˜‰~õ3Wôjò.IðV "ò:ó "ô:r9   a  Implements AdamW 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)},
                \: \epsilon \text{ (epsilon)}                                                    \\
            &\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} \theta_t \leftarrow \theta_{t-1} - \gamma \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 - \gamma \widehat{m_t}/
                \big(\sqrt{\widehat{v_t}^{max}} + \epsilon \big)                                 \\
            &\hspace{5mm}\textbf{else}                                                           \\
            &\hspace{10mm}\theta_t \leftarrow \theta_t - \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 `Decoupled Weight Decay Regularization`_.
    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 coefficient (default: 1e-2)
        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	
        a8  
    .. Note::
        A prototype implementation of Adam and AdamW for MPS supports `torch.float32` and `torch.float16`.
    .. _Decoupled Weight Decay Regularization:
        https://arxiv.org/abs/1711.05101
    .. _On the Convergence of Adam and Beyond:
        https://openreview.net/forum?id=ryQu7f-RZ

    r#   r_   r`   ra   rb   rc   rg   rh   r(   ri   rj   r$   r'   r&   r   r    r!   rd   c       
         ó  — |€|�J ‚t         j                  j                  «       rt        |t        «      sJ ‚t        | «      D �];  \  }}|s||   n||    }||   }||   }||   }t         j                  j                  «       s\|rZt        «       }|j                  j                  |j                  j                  k(  r|j                  j                  |v sJ d|› d�«       ‚t        j                  |«      rqt        j                  |«      }t        j                  |«      }t        j                  |«      }|rt        j                  ||   «      ||<   t        j                  |«      }|dz  }|j                  d||z  z
  «       |j                  |d|	z
  «       |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  «      } |j-                  || «       n¢t/        |«      }d|	|z  z
  }d|
|z  z
  }||z  }|dz  }|rDt        j(                  ||   |||   ¬«       ||   j#                  «       |z  j+                  |«      } n"|j#                  «       |z  j+                  |«      } |j-                  || | ¬«       |s�Œt        j                  | |   «      s�Œ!t        j0                  ||   «      ||<   �Œ> y )NúIIf capturable=True, params and state_steps must be on supported devices: ú.r	   )Úvalueç      à?)Úout)rH   ÚjitÚis_scriptingr-   rJ   Ú	enumerateÚ_utilsÚis_compilingr   r@   ÚtyperW   Úview_as_realÚmul_Úlerp_Úaddcmul_ÚnegÚsqrtÚcloneÚcopy_ÚmaximumÚadd_Úaddcdiv_r   Úview_as_complex)!r#   r_   r`   ra   rb   rc   rg   rh   r(   ri   rj   r$   r'   r&   r   r    r!   rd   Ú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_adamwr˜   =  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ô ×Ñ˜EÔ"Ü×%Ñ% dÓ+ˆDÜ×(Ñ(¨Ó1ˆGÜ×+Ñ+¨JÓ7ˆJÙÜ%*×%7Ñ%7¸ÈÑ8JÓ%K� Ñ"Ü×&Ñ& uÓ-ˆEð 	�!‰ˆð 	�
‰
�1�r˜LÑ(Ñ(Ô)ð 	�‰�d˜A ™IÔ&Ø�‰˜Ó×'Ñ'¨¨d¸!¸e¹)Ð'ÔDá™Øˆ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�«       ‚|rJ d«       ‚|€|�J ‚t        j                  | |||||g«      }|j                  «       D �]"  \  \  }}}}}}}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  rt	        j(                  |d||z  z
  «       t	        j*                  ||d|	z
  «       t	        j(                  ||
«       t	        j,                  |||d|
z
  «       ~|�rft	        j.                  |	|«      } t	        j.                  |
|«      }!t	        j0                  | d«       t	        j0                  |!d«       t	        j2                  |!«       t	        j4                  | |«       t	        j6                  | «       t	        j8                  |!«       | }"|!}#|rCt        t        t           |«      }t	        j:                  ||«       t	        j<                  |«      }$nt	        j<                  |«      }$t	        j4                  |$|#«       t	        j$                  |$|«       t	        j4                  |$|"«       t	        j>                  |||$«       �Œ|D �%cg c]  }%d|	tA        |%«      z  z
  ‘Œ } }%|D �%cg c]  }%d|
tA        |%«      z  z
  ‘Œ }!}%tC        | 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	        j4                  |$|#«       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_adamw.<locals>.<genexpr>Ö  sQ   øè ø€ ò 
ñ ��4ð �H‰H�M‰M˜TŸ[™[×-Ñ-Ñ-ò >Ø—‘—‘Ð!=Ð=ó>ñ
ùs   ƒAArw   rx   z#_foreach ops don't support autogradr,   Úcpu)r@   )Úalphar	   éÿÿÿÿrz   )"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_mul_Ú_foreach_lerp_Ú_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(   ri   rj   r$   r'   r&   r   r    r!   rd   Ú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_adamwrÄ   ´  sç  ø€ ô* ˆ6ƒ{�aÒØä�"”fÔ¡jÜØSó
ð 	
ô
 �<‰<×$Ñ$Ô&©:Ü'HØô(
Ð$ô ó 
ô ˜v {Ó3ô
ô 
ð 	wð WÐWsÐVtÐtuÐvó		wð 
ñ ÐDÐDÓDÐàÐ )Ð"3Ð3Ð3ä×BÑBØ	�˜ +¨ÀÐLó€Oð ×"Ñ"Ó$óDñ 		ñ 	ØØØØØØØÜœ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ÒÜ×Ñ ¨q°2¸Ñ3DÑ/DÔEô 	×Ñ˜_¨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ð #3ö%Ø��C“ð%Ð!ð %ñ Ü)-¬d´6©lÐ<SÓ)TÐ&ô ×'Ñ'Ð(>Ð@RÔSô #(×"5Ñ"5Ð6LÓ"M‘ä"'×"5Ñ"5Ð6HÓ"I�ä×Ñ Ð1FÔGÜ×Ñ °Ô5Ü×#Ñ#ØØØØö	ñDùòJ ùò ùò -Xùò%s   ÏS$Ï7S)ÐS.
Ð4S3Ú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 �]t  \  \  }}\  \  }}}}}}}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                  ||j                  |d¬«      «      }t        j                  |"d«       t        j                  ||| |!||"|||	|
||||#|$¬	«       |$€�ŒRt        j                   |"|$gt#        |"«      z  «       �Œw 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_adamw_r¬   rG   )%r#   r_   r`   ra   rb   rc   rg   rh   r(   ri   rj   r$   r'   r&   r   r    r!   rd   Ú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_adamwrÒ   j  s^  € ñ* ØÙÜÐVÓWÐWð ,6Ð+Aˆ×	Ñ	˜JÑ'Àrð ð *3Ð)>ˆ×	Ñ	˜9Ñ%ÀBð ô & b¬&Ô1´c¸"¿)¹)³nÈÒ6Mˆ�‰�B‰ÐSWð ô  ×BÑBØ	�˜ +¨ÀÐLó€Oð 
×	Ñ	Ó	 ó6ñ 
	‰ˆ�ñ 
ñ	
ØØØØØ"Øà	äœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜœt¤F™|Ð-=Ó>ˆÜ!¤$¤v¡,Ð0CÓDÐÜ!¤$¤v¡,Ð0CÓDÐà�;‰;˜%ÒØÐ$¨Ð);Ð;Ð;à.8Ñ+ÐÐ+ØÐ!Ø /× :Ñ :Ø˜
Ÿ™ f¸4˜Ó@ó!Ðð Ð Ø-×8Ñ8Ø˜	Ÿ™ V¸$˜Ó?ó Ðð Ð 6°Ñ#8Ø×#Ñ#Ø˜Ÿ™ V¸$˜Ó?óˆBô 	×ÑÐ.°Ô2Ü×ÑØØØØØ"ØØØØØØ%ØØØ(Ø&õ	
ð" Ò'Ü×ÑØ"Ð%5Ð$6¼Ð=OÓ9PÑ$Pöñi6r9   )Úsingle_tensor_fnr   r"   c                óh  — t         j                  j                  «       st        d„ |D «       «      st	        d«      ‚|	€)|€'t        | |d¬«      \  }}|rt        |t        «      r|sd}|	€d}	|€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)	zpFunctional API that performs AdamW algorithm computation.

    See :class:`~torch.optim.AdamW` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrp   )r-   rH   r   )rœ   Úts     r8   r�   zadamw.<locals>.<genexpr>ë  s    è ø€ ò 3Ø()Œ
�1”e—l‘l×#ñ3ùs   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizersz4torch.jit.script not supported with fused optimizers)r(   ri   rj   r$   r'   r&   r   r    r!   rg   rh   rd   )rH   r   r€   r¡   r3   r   r-   r   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   Í  s0  € ô< �<‰<×$Ñ$Ô&¬sñ 3Ø-8ô3ô 0ô Ø^ó
ð 	
ð €}˜˜Ü1Ø�N¨eô
‰
ˆˆ7ñ ”z "¤fÔ-±jØˆGØ€}ØˆØ€Øˆá”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ã Ý ÷÷ ÷ ÷ õ ð* �GÐ
€ôSˆIô Sðn&ð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ð 	ˆf�eˆmÑðtKð ðtKð 
ðtKð  ð!tKð" ð#tKð$ ð%tKð& ó'tKðnsØ�‰Lðsà�‰<ðsð �6‰lðsð �f‘ð	sð
 ˜&‘\ðsð �f‘ðsð ˜Ñ ðsð ˜Ñðsð ðsð ðsð ðsð 	ˆf�eˆmÑðsð ðsð 
ðsð  ð!sð" ð#sð$ ð%sð& ó'sðl`Ø�‰Lð`à�‰<ð`ð �6‰lð`ð �f‘ð	`ð
 ˜&‘\ð`ð �f‘ð`ð ˜Ñ ð`ð ˜Ñð`ð ð`ð ð`ð ð`ð 	ˆf�eˆmÑð`ð ð`ð 
ð`ð  ð!`ð" ð#`ð$ ð%`ð& ð'`ð( 
ó)`ñF  Ð1EÔFð #ØØ Ø Ø#'Ø"&ØñSØ�‰LðSà�‰<ðSð �6‰lðSð �f‘ð	Sð
 ˜&‘\ðSð �f‘ðSð �d‰^ðSð ðSð ðSð �D‰>ðSð ˜Ñ ðSð ˜ÑðSð ðSð" ð#Sð$ ð%Sð& ð'Sð( 	ˆe�VˆmÑð)Sð* ð+Sð, 
ð-Sð. ò/Só GñSr9   