Ë
    [^(hŽ@  ã                   óø  — d dl 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 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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fd„Z ee¬«      	 	 	 	 d dee   dee   dee   dee   dee   dedee   dededededededefd„«       Zy)!é    )ÚAnyÚ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Ú_maximize_docÚ_params_docÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚAdadeltaÚadadeltac                   óÎ   ‡ — e Zd Z	 	 	 	 	 dddddœdedeeef   dedededee   d	ed
edefˆ fd„Z	ˆ fd„Z
deeef   dee   dee   dee   dee   dee   fd„Zedd„«       Zˆ xZS )r   F)Ú
capturableÚmaximizeÚdifferentiableÚparamsÚlrÚrhoÚepsÚweight_decayÚforeachr   r   r   c          
      óP  •— t        |t        «      r|j                  «       dk7  rt        d«      ‚d|k  st        d|› �«      ‚d|cxk  rdk  sn t        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚t	        ||||||||	¬	«      }
t
        ‰| �  ||
«       y )
Nr   zTensor lr must be 1-elementg        zInvalid learning rate: ç      ð?zInvalid rho value: zInvalid epsilon value: 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              €úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/optim/adadelta.pyr)   zAdadelta.__init__   sÉ   ø€ ô �bœ&Ô! b§h¡h£j°A¢oÜÐ:Ó;Ð;Ø�bŠyÜÐ6°r°dÐ;Ó<Ð<Ø�cÔ ˜SÔ ÜÐ2°3°%Ð8Ó9Ð9Ø�cŠzÜÐ6°s°eÐ<Ó=Ð=Ø�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Adadelta.__setstate__@   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.   r?   Úparams_with_gradÚgradsÚsquare_avgsÚ
acc_deltasÚstate_stepsc                 óú  — 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*Adadelta does not support sparse gradientsr   r   © r1   r4   r0   )Úmemory_formatÚ
square_avgÚ	acc_delta)Úgradr;   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr8   r:   Úzerosr   r3   Ú
zeros_likeÚpreserve_format)
r*   r?   rC   rD   rE   rF   rG   Úhas_complexr@   r8   s
             r-   Ú_init_groupzAdadelta._init_groupS   sS  € ð ˆà�x‘ó 	.ˆAØ�v‰vˆ~ØØœ5×+Ñ+¨AÓ.Ñ.ˆKØ×#Ñ# AÔ&Ø�v‰v×ÒÜ"Ð#OÓPÐPØ�L‰L˜Ÿ™Ô à—J‘J˜q‘MˆEô �5‹z˜QŠð ˜\Ò*ô —K‘K Ô*;Ó*=ÀaÇhÁhÕOäŸ™ RÔ/@Ó/BÔCð �f‘ô ',×&6Ñ&6Ø¤U×%:Ñ%:ô'��lÑ#ô &+×%5Ñ%5Ø¤U×%:Ñ%:ô&��kÑ"ð ×Ñ˜u \Ñ2Ô3Ø×Ñ˜e KÑ0Ô1Ø×Ñ˜u V™}Ö-ð9	.ð< Ðr.   c                 óx  — | j                  «        d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]f  }g }g }g }g }g }|d   |d   |d   |d   |d   |d   |d   |d	   f\  }	}
}}}}}}| j	                  ||||||«      }t        ||||||	|
|||||||¬
«       Œh |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   r   r    r!   r   r   r   rU   )Ú _cuda_graph_capture_health_checkr;   Úenable_gradr6   rV   r   )r*   ÚclosureÚlossr?   rC   rD   rE   rF   rG   r   r   r   r    r!   r   r   r   rU   s                     r-   r0   zAdadelta.step~   s3  € ð 	×-Ñ-Ô/àˆØÐÜ×"Ñ"Ó$ñ !Ù“y�÷!ð ×&Ñ&ò -	ˆEØ-/ÐØ"$ˆEØ(*ˆKØ')ˆJØ(*ˆKð �d‘Ø�e‘Ø�e‘Ø�nÑ%Ø�iÑ Ø�jÑ!ØÐ&Ñ'Ø�lÑ#ð	ñ	ØØØØØØØØð ×*Ñ*ØÐ'¨°¸ZÈóˆKô Ø ØØØØØØØØ)ØØ!Ø-Ø%Ø'öð=-	ð^ ˆ÷e!ð !ús   ©B0Â0B9)r#   gÍÌÌÌÌÌì?g�íµ ÷Æ°>r   N©N)Ú__name__Ú
__module__Ú__qualname__r   r   r=   r   r   Úboolr)   r5   r'   Ústrr   ÚlistrV   r   r0   Ú__classcell__)r,   s   @r-   r   r      s  ø„ ð $'ØØØØ"&ð"+ð !ØØ$ò"+àð"+ð �%˜�-Ñ ð"+ð ð	"+ð
 ð"+ð ð"+ð ˜$‘ð"+ð ð"+ð ð"+ð õ"+ôHð&)à�C˜�H‰~ð)ð ˜v™,ð)ð �F‰|ð	)ð
 ˜&‘\ð)ð ˜‘Lð)ð ˜&‘\ó)ðV "ò=ó "ô=r.   a  Implements Adadelta algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \: \theta_0 \text{ (params)},
                \: f(\theta) \text{ (objective)}, \: \rho \text{ (decay)},
                \: \lambda \text{ (weight decay)}                                                \\
            &\textbf{initialize} :  v_0  \leftarrow 0 \: \text{ (square avg)},
                \: u_0 \leftarrow 0 \: \text{ (accumulate variables)}                     \\[-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} v_t      \leftarrow v_{t-1} \rho + g^2_t (1 - \rho)                    \\
            &\hspace{5mm}\Delta x_t    \leftarrow   \frac{\sqrt{u_{t-1} +
                \epsilon }}{ \sqrt{v_t + \epsilon}  }g_t \hspace{21mm}                           \\
            &\hspace{5mm} u_t  \leftarrow   u_{t-1}  \rho +
                 \Delta x^2_t  (1 - \rho)                                                        \\
            &\hspace{5mm}\theta_t      \leftarrow   \theta_{t-1} - \gamma  \Delta x_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 `ADADELTA: An Adaptive Learning Rate Method`_.
    z
    Args:
        ar  
        lr (float, Tensor, optional): coefficient that scale delta before it is applied
            to the parameters (default: 1.0)
        rho (float, optional): coefficient used for computing a running average
            of squared gradients (default: 0.9). A higher value of `rho` will
            result in a slower average, which can be helpful for preventing
            oscillations in the learning process.
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-6).
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        z	
        zd

    .. _ADADELTA\: An Adaptive Learning Rate Method:
        https://arxiv.org/abs/1212.5701

    r   rD   rE   rF   rG   r   r   r   r    r   r   r   rU   c                óÌ  ‡— t         j                  j                  «       s7|r5t        d¬«      Št	        ˆfd„t        | |«      D «       «      sJ d‰› d�«       ‚t        | ||||«      D �]{  \  }}}}}|dz  }|	s|n| }|dk7  r|j                  ||¬«      }t        j                  |«      r?t        j                  |«      }t        j                  |«      }t        j                  |«      }|j                  |«      j                  ||d|z
  ¬	«       |j                  |«      j                  «       }|j                  |«      j                  «       }|
