+
    ÆÜ³j†   ã                   ó~   € ^ RI t ^ RIHt ^ RIHt  ! R R]4      t ! R R]4      t ! R R	]4      t ! R
 R]4      tR# )é    N)Ú	Optimizer)ÚOptimizer1Statec                   ó6   a a€ ] tR t^t oRV 3R lltRtVtV ;t# )ÚLARSc                ó`   <€ V^ 8X  d   \        R4      h\        SV `	  RVVW43RVVVV	V
R7
       R# )a­  
Base LARS optimizer.

Arguments:
    params (`torch.tensor`):
        The input parameters to optimize.
    lr (`float`):
        The learning rate.
    momentum (`float`, defaults to 0):
        The momentum value speeds up the optimizer by taking bigger steps.
    dampening (`float`, defaults to 0):
        The dampening value reduces the momentum of the optimizer.
    weight_decay (`float`, defaults to 1e-2):
        The weight decay value for the optimizer.
    nesterov (`bool`, defaults to `False`):
        Whether to use Nesterov momentum.
    optim_bits (`int`, defaults to 32):
        The number of bits of the optimizer state.
    args (`object`, defaults to `None`):
        An object with additional arguments.
    min_8bit_size (`int`, defaults to 4096):
        The minimum number of elements of the parameter tensors for 8-bit optimization.
    max_unorm (`float`, defaults to 0.02):
        The maximum gradient norm.
ú'LARS without momentum is not supported!Úlarsç        ©Ú	max_unormN©ÚNotImplementedErrorÚsuperÚ__init__)ÚselfÚparamsÚlrÚmomentumÚ	dampeningÚweight_decayÚnesterovÚ
optim_bitsÚargsÚmin_8bit_sizer   Ú	__class__s   &&&&&&&&&&&€ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/bitsandbytes/optim/lars.pyr   ÚLARS.__init__   sL   ø€ ðL �qŒ=Ü%Ð&OÓPÐPÜ‰ÑØØØØÐ!ØØØØØØð 	ö 	
ó    © )r   r   r   Fé    Né   ç{®Gáz”?©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r   Ú__classdict__s   @@r   r   r      s   ù‡ € ÷3
÷ 3
r   r   c                   ó6   a a€ ] tR t^Bt oRV 3R lltRtVtV ;t# )ÚLARS8bitc
                ó`   <€ V^ 8X  d   \        R4      h\        S
V `	  RVVW43RV^VVV	R7
       R# )aS  
8-bit LARS optimizer.

Arguments:
    params (`torch.tensor`):
        The input parameters to optimize.
    lr (`float`):
        The learning rate.
    momentum (`float`, defaults to 0):
        The momentum value speeds up the optimizer by taking bigger steps.
    dampening (`float`, defaults to 0):
        The dampening value reduces the momentum of the optimizer.
    weight_decay (`float`, defaults to 1e-2):
        The weight decay value for the optimizer.
    nesterov (`bool`, defaults to `False`):
        Whether to use Nesterov momentum.
    args (`object`, defaults to `None`):
        An object with additional arguments.
    min_8bit_size (`int`, defaults to 4096):
        The minimum number of elements of the parameter tensors for 8-bit optimization.
    max_unorm (`float`, defaults to 0.02):
        The maximum gradient norm.
r   r	   r
   r   Nr   ©r   r   r   r   r   r   r   r   r   r   r   s   &&&&&&&&&&€r   r   ÚLARS8bit.__init__C   sL   ø€ ðF �qŒ=Ü%Ð&OÓPÐPÜ‰ÑØØØØÐ!ØØØØØØð 	ö 	
r   r   ©r   r   r   FNr!   r"   r#   r+   s   @@r   r.   r.   B   ó   ù‡ € ÷0
÷ 0
r   r.   c                   ó6   a a€ ] tR t^vt oRV 3R lltRtVtV ;t# )Ú	LARS32bitc
                ó`   <€ V^ 8X  d   \        R4      h\        S
V `	  RVVW43RV^ VVV	R7
       R# )aT  
32-bit LARS optimizer.

Arguments:
    params (`torch.tensor`):
        The input parameters to optimize.
    lr (`float`):
        The learning rate.
    momentum (`float`, defaults to 0):
        The momentum value speeds up the optimizer by taking bigger steps.
    dampening (`float`, defaults to 0):
        The dampening value reduces the momentum of the optimizer.
    weight_decay (`float`, defaults to 1e-2):
        The weight decay value for the optimizer.
    nesterov (`bool`, defaults to `False`):
        Whether to use Nesterov momentum.
    args (`object`, defaults to `None`):
        An object with additional arguments.
    min_8bit_size (`int`, defaults to 4096):
        The minimum number of elements of the parameter tensors for 8-bit optimization.
    max_unorm (`float`, defaults to 0.02):
        The maximum gradient norm.
r   r	   r
   r   Nr   r0   s   &&&&&&&&&&€r   r   ÚLARS32bit.__init__w   sL   ø€ ðF �qŒ=Ü%Ð&OÓPÐPÜ‰ÑØØØØÐ!ØØØØØØð 	ö 	
