Ë
    ùÿæiOD  ã            "       ó  — d dl 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 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dd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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dz  dedededededededededdf d!„«       Zy)#é    )ÚcastN)Ú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Ú
_to_scalarÚ_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z  deeef   deded	edz  d
edededdfˆ fd„Zˆ fd„Z	d„ Z
edd„«       Zˆ xZS )r   NF)ÚmaximizeÚdifferentiableÚ
capturableÚparamsÚlrÚbetasÚepsÚweight_decayÚforeachr   r   r   Úreturnc          	      óŽ  •— 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
|› �«      ‚||||||||	dœ}
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ÚsuperÚ__init__)Úselfr   r   r   r   r   r    r   r   r   ÚdefaultsÚ	__class__s              €úg/Volumes/fast/ai/experiments/voice-extract-mac/.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©r2   )r(   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r3   )r*   r8   ÚgroupÚpÚp_stateÚstep_valr,   s         €r-   r5   zAdamax.__setstate__D   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   © r1   r#   r4   r0   )Úmemory_formatÚexp_avgÚexp_inf)Úgradr;   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr8   r:   Úzerosr   r3   r>   Ú
zeros_likeÚpreserve_format)
r*   r?   Úparams_with_gradÚgradsÚexp_avgsÚexp_infsÚstate_stepsÚhas_complexr@   r8   s
             r-   Ú_init_groupzAdamax._init_groupW   sJ  € ð ˆØ�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   rU   )Ú'_accelerator_graph_capture_health_checkr;   Úenable_gradr6   rV   r   )r*   ÚclosureÚlossr?   rP   rQ   rR   rS   rT   rX   rY   r   r   r   r    r   r   r   rU   s                      r-   r0   zAdamax.stepz   s  € ð 	×4Ñ4Ô6àˆØÐÜ×"Ñ"Õ$Ù“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   ÚtupleÚboolr)   r5   rV   r   r0   Ú__classcell__)r,   s   @r-   r   r      s¼   ø„ ð "Ø%1ØØØ#ð$+ð Ø$Ø ò$+àð$+ð �F‰Nð$+ð �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   rQ   rR   rS   rT   r   rX   rY   r   r   r   r   r   rU   r!   c       	         óF  — t         j                  j                  «       st        |«      }t	        | «      D �]i  \  }}||   }|
s|n| }||   }||   }||   }t         j
                  j                  «       s`|r^t        «       }|j                  j                  |j                  j                  k(  r|j                  j                  |v st        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
  }|j1                  |«       ||z  }|j3                  ||«       �Œ?d|t5        |«      z  z
  }||z  }|j3                  ||| ¬	«       �Œl y )
NúIIf capturable=True, params and state_steps must be on supported devices: Ú.r   r   ©Úalpha)ÚoutF)Úkeepdim)Úvalue)r;   ÚjitÚis_scriptingr   Ú	enumerateÚcompilerÚis_compilingr   r3   ÚtypeÚAssertionErrorÚaddrI   Úview_as_realÚlerp_ÚmaximumÚmul_ÚabsÚadd_ÚcatÚ	unsqueezeÚ
unsqueeze_Úcopy_ÚamaxÚdiv_Úaddcdiv_r   )r   rQ   rR   rS   rT   r   rX   rY   r   r   r   r   r   rU   ÚiÚparamrH   rF   rG   Ústep_tÚcapturable_supported_devicesÚnorm_bufÚneg_bias_correctionÚdenomÚbias_correctionÚclrs                             r-   Ú_single_tensor_adamaxr‹   â   sQ  € ô" �9‰9×!Ñ!Ô#Ü˜‹^ˆä˜f×%‰ˆˆ5Ø�Q‰xˆÙ#‰t¨$¨ˆØ˜1‘+ˆØ˜1‘+ˆØ˜Q‘ˆô �~‰~×*Ñ*Ô,±Ü+LÓ+NÐ(à—‘×!Ñ! V§]¡]×%7Ñ%7Ò7Ø—L‘L×%Ñ%Ð)EÑEä$Ø_Ð`|Ð_}Ð}~Ðóð ð
 	�!‰ˆà˜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ñs &r.   c       	   	      óÂ  ‡— |rt        d«      ‚t        | «      dk(  ry t        j                  j	                  «       s=|r;t        d¬«      Št        ˆfd„t        | |d¬«      D «       «      st        d‰› d	�«      ‚t        |«      }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        j0                  |«       t        j$                  ||«       t        j2                  ||«       |rqt        j4                  ||«      }t        j6                  |d«       t        j8                  ||«       t        j:                  ||«      }t        j<                  |||«       �ŒQ|D �cg c]  }d|t?        |«      z  z
  ‘Œ }}|D �cg c]  }t?        |«      |z  dz  ‘Œ }}t        j<                  ||||«       �Œ§ 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^   )r3   rr   )Ú.0r@   r0   r…   s      €r-   Ú	<genexpr>z'_multi_tensor_adamax.<locals>.<genexpr>N  sR   øè ø€ ð 