r|j                  «       }|j                  |«      j                  |«       |j                  |«      j                  ||d|z
  ¬	«       t        j                  |«      rt        j                  |«      }|j                  || ¬«       �Œ~ y )
NF©Úsupports_xlac              3   ó²   •K  — | ]N  \  }}|j                   j                  |j                   j                  k(  xr |j                   j                  ‰v –— ŒP y ­wr\   ©r3   Útype©Ú.0r@   r0   Úcapturable_supported_devicess      €r-   ú	<genexpr>z*_single_tensor_adadelta.<locals>.<genexpr>	  óQ   øè ø€ ò 
ñ ��4ð �H‰H�M‰M˜TŸ[™[×-Ñ-Ñ-ò >Ø—‘—‘Ð!=Ð=ó>ñ
ùó   ƒAAúIIf capturable=True, params and state_steps must be on supported devices: ú.r   r   ©Úalpha©Úvalue)r;   ÚcompilerÚis_compilingr   ÚallÚzipÚaddrN   Úview_as_realÚmul_Úaddcmul_Úsqrt_ÚcloneÚdiv_Úview_as_complexÚadd_)r   rD   rE   rF   rG   r   r   r   r    r   r   r   rU   ÚparamrM   rK   rL   r0   ÚstdÚdeltarl   s                       @r-   Ú_single_tensor_adadeltar†   ô   sÈ  ø€ ô" �>‰>×&Ñ&Ô(©ZÜ'HØô(
Ð$ô ó 
ô ˜v {Ó3ô
ô 
ð 	wð WÐWsÐVtÐtuÐvó		wð 
ô 58Ø��{ J°ó5ó %Ñ0ˆˆt�Z ¨Dð 	�‰	ˆÙ#‰t¨$¨ˆà˜1ÒØ—8‘8˜E¨�8Ó6ˆDä×Ñ˜EÔ"Ü×+Ñ+¨JÓ7ˆJÜ×*Ñ*¨9Ó5ˆIÜ×%Ñ% dÓ+ˆDà�‰˜Ó×%Ñ% d¨D¸¸C¹Ð%Ô@Ø�n‰n˜SÓ!×'Ñ'Ó)ˆØ—‘˜cÓ"×(Ñ(Ó*ˆÙØ—K‘K“MˆEØ�
‰
�3‹×Ñ˜TÔ"Ø�‰�sÓ×$Ñ$ U¨E¸¸S¹Ð$ÔAä×Ñ˜EÔ"Ü×)Ñ)¨%Ó0ˆEØ�
‰
�5  ˆ
Ö$ñ1%r.   c                ón  ‡— |
rJ d«       ‚t         j                  j                  «       s7|r5t        d¬«      Št	        ˆfd„t        | |«      D «       «      sJ d‰› d�«       ‚t        | «      dk(  ry t        j                  | ||||g«      }|j                  «       D �]™  \  \  }}}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }|rt        ||||«       t         j                  j                  «       s=|d   j                  r.t        j                  |t        j                   dd	¬
«      d¬«       nt        j                  |d«       |	rt        j"                  |«      }|dk7  r3|	rt        j                  |||¬«       nt        j$                  |||¬«      }t        j&                  ||«       t        j(                  |||d|z
  ¬«       t        j$                  ||«      }t        j*                  |«       t        j$                  ||«      }t        j*                  |«       t        j,                  ||«       t        j&                  ||«       t        j&                  ||«       t        j(                  |||d|z
  ¬«       |rIt/        |t         j                  «      r/t        j&                  || «       t        j                  ||«       �Œ�t        j                  ||| ¬«       �Œœ y )Nz#_foreach ops don't support autogradFre   c              3   ó²   •K  — | ]N  \  }}|j                   j                  |j                   j                  k(  xr |j                   j                  ‰v –— ŒP y ­wr\   rh   rj   s      €r-   rm   z)_multi_tensor_adadelta.<locals>.<genexpr>A  rn   ro   rp   rq   r   r#   Úcpu)r3   rr   r   rt   )r;   rv   rw   r   rx   ry   r:   r   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   rb   r   r   Úis_cpuÚ_foreach_add_r>   Ú_foreach_negÚ_foreach_addÚ_foreach_mul_Ú_foreach_addcmul_Ú_foreach_sqrt_Ú_foreach_div_r$   )r   rD   rE   rF   rG   r   r   r   r    r   r   r   rU   Úgrouped_tensorsÚdevice_params_Údevice_grads_Údevice_square_avgs_Údevice_acc_deltas_Údevice_state_steps_Ú_Údevice_paramsÚdevice_gradsÚdevice_square_avgsÚdevice_acc_deltasÚdevice_state_stepsr„   Údeltasrl   s                              @r-   Ú_multi_tensor_adadeltar¡   *  sé  ø€ ñ  ÐDÐDÓDÐô �>‰>×&Ñ&Ô(©ZÜ'HØô(
