+
    &jnP                        R t ^ RIHt ^ RIt^ RIHt ^RIHtHtHtH	t	H
t
HtHtHtHtHtHtHtHtHt RR.t ! R R]4      tRR	] R
] R]
 R] R] R2,           ]n         R R ltR R lt]	! ]R7      RR R ll4       tR# )z)Implementation for the RMSprop algorithm.)castN)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
_to_scalar_use_grad_for_differentiable_view_as_real	OptimizerParamsTRMSproprmspropc                   h   a a ] tR t^t oRV3R lV 3R llltV 3R ltR t]RR l4       tRt	Vt
V ;t# )	r   c                ~   < V ^8  d   QhRS[ RS[S[,          RS[RS[RS[RS[RS[RS[R	S[R
,          RS[RS[RR
/# )   paramslralphaepsweight_decaymomentumcentered
capturableforeachNmaximizedifferentiablereturn)r   floatr   bool)format__classdict__s   "k/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/torch/optim/rmsprop.py__annotate__RMSprop.__annotate__   s     '+ '+'+ FN'+ 	'+
 '+ '+ '+ '+ '+ '+ '+ '+ 
'+    c                  < \        V\        4      '       d!   VP                  4       ^8w  d   \        R4      hRV8:  g   \        RV 24      hRV8:  g   \        RV 24      hRV8:  g   \        RV 24      hRV8:  g   \        RV 24      hRV8:  g   \        RV 24      hRVR	VR
VRVRVRVRVRV	RV
RV/
p\        SV `  W4       R# )   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid epsilon value: zInvalid momentum value: zInvalid weight_decay value: zInvalid alpha value: r   r   r   r   r   r   r   r   r    r!   N)
isinstancer   numel
ValueErrorsuper__init__)selfr   r   r   r   r   r   r   r   r   r    r!   defaults	__class__s   &&&&&&&&&&&& r'   r1   RMSprop.__init__   s     b&!!bhhjAo:;;by6rd;<<cz6se<==h7zBCCl";L>JKKe|4UG<== "U3L*wn
 	*r*   c                  < \         SV `  V4       V P                   EFB  pVP                  R ^ 4       VP                  RR4       VP                  RR4       VP                  RR4       VP                  RR4       VP                  RR4       VR,           F  pV P                  P                  V. 4      p\        V4      ^ 8w  g   K1  \        P                  ! VR	,          4      '       d   KV  \        VR	,          4      pVR,          '       d,   \        P                  ! V\        4       VP                  R
7      M\        P                  ! V\        4       R7      VR	&   K  	  EKE  	  R# )r   r   Fr   Nr    r!   r   r   stepdtypedevicer9   )r0   __setstate__param_groups
setdefaultstategetlentorch	is_tensorr#   tensorr
   r:   )r2   r?   grouppp_statestep_valr4   s   &&    r'   r<   RMSprop.__setstate__H   s   U#&&EZ+Z/Y-Z/-u5\518__**..B/w<1$U__WV_-M-M$WV_5H
 !.. $,=,? #\\(:K:MN FO	 % 'r*   c                ^   R pVR,           EF  p	V	P                   f   K  V\        P                  ! V	4      ,          pVP                  V	4       V	P                   P                  '       d   \        R4      hVP                  V	P                   4       V P                  V	,          p
\        V
4      ^ 8X  d   VR,          '       d,   \        P                  ! R\        4       V	P                  R7      M\        P                  ! R\        4       R7      V
R&   \        P                  ! V	\        P                  R7      V
R&   VR	,          ^ 8  d*   \        P                  ! V	\        P                  R7      V
R
&   VR,          '       d*   \        P                  ! V	\        P                  R7      V
R&   VP                  V
R,          4       VP                  V
R,          4       VR	,          ^ 8  d   VP                  V
R
,          4       VR,          '       g   EK  VP                  V
R,          4       EK  	  V# )Fr   z)RMSprop does not support sparse gradientsr   r8   r;   r7   )memory_format
square_avgr   momentum_bufferr   grad_avg )gradrB   
is_complexappend	is_sparseRuntimeErrorr?   rA   zerosr
   r:   
