Ë
    [^(hC  ã                    ó  — d dl 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 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dede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dededededededede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dedededededededefd „«       Zy)"é    )ÚcastÚOptionalÚUnionN)ÚTensoré   )Ú_capturable_docÚ_default_to_fused_or_foreachÚ_differentiable_docÚ_disable_dynamo_if_unsupportedÚ_foreach_docÚ!_get_capturable_supported_devicesÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚAdamaxÚadamaxc                   ó–   ‡ — e Zd Z	 	 	 	 	 dddddœdedeeef   deeef   dededee	   d	e	d
e	de	fˆ fd„Z
ˆ fd„Zd„ Zedd„«       Zˆ xZS )r   F)ÚmaximizeÚdifferentiableÚ
capturableÚparamsÚlrÚbetasÚepsÚweight_decayÚforeachr   r   r   c          
      óž  •— t        |t        «      r|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
        ‰| �  ||
«       y )Nr   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   )Ú
isinstancer   ÚnumelÚ
ValueErrorÚdictÚsuperÚ__init__)Úselfr   r   r   r   r    r!   r   r   r   ÚdefaultsÚ	__class__s              €úP/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/optim/adamax.pyr*   zAdamax.__init__   sù   ø€ ô �bœ&Ô! b§h¡h£j°A¢oÜÐ:Ó;Ð;Ø�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äØØØØ%ØØØ)Ø!ô	
ˆô 	‰Ñ˜ Õ*ó    c                 ó0  •— t         ‰| �  |«       | j                  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   r*t        j                  |t        «       |j                  ¬	«      nt        j                  |t        «       ¬
«      |d<   Œ§ Œù y )Nr!   r   Fr   r   r   r   Ústep©ÚdtypeÚdevice©r3   )r)   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r4   )r+   r9   ÚgroupÚpÚp_stateÚstep_valr-   s         €r.   r6   zAdamax.__setstate__C   sú   ø€ Ü‰Ñ˜UÔ#Ø×&Ñ&ò 	ˆEØ×Ñ˜Y¨Ô-Ø×Ñ˜Z¨Ô/Ø×ÑÐ-¨uÔ5Ø×Ñ˜\¨5Ô1Ø˜8‘_ò 
�ØŸ*™*Ÿ.™.¨¨BÓ/�Ü�w“< 1Ó$¬U¯_©_¸WÀV¹_Õ-MÜ$ W¨V¡_Ó5�Hð
 ! Ò.ô Ÿ™Ø$Ô,=Ó,?ÈÏÉõô #Ÿ\™\¨(Ô:KÓ:MÔNð ˜F’Oñ	
ñ	r/   c                 óú  — d}|d   D �]o  }|j                   €Œ|t        j                  |«      z  }|j                  |«       |j                   j                  rt        d«      ‚|j                  |j                   «       | j                  |   }	t        |	«      dk(  r¡|d   r*t        j                  dt        «       |j                  ¬«      nt        j                  dt        «       ¬	«      |	d
<   t        j                  |t        j                  ¬«      |	d<   t        j                  |t        j                  ¬«      |	d<   |j                  |	d   «       |j                  |	d   «       |j                  |	d
   «       �Œr |S )NFr   z(Adamax does not support sparse gradientsr   r   © r2   r#   r5   r1   )Úmemory_formatÚexp_avgÚexp_inf)Úgradr<   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr9   r;   Úzerosr   r4   r?   Ú
zeros_likeÚpreserve_format)
r+   r@   Úparams_with_gradÚgradsÚexp_avgsÚexp_infsÚstate_stepsÚhas_complexrA   r9   s
             r.   Ú_init_groupzAdamax._init_groupV   sO  € ð ˆØ�x‘ó 	.ˆAØ�v‰vˆ~ØØœ5×+Ñ+¨AÓ.Ñ.ˆKØ×#Ñ# AÔ&Ø�v‰v×ÒÜ"Ð#MÓNÐNØ�L‰L˜Ÿ™Ô à—J‘J˜q‘MˆEô �5‹z˜QŠð ˜\Ò*ô —K‘K Ô*;Ó*=ÀaÇhÁhÕOäŸ™ cÔ1BÓ1DÔEð �f‘ô
 $)×#3Ñ#3Ø¤U×%:Ñ%:ô$��iÑ ô $)×#3Ñ#3Ø¤U×%:Ñ%:ô$��iÑ ð �O‰O˜E )Ñ,Ô-Ø�O‰O˜E )Ñ,Ô-Ø×Ñ˜u V™}Ö-ð7	.ð: Ðr/   c                 óz  — | j                  «        d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]g  }g }g }g }g }g }|d   \  }	}