Ð$ô ó 
ô ˜v {Ó3ô
ô 
ð 	wð WÐWsÐVtÐtuÐvó		wð 
ô ˆ6ƒ{�aÒØä×BÑBØ	�˜ Z°Ð=ó€Oð ×"Ñ"Ó$ó>Bñ 		ñ 	ØØØØØØÜœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ!¤$¤v¡,Ð0CÓDÐÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐÙÜØ˜|Ð-?ÐARôô �~‰~×*Ñ*Ô,Ð1CÀAÑ1F×1MÒ1MÜ×ÑØ"¤E§L¡L°¸UÔ$CÈ3öô ×ÑÐ 2°AÔ6áÜ ×-Ñ-¨lÓ;ˆLà˜1ÒáÜ×#Ñ# L°-À|ÖTä$×1Ñ1Ø  -°|ô �ô 	×ÑÐ.°Ô4Ü×ÑØ ¨lÀ!ÀcÁ'õ	
ô × Ñ Ð!3°SÓ9ˆÜ×Ñ˜SÔ!ä×#Ñ#Ð$5°sÓ;ˆÜ×Ñ˜VÔ$Ü×Ñ˜F CÔ(Ü×Ñ˜F LÔ1ä×ÑÐ-¨sÔ3Ü×ÑÐ 1°6¸6ÈÈSÉÕQñ œ* R¬¯©Ô6Ü×Ñ ¨¨Ô,Ü×Ñ ¨vÖ6ä×Ñ ¨v¸b¸S×Añ}>Br.   )Úsingle_tensor_fnr!   c	                óz  — 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)zvFunctional API that performs Adadelta algorithm computation.

    See :class:`~torch.optim.Adadelta` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr\   )r$   r;   r   )rk   Úts     r-   rm   zadadelta.<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   r   r   r    r   r   r   rU   )