zeros_likepreserve_format)r2   rE   params_with_gradgradssquare_avgsmomentum_buffer_list	grad_avgsstate_stepshas_complexrF   r?   s   &&&&&&&&   r'   _init_groupRMSprop._init_group]   s    xAvv~5++A..K##A&vv"#NOOLL JJqME 5zQ \** KK*;*=ahhOR/@/BC f
 ',&6&6U%:%:'l# $q(/4/?/?)>)>0E+, $$(-(8(8)>)>)E*% u\23uV}-Z 1$$++E2C,DEZ    z!23I !L r*   c                   V P                  4        RpVe.   \        P                  ! 4       ;_uu_ 4        V! 4       pRRR4       V P                   F  p. p. p. p. p. p. p	V P	                  VVVVVVV	4      p
\        VVVVVV	VR,          VR,          VR,          VR,          VR,          VR,          VR,          VR	,          VR
,          VR,          V
R7       K  	  V#   + '       g   i     L; i)zPerform 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   r   r    r!   r   r^   )'_accelerator_graph_capture_health_checkrB   enable_gradr=   r_   r   )r2   closurelossrE   rX   rY   rZ   r\   r[   r]   r^   s   &&         r'   r7   RMSprop.step   s    	446""$$y % &&E-/"$E(*K&(I13 (*K** $K  $;Gn%L">2z*z*i(z*$%56 .'#% 'L S %$s   CC.	rO   )
g{Gz?gGz?g:0yE>    rg   FFNFFN)__name__
__module____qualname____firstlineno__r1   r<   r_   r   r7   __static_attributes____classdictcell____classcell__)r4   r&   s   @@r'   r   r      s4     '+ '+R*1f "4 "4 4r*   aj  Implements RMSprop algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \alpha \text{ (alpha)}, \: \gamma \text{ (lr)},
                \: \theta_0 \text{ (params)}, \: f(\theta) \text{ (objective)}                   \\
            &\hspace{13mm}   \lambda \text{ (weight decay)},\: \mu \text{ (momentum)},
                \: centered, \: \epsilon \text{ (epsilon)}                                       \\
            &\textbf{initialize} : v_0 \leftarrow 0 \text{ (square average)}, \:
                \textbf{b}_0 \leftarrow 0 \text{ (buffer)}, \: g^{ave}_0 \leftarrow 0     \\[-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   \alpha v_{t-1} + (1 - \alpha) g^2_t
                \hspace{8mm}                                                                     \\
            &\hspace{5mm} \tilde{v_t} \leftarrow v_t                                             \\
            &\hspace{5mm}if \: centered                                                          \\
            &\hspace{10mm} g^{ave}_t \leftarrow g^{ave}_{t-1} \alpha + (1-\alpha) g_t            \\
            &\hspace{10mm} \tilde{v_t} \leftarrow \tilde{v_t} -  \big(g^{ave}_{t} \big)^2        \\
            &\hspace{5mm}if \: \mu > 0                                                           \\
            &\hspace{10mm} \textbf{b}_t\leftarrow \mu \textbf{b}_{t-1} +
                g_t/ \big(\sqrt{\tilde{v_t}} +  \epsilon \big)                                   \\
            &\hspace{10mm} \theta_t \leftarrow \theta_{t-1} - \gamma \textbf{b}_t                \\
            &\hspace{5mm} else                                                                   \\
            &\hspace{10mm}\theta_t      \leftarrow   \theta_{t-1} -
                \gamma  g_t/ \big(\sqrt{\tilde{v_t}} + \epsilon \big)  \hspace{3mm}              \\
            &\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
    `lecture notes <https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf>`_ by G. Hinton.
    and centered version `Generating Sequences
    With Recurrent Neural Networks <https://arxiv.org/pdf/1308.0850v5.pdf>`_.
    The implementation here takes the square root of the gradient average before
    adding epsilon (note that TensorFlow interchanges these two operations). The effective
    learning rate is thus :math:`\gamma/(\sqrt{v} + \epsilon)` where :math:`\gamma`
    is the scheduled learning rate and :math:`v` is the weighted moving average
    of the squared gradient.
    z
    Args:
        a0  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        alpha (float, optional): smoothing constant (default: 0.99)
        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)
        momentum (float, optional): momentum factor (default: 0)
        centered (bool, optional) : if ``True``, compute the centered RMSProp,
            the gradient is normalized by an estimation of its variance
        z	
        z

    c          "      `   V ^8  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\        R\        R	\        R