|d   }|d   }|d   }|d   }|d   }|d   }|d	   }| j	                  ||||||«      }t        |||||||	|
|||||||¬
«       Œi |S # 1 sw Y   Œ�xY w)z±Performs 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   Úbeta1Úbeta2r   r    r!   r   r   r   rV   )Ú _cuda_graph_capture_health_checkr<   Úenable_gradr7   rW   r   )r+   ÚclosureÚlossr@   rQ   rR   rS   rT   rU   rY   rZ   r   r   r    r!   r   r   r   rV   s                      r.   r1   zAdamax.stepy   s$  € ð 	×-Ñ-Ô/àˆØÐÜ×"Ñ"Ó$ñ !Ù“y�÷!ð ×&Ñ&ò $	ˆEØ-/ÐØ"$ˆEØ%'ˆHØ%'ˆHØ(*ˆKà  ™>‰LˆE�5Ø˜‘,ˆCØ�t‘ˆBØ  Ñ0ˆLØ˜IÑ&ˆGØ˜ZÑ(ˆHØ"Ð#3Ñ4ˆNØ˜|Ñ,ˆJà×*Ñ*ØÐ'¨°¸(ÀKóˆKô Ø ØØØØØØØØØ)ØØ!Ø-Ø%Ø'öð)$	ðL ˆ÷S!ð !ús   ©B1Â1B:)gü©ñÒMb`?)gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?g:Œ0âŽyE>r   N©N)Ú__name__Ú
__module__Ú__qualname__r   r   r>   r   Útupler   Úboolr*   r6   rW   r   r1   Ú__classcell__)r-   s   @r.   r   r      s·   ø„ ð $(Ø%1ØØØ"&ð$+ð Ø$Ø ò$+àð$+ð �%˜�-Ñ ð$+ð �U˜E�\Ñ"ð	$+ð
 ð$+ð ð$+ð ˜$‘ð$+ð ð$+ð ð$+ð õ$+ôLò&!ðF "ò4ó "ô4r/   aÁ  Implements Adamax algorithm (a variant of Adam based on infinity norm).

    .. 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)},
                \: \lambda \text{ (weight decay)},                                                \\
            &\hspace{13mm}    \epsilon \text{ (epsilon)}                                          \\
            &\textbf{initialize} :  m_0 \leftarrow 0 \text{ ( first moment)},
                u_0 \leftarrow 0 \text{ ( infinity norm)}                                 \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm}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}u_t      \leftarrow   \mathrm{max}(\beta_2 u_{t-1}, |g_{t}|+\epsilon)   \\
            &\hspace{5mm}\theta_t \leftarrow \theta_{t-1} - \frac{\gamma m_t}{(1-\beta^t_1) u_t} \\
            &\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:
        a›  
        lr (float, Tensor, optional): learning rate (default: 2e-3)
        betas (Tuple[float, float], optional): coefficients used for computing
            running averages of gradient and its square
        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)
        z	
        zd

    .. _Adam\: A Method for Stochastic Optimization:
        https://arxiv.org/abs/1412.6980

    r   rR   rS   rT   rU   r   rY   rZ   r   r    r   r   r   rV   c       	         óì  — t        | «      D �]e  \  }}||   }|
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                  |«      rTt        j                  |«      }t        j                  |«      }t        j                  |«      }t        j                  |«      }|j                  |d|z
  «       |sEt        j                  |j                  |«      |j                  «       j                  |«      |¬«       n‰t        j                  |j                  |«      j!                  d«      |j                  «       j                  |«      j#                  d«      gd«      }|j%                  t        j&                  |dd¬«      «       |r2||z  dz
  }|j)                  |«       ||z  }|j+                  ||«       �Œ;d|t-        |«      z  z
  }||z  }|j+                  ||| ¬	«       �Œh y )