r   r   r2   r#   r+   s   @@r   r5   r5   v   r3   r   r5   c                   ót   a a€ ] tR t^ªt oRV 3R lltV 3R lt]P                  ! 4       RR l4       tRt	Vt
V ;t# )ÚPytorchLARSc           	     ó  <€ VR 8  d   \        RV 24      hVR 8  d   \        RV 24      hVR 8  d   \        RV 24      h\        VVVVVVR7      pV'       d   V^ 8:  g   V^ 8w  d   \        R4      h\        S	V `  W4       R# )r
   zInvalid learning rate: zInvalid momentum value: zInvalid weight_decay value: )r   r   r   r   r   r   z8Nesterov momentum requires a momentum and zero dampeningN)Ú
ValueErrorÚdictr   r   )
r   r   r   r   r   r   r   r   Údefaultsr   s
   &&&&&&&& €r   r   ÚPytorchLARS.__init__«   sš   ø€ ð �Œ8ÜÐ6°r°dÐ;Ó<Ð<Ø�cŒ>ÜÐ7¸°zÐBÓCÐCØ˜#ÔÜÐ;¸L¸>ÐJÓKÐKäØØØØ%ØØô
ˆ÷ ˜ Qœ¨)°q¬.ÜÐWÓXÐXÜ‰Ñ˜Ö*r   c                óp   <€ \         SV `  V4       V P                   F  pVP                  R R4       K  	  R# )r   FN)r   Ú__setstate__Úparam_groupsÚ
setdefault)r   ÚstateÚgroupr   s   && €r   r@   ÚPytorchLARS.__setstate__È   s0   ø€ Ü‰Ñ˜UÔ#Ø×&Ô&ˆEØ×Ñ˜Z¨Ö/ó 'r   c                ó*  € RpVe.   \         P                  ! 4       ;_uu_ 4        V! 4       pRRR4       V P                   EFº  pVR,          pVR,          pVR,          pVR,          pVR,          pVR,          p	VR,           EFr  p
V
P                  f   K  V P                  V
,          pV
P                  pV^ 8w  d   VP                  W¤R	7      pV^ 8w  dƒ   VP                  R
R4      pVf*   \         P                  ! V4      P                  4       pWÛR
&   M)VP                  V4      P                  V^V,
          R	7       V'       d   WÍV,          ,           pMTpRpVR8”  dz   V
P                  \         P                  8X  g   Q h\         P                  ! V
P                  4       4      p\         P                  ! X4      pVVV,          8”  d   VV,          V,          pV
P                  XV	) V,          R	7       EKu  	  EK½  	  V#   + '       g   i     ELÞ; i)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   )ÚalphaÚmomentum_bufferg      ð?r
   )ÚtorchÚenable_gradrA   ÚgradrC   ÚaddÚgetÚcloneÚdetachÚmul_Úadd_ÚdtypeÚfloat32Únorm)r   ÚclosureÚlossrD   r   r   r   r   r   r   ÚprC   Úd_pÚbufÚupdateÚupdate_scaleÚpnormÚunorms   &&                r   ÚstepÚPytorchLARS.stepÍ   s¾  € ð ˆØÒÜ×"Ò"×$Õ$Ù“y�÷ %ð ×&Õ&ˆEØ  Õ0ˆLØ˜ZÕ(ˆHØ˜kÕ*ˆIØ˜ZÕ(ˆHØ˜kÕ*ˆIØ�t•ˆBà˜8—_‘_�Ø—6‘6’>ÙàŸ
™
 1��Ø—f‘f�Ø 1Ô$ØŸ'™' !˜'Ó8�Cà˜q”=ØŸ)™)Ð$5°tÓ<�Cà’{Ü#Ÿkšk¨#Ó.×5Ñ5Ó7˜Ø36Ð/Ò0àŸ™ Ó*×/Ñ/°¸1¸y½=Ð/ÔIçØ!$¨X¥~Õ!5™à!$˜à"�Ø˜s”?ØŸ7™7¤e§m¡mÔ3Ð3Ð3Ü!ŸJšJ q§x¡x£zÓ2�EÜ!ŸJšJ vÓ.�EØ˜y¨5Õ0Ô0Ø'0°5Õ'8¸5Õ'@˜à—‘�v b S¨<Õ%7�×8ô? %ñ 'ðR ˆ÷Y %×$Ð$ús   ¤HÈH	r   )g{®Gáz„?r   r   r   Fr"   )N)r$   r%   r&   r'   r   r@   rI   Úno_gradr^   r(   r)   r*   r+   s   @@r   r9   r9   ª   s.   ù‡ € ÷+õ:0ð
 ‡]‚]ƒ_ó5ó ÷5ð 5r   r9   )	rI   Útorch.optimr   Úbitsandbytes.optim.optimizerr   r   r.   r5   r9   r   r   r   Ú<module>rc      sE   ðó
 Ý !å 8ô4
ˆ?ô 4
ôn1
ˆô 1
ôh1
�ô 1
ôhY�)ö Yr   