\        R\        R\        R\        R\        R\        R\        RR/# r   r   rY   rZ   r\   r[   r]   r   r   r   r   r   r   r    r!   r   r^   r"   Nlistr   r#   r$   )r%   s   "r'   r(   r(   	  s     J1 J1LJ1<J1 fJ1 F|	J1
 v,J1 fJ1 	J1 J1 
J1 J1 J1 J1 J1 J1  !J1" #J1$ 
%J1r*   c       
            \         P                  P                  4       '       g   \        V4      p\	        V 4       EF  w  ppVV,          p\         P
                  P                  4       '       gl   V'       dd   \        4       pVP                  P                  VP                  P                  8X  d   VP                  P                  V9   g   \        R V R24      hVV,          pV'       g   TMV) pVV,          pV^,          pV	^ 8w  d   VP                  VV	R7      p\         P                  ! V4      pV'       dC   \         P                  ! V4      p\         P                  ! V4      p\         P                  ! V4      pVP                  V4      P                  VV^V,
          R7       V'       dd   VV,          pV'       d   \         P                  ! V4      pVP!                  V^V,
          4       VP#                  VVRR7      P%                  4       pMVP'                  4       pV'       d   VP                  V4      pMVP)                  V4      pV
^ 8  d`   VV,          pV'       d   \         P                  ! V4      pVP                  V
4      P+                  VV4       VP)                  VV) R7       EKw  VP+                  VVV) R7       EK  	  R# )IIf capturable=True, params and state_steps must be on supported devices: .r   valueN)rB   jitis_scriptingr   	enumeratecompileris_compilingr	   r:   typeAssertionErroraddrQ   view_as_realmul_addcmul_lerp_addcmulsqrt_sqrtadd_addcdiv_)r   rY   rZ   r\   r[   r]   r   r   r   r   r   r   r    r!   r   r^   iparamr7   capturable_supported_devicesrP   rL   is_complex_paramrN   avgbufs   &&&&&&$$$$$$$$$$          r'   _single_tensor_rmspropr   	  s-   & 99!!##^f%51~ ~~**,,+L+N(!!T[[%5%55LL%%)EE$_`|_}}~  Qx#t$ ^
	188E86D ++E2&&u-E%%d+D++J7J''d!e)'D |H --h7NN4U+$$Xxr$BHHJC//#C''#,C((3-Ca<&q)C((-HHX''c2JJs2#J&NN4RCN0i &r*   c          "      `   V ^8  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\        R\        R	\        R
\        R\        R\        R\        R\        R\        R\        RR/# rq   rr   )r%   s   "r'   r(   r(   V  s     CW CWLCW<CW fCW F|	CW
 v,CW fCW 	CW CW 
CW CW CW CW CW CW  !CW" #CW$ 
%CWr*   c       
   	      
  a! \        V 4      ^ 8X  d   R# V'       d   \        R4      h\        P                  P	                  4       '       gx   V'       dp   \        4       o!\        ;QJ d*    V!3R l\        WRR7       4       F  '       d   K   RM	  RM! V!3R l\        WRR7       4       4      '       g   \        RS! R24      h\        V4      p\        P                  ! WW#WE.4      pVP                  4        EF  w  w  ppppppp\        \        \        ,          V4      p\        \        \        ,          V4      p\        \        \        ,          V4      p\        \        \        ,          V4      pV'       dy   VV.pV
^ 8  d-   \        \        \        ,          V4      pVP                  V4       V'       d-   \        \        \        ,          V4      pVP                  V4       \!        V.VO5!   V'       d   \        P"                  ! V4      p\        P                  P	                  4       '       gJ   V^ ,          P$                  '       d1   \        P&                  ! V\        P(                  ! R	R
R7      R	R7       M\        P&                  ! V^4       V	^ 8w  d<   V'       d   \        P&                  ! VVV	R7       M\        P*                  ! VVV	R7      p\        P,                  ! VV4       \        P.                  ! VVV^V,
          R7       V'       d   \        \        \        ,          V4      p\        P0                  ! VV^V,
          4       \        P2                  ! VVVRR7      p\        P4                  ! V4       \        P&                  ! VV4       M-\        P6                  ! V4      p\        P&                  ! VV4       V