NúIIf capturable=True, params and state_steps must be on supported devices: ú.r   r   ©Úalpha)ÚoutF)Úkeepdim)Úvalue)Ú	enumerater<   ÚcompilerÚis_compilingr   r4   ÚtypeÚaddrJ   Úview_as_realÚlerp_ÚmaximumÚmul_ÚabsÚadd_ÚcatÚ	unsqueezeÚ
unsqueeze_Úcopy_ÚamaxÚdiv_Úaddcdiv_r   )r   rR   rS   rT   rU   r   rY   rZ   r   r    r   r   r   rV   ÚiÚparamrI   rG   rH   Ústep_tÚcapturable_supported_devicesÚnorm_bufÚneg_bias_correctionÚdenomÚbias_correctionÚclrs                             r.   Ú_single_tensor_adamaxr‰   á   sE  € ô" ˜fÓ%ó 69‰ˆˆ5Ø�Q‰xˆÙ#‰t¨$¨ˆØ˜1‘+ˆØ˜1‘+ˆØ˜Q‘ˆô �~‰~×*Ñ*Ô,±Ü+LÓ+NÐ(à—‘×!Ñ! V§]¡]×%7Ñ%7Ò7Ø—L‘L×%Ñ%Ð)EÑEð{ð [Ð[wÐZxÐxyÐzó{ðFð
 	�!‰ˆà˜1ÒØ—8‘8˜E¨�8Ó6ˆDä×Ñ˜EÔ"Ü×&Ñ& uÓ-ˆEÜ×%Ñ% dÓ+ˆDÜ×(Ñ(¨Ó1ˆGÜ×(Ñ(¨Ó1ˆGð 	�‰�d˜A ™IÔ&áÜ�M‰MØ—‘˜UÓ#Ø—‘“
—‘ Ó$Øöô —y‘yØ—‘˜eÓ$×.Ñ.¨qÓ1°4·8±8³:·?±?À3Ó3G×3RÑ3RÐSTÓ3UÐVØóˆHð �M‰Mœ%Ÿ*™* X¨q¸%Ô@ÔAáð #(¨¡-°!Ñ"3ÐØ×$Ñ$ RÔ(ØÐ1Ñ1ˆEØ�N‰N˜7 EÖ*à %¬:°fÓ+=Ñ"=Ñ=ˆOØ�Ñ&ˆCà�N‰N˜7 G°C°4ˆNÖ8ñm69r/   c       	   	      ó˜  ‡— |rJ d«       ‚t        | «      dk(  ry t        j                  j                  «       s7|r5t	        d¬«      Št        ˆfd„t        | |«      D «       «      sJ d‰› d�«       ‚t        j                  | ||||g«      }|j                  «       D �]¤  \  \  }}}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }|r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(                  ||«       |
s|	dk(  rt        j*                  |«      }nt        j,                  |«       t        j                   ||«       t        j.                  ||«       |rqt        j0                  ||«      }t        j2                  |d«       t        j4                  ||«       t        j6                  ||«      }t        j8                  |||«       �ŒQ|D �cg c]  }d|t;        |«      z  z
  ‘Œ }}|D �cg c]  }t;        |«      |z  dz  ‘Œ }}t        j8                  ||||«       �Œ§ y c c}w c c}w )Nz#_foreach ops don't support autogradr   F)Úsupports_xlac              3   ó²   •K  — | ]N  \  }}|j                   j                  |j                   j                  k(  xr |j                   j                  ‰v –— ŒP y ­wr_   )r4   rq   )Ú.0rA   r1   rƒ   s      €r.   ú	<genexpr>z'_multi_tensor_adamax.<locals>.<genexpr>F  sQ   øè ø€ ò 