ñ A‘��4ð �H‰H�M‰M˜TŸ[™[×-Ñ-Ñ-ò >Ø—‘—‘Ð!=Ð=ó>á@ùs   ƒAAT)Ústrictrf   rg   r$   Úcpu)r3   rh   r   éÿÿÿÿ) rs   r:   r;   rp   rq   r   ÚallÚzipr   r   Ú"_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   rQ   rR   rS   rT   r   rX   rY   r   r   r   r   r   rU   Ú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ˆ   r0   ÚbcÚ	step_sizer…   s                                   @r-   Ú_multi_tensor_adamaxr¶   2  s:  ø€ ñ" ÜÐBÓCÐCä
ˆ6ƒ{�aÒØô �>‰>×&Ñ&Ô(©ZÜ'HØô(
Ð$ô ó 
ô ˜v {¸4Õ@ó
ô 
ô
 !Ø[Ð\xÐ[yÐyzÐ{óð ô 
�B‹€Bä×BÑBØ	�˜ (¨KÐ8ó€Oð ×"Ñ"×$ñ		ñ 	ØØØØØØÜœ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ó Ù:M°$��EœZ¨Ó-Ñ-Ó-Ð:Mð ð  ñ ?OÓOÑ>N¸œ* R›.¨2Ñ-°Ó3Ð>NˆIÐOÜ×#Ñ#ØÐ 0Ð2BÀIöñC %ùòz ùò 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Ù-8¨Œ
�1”e—l‘l×#©[ùs   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizers)	r   rX   rY   r   r   r   r   rU   r   )
r;   rp   rq   r”   rL   r   rm   rn   r¶   r‹   )r   rQ   rR   rS   rT   r    r   r   r   rU   r   rX   rY   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   Ú	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__r˜   r=   rc   r‹   r¶   r   rD   r.   r-   Ú<module>rÁ      sì  ðå ã Ý ÷÷ ÷ ÷ ñ ð& �XÐ
€ôRˆYô Rðlð4	à	ˆð 	ð 
ˆð 	Ø	ˆð 	Ø	Ðð 	Ø	Ðð ðñ5+ð „ð`M9Ø�‰LðM9à�‰<ðM9ð �6‰lðM9ð �6‰lð	M9ð
 �f‘ðM9ð 
ðM9ð ðM9ð ðM9ð 	ðM9ð ðM9ð ðM9ð ðM9ð ðM9ð ðM9ð  
ó!M9ð`sØ�‰Lðsà�‰<ðsð �6‰lðsð �6‰lð	sð
 �f‘ðsð 
ðsð ðsð ðsð 	ðsð ðsð ðsð ðsð ðsð ðsð  
ó!sñl  Ð1FÔGð  ØØ ØØñ<Ø�‰Lð<à�‰<ð<ð �6‰lð<ð �6‰lð	<ð
 �f‘ð<ð �D‰[ð<ð ð<ð ð<ð ð<ð ð<ð 
ð<ð ð<ð  ð!<ð" 	ð#<ð$ ð%<ð& 
ò'<ó Hñ<r.   