r;   rv   rw   rx   rQ   r
   ÚjitÚis_scriptingr¡   r†   )r   rD   rE   rF   rG   r   r!   r   rU   r   r   r   r    r   rš   Úfuncs                   r-   r   r   Ž  sÁ   € ô6 �>‰>×&Ñ&Ô(´ñ 5Ø-8ô5ô 2ô Ø^ó
ð 	
ð
 €Ü1Ø�N¨eô
‰
ˆˆ7ñ ”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTá”u—y‘y×-Ñ-Ô/Ü%‰ä&ˆáØØØØØØØØØ!ØØ%ØØör.   )FNFF)Útypingr   r   r   r   r;   r   Ú	optimizerr	   r
   r   r   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rb   r=   r`   r†   r¡   r   rI   r.   r-   ú<module>r®      s¨  ðç -Ó -ã Ý ÷÷ ÷ õ ð" �zÐ
"€ôaˆyô aðJð8	à	ˆð 
	ð 
ˆð 	Ø	Ðð 	Ø	ˆð 	Ø	Ðð ðñ90ð 	Ô ðj3%Ø�‰Lð3%à�‰<ð3%ð �f‘ð3%ð �V‘ð	3%ð
 �f‘ð3%ð 	ð3%ð 
ð3%ð 
ð3%ð ð3%ð ð3%ð ð3%ð ð3%ð ó3%ðlaBØ�‰LðaBà�‰<ðaBð �f‘ðaBð �V‘ð	aBð
 �f‘ðaBð 	ðaBð 
ðaBð 
ðaBð ðaBð ðaBð ðaBð ðaBð óaBñH  Ð1HÔIð Ø"Ø Øñ=Ø�‰Lð=à�‰<ð=ð �f‘ð=ð �V‘ð	=ð
 �f‘ð=ð ð=ð �d‰^ð=ð ð=ð ð=ð 	ð=ð 
ð=ð 
ð=ð  ð!=ð" ò#=ó Jñ=r.   