ñ ��4ð �H‰H�M‰M˜TŸ[™[×-Ñ-Ñ-ò >Ø—‘—‘Ð!=Ð=ó>ñ
ùs   ƒAArg   rh   r$   Úcpu)r4   ri   r   éÿÿÿÿ)r;   r<   ro   rp   r   ÚallÚzipr   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   Úlistr   r   Ú_foreach_negÚis_cpuÚ_foreach_add_r?   Ú_foreach_addÚ_foreach_lerp_Ú_foreach_mul_Ú_foreach_absÚ_foreach_abs_Ú_foreach_maximum_Ú_foreach_powÚ_foreach_sub_Ú_foreach_div_Ú_foreach_mulÚ_foreach_addcdiv_r   ) r   rR   rS   rT   rU   r   rY   rZ   r   r    r   r   r   rV   Úgrouped_tensorsÚgrouped_params_Úgrouped_grads_Úgrouped_exp_avgs_Úgrouped_exp_infs_Úgrouped_state_steps_Ú_Úgrouped_paramsÚgrouped_gradsÚgrouped_exp_avgsÚgrouped_exp_infsÚgrouped_state_stepsÚbias_correctionsr†   r1   ÚbcÚ	step_sizerƒ   s                                   @r.   Ú_multi_tensor_adamaxr³   +  s6  ø€ ñ" ÐDÐDÓDÐä
ˆ6ƒ{�aÒØô �>‰>×&Ñ&Ô(©ZÜ'HØô(
Ð$ô ó 
ô ˜v {Ó3ô
ô 
ð 	wð WÐWsÐVtÐtuÐvó		wð 
ô  ×BÑBØ	�˜ (¨KÐ8ó€Oð ×"Ñ"Ó$óIñ 		ñ 	ØØØØØØÜœd¤6™l¨OÓ<ˆÜœT¤&™\¨>Ó:ˆÜ¤¤V¡Ð.?Ó@ÐÜ¤¤V¡Ð.?Ó@ÐÜ"¤4¬¡<Ð1EÓFÐáÜØ Ð/?ÐAQôñ Ü!×.Ñ.¨}Ó=ˆMô �~‰~×*Ñ*Ô,Ð1DÀQÑ1G×1NÒ1NÜ×ÑØ#¤U§\¡\°#¸eÔ%DÈCöô ×ÑÐ 3°QÔ7à˜1ÒÙä×#Ñ# M°>ÈÖVä %× 2Ñ 2Ø! >¸ô!�ô
 	×ÑÐ-¨}¸aÀ%¹iÔHô 	×ÑÐ,¨eÔ4ñ ˜L¨AÒ-Ü!×.Ñ.¨}Ó=‰Mä×Ñ Ô.ä×Ñ˜M¨3Ô/Ü×ÑÐ 0°-Ô@ñ Ü$×1Ñ1°%Ð9LÓMÐä×ÑÐ 0°!Ô4Ü×ÑÐ 0°"Ô5ä×&Ñ&Ð'7Ð9IÓJˆEÜ×#Ñ# NÐ4DÀeÖLð ;Nö Ø26��EœZ¨Ó-Ñ-Ó-ð Ðð  ð ?OÖO¸œ* R›.¨2Ñ-°Ó3ÐOˆIÐOÜ×#Ñ#ØÐ 0Ð2BÀIöñOIùòF ùò Ps   Ë.MÌM)Úsingle_tensor_fnr!   c
                ó|  — t         j                  j                  «       st        d„ |D «       «      st	        d«      ‚|€t        | |d¬«      \  }}|r)t         j                  j                  «       rt	        d«      ‚|r%t         j                  j                  «       st        }nt        } || |||||
|||||||	|¬«       y)zrFunctional API that performs adamax algorithm computation.

    See :class:`~torch.optim.Adamax` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr_   )r%   r<   r   )r�   Úts     r.   rŽ   zadamax.<locals>.<genexpr>µ  s    è ø€ ò 5Ø()Œ
�1”e—l‘l×#ñ5ùs   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizers)	r   rY   rZ   r   r    r   r   rV   r   )
r<   ro   rp   r‘   rM   r	   ÚjitÚis_scriptingr³   r‰   )r   rR   rS   rT   rU   r!   r   r   r   rV   r   rY   rZ   r   r    rª   Úfuncs                    r.   r   r   ›  sÄ   € ô4 �>‰>×&Ñ&Ô(´ñ 5Ø-8ô5ô 2ô Ø^ó
ð 	
ð €Ü1Ø�N¨eô
‰
ˆˆ7ñ ”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTá”u—y‘y×-Ñ-Ô/Ü#‰ä$ˆáØØØØØØØØØØ!ØØ%ØØör/   )NFFFF)Útypingr   r   r   r<   r   Ú	optimizerr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__r•   r>   rd   r‰   r³   r   rE   r/   r.   ú<module>rÀ      sÊ  ðç (Ñ (ã Ý ÷÷ ÷ ÷ ð$ �XÐ
€ôRˆYô Rðlð4	à	ˆð 	ð 
ˆð 	Ø	ˆð 	Ø	Ðð 	Ø	Ðð ðñ5+ð „ð`G9Ø�‰LðG9à�‰<ðG9ð �6‰lðG9ð �6‰lð	G9ð
 �f‘ðG9ð 
ðG9ð ðG9ð ðG9ð 	ðG9ð ðG9ð ðG9ð ðG9ð ðG9ð óG9ðTmØ�‰Lðmà�‰<ðmð �6‰lðmð �6‰lð	mð
 �f‘ðmð 
ðmð ðmð ðmð 	ðmð ðmð ðmð ðmð ðmð ómñ`  Ð1FÔGð #ØØ ØØñ<Ø�‰Lð<à�‰<ð<ð �6‰lð<ð �6‰lð	<ð
 �f‘ð<ð �d‰^ð<ð ð<ð ð<ð ð<ð ð<ð 
ð<ð ð<ð  ð!<ð" 	ð#<ð$ ò%<ó Hñ<r/   