^ 8  d   \        \        \        ,          V4      p\        P,                  ! VV
4       \        P8                  ! VVV4       V'       dS   \;        V\        P                  4      '       d3   \        P<                  ! VV) 4      p \        P&                  ! VV 4       EKx  \        P&                  ! VVV) R7       EK  V'       dT   \;        V\        P                  4      '       d4   \        P>                  ! VV) 4       \        P8                  ! VVV4       EK  \        P8                  ! VVVV) R7       EK  	  R# )rg   Nz#_foreach ops don't support autogradc              3      <"   T FU  w  rVP                   P                  VP                   P                  8H  ;'       d    VP                   P                  S9   x  KW  	  R # 5irh   )r:   r   ).0rF   r7   r   s   &  r'   	<genexpr>(_multi_tensor_rmsprop.<locals>.<genexpr>r  sT      
 A HHMMT[[--- > >!==>@s
   :A "A T)strictFru   rv   g      ?cpu)r:   rw   rx   rz   ) rA   r   rB   r~   r   r	   allzipr   r   "_group_tensors_by_device_and_dtypevaluesr   rs   r   rR   r   _foreach_negis_cpu_foreach_add_rD   _foreach_add_foreach_mul__foreach_addcmul__foreach_lerp__foreach_addcmul_foreach_sqrt__foreach_sqrt_foreach_addcdiv_r-   _foreach_mul_foreach_div_)"r   rY   rZ   r\   r[   r]   r   r   r   r   r   r   r    r!   r   r^   grouped_tensorsgrouped_params_grouped_grads_grouped_square_avgs_grouped_grad_avgs_grouped_momentum_buffer_list_grouped_state_steps__grouped_paramsgrouped_gradsgrouped_square_avgsgrouped_state_stepsstate_and_gradsgrouped_momentum_buffer_listgrouped_grad_avgsr   momentum_lrr   s"   &&&&&&$$$$$$$$$$                 @r'   _multi_tensor_rmspropr   V  s   & 6{aBCC >>&&((Z'H'J$s 
 v4@
sss 
 v4@
 
 

 ![\x[yyz{  
BBBB	0DRO ""$				
 ) d6lO<T&\>:"4<1EF"4<1EF,.ABO!|/3L"?0,  &&'CD$(f7I$J!&&'89.;?;!..}=M ~~**,,1DQ1G1N1N1N#U\\#e%DC  3Q71##M>V % 2 2!>! 	/7QY	
  $T&\3E F  !2M1u9M((#%68IQSC   %S)%%&9:CS)a<+/V;,(  <hG##$@-QTU jU\\::#001MPRsS##NK@##"$@  jU\\::##C"-''sK''sSURUVVa %r*   )single_tensor_fnc          $      z   V ^8  d   QhR\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\         \        ,          R\        R,          R	\        R
\        R\        R\        R\        R\        R\        R\        R\        R\        RR/# )r   r   rY   rZ   r\   r[   r]   r   Nr    r!   r   r^   r   r   r   r   r   r   r"   )rs   r   r$   r#   )r%   s   "r'   r(   r(     s     A ALA<A fA F|	A
 v,A fA D[A A A A A 	A  !A" 
#A$ %A& 'A( )A* 
+Ar*   c                  \         P                  P                  4       '       gF   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \	        R4      hVf   \        WRR7      w  ppV'       d0   \         P                  P                  4       '       d   \	        R4      hV'       d,   \         P                  P                  4       '       g   \        pM\        pV! V VVVVVVVVVVVVV	VV
R7       R# )	zlFunctional API that performs rmsprop algorithm computation.

See :class:`~torch.optim.RMSProp` for details.
c              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5irh   )r-   rB   r   )r   ts   & r'   r   rmsprop.<locals>.<genexpr>  s!      5-8
1ell##[s   ')FTzPAPI has changed, `state_steps` argument must contain a list of singleton tensorsN)	use_fusedz6torch.jit.script not supported with foreach optimizers)
r   r   r   r   r   r   r    r   r!   r^   )
rB   r~   r   r   rT   r   r{   r|   r   r   )r   rY   rZ   r\   r[   r]   r   r    r!   r   r^   r   r   r   r   r   r   r   funcs   &&&&&&&&&&&$$$$$$  r'   r   r     s    : >>&&(( 5-85 5-85 2 2 ^
 	
 1e

7 599))++STTuyy--//$%!%!r*   )NFFFF)__doc__typingr   rB   r   	optimizerr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   __all__r   r   r   r   rO   r*   r'   <module>r      s    0      $ i
 gi gV+X		 		 
 		 		 		 Y< BJ1ZCWL  1GHA IAr*   