
    oi                         S SK Jr  S SKrS SKJrJr  SSKJr  \" 5       (       a    " S S\R                  R                  \5      r
\" 5       (       a!   " S S	\R                  R                  \5      rgg)
    )AnyN)is_bnb_4bit_availableis_bnb_available   )AdaLoraLayerc                      ^  \ rS rSr    SS\R
                  R                  S\S\S\S\	S\
SS	4U 4S
 jjjrS\R                  S\R                  4S jrS\4U 4S jjrSrU =r$ )SVDLinear8bitLt   
base_layeradapter_namer
lora_alphalora_dropoutinit_lora_weightsreturnNc                    > [         TU ]  5         [        R                  " X5        SU R                  5       R                  l        X l        U R                  X#XEU5        g NFsuper__init__r   get_base_layerweightrequires_grad_active_adapterupdate_layer	selfr   r   r   r   r   r   kwargs	__class__s	           Q/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/adalora/bnb.pyr   SVDLinear8bitLt.__init__   N     G!!$39>D!((6#/ lzIZ[    xc                    U R                  U5      nU R                  (       a  U$ U R                   GH"  nX0R                  R	                  5       ;  a  M#  [
        R                  " 5       (       + nU(       a:  UR                  nUR                  [
        R                  :w  a  UR                  5       nU R                  U   nU R                  U   nU R                  U   nU R                  U   n	U R                  U   n
U R                  U   S-   nU	" U5      Xh-  R                  -  UR                  -  nU(       a  UR!                  W5      nX-  U-  nX,-   nGM%     U$ Ngh㈵>)r   disable_adaptersactive_adapterslora_Akeystorchis_autocast_enableddtypefloat32floatlora_Blora_Er   scalingranknumTto)r   r$   resultactive_adapterrequires_conversionexpected_dtyper)   r0   r1   dropoutr2   r3   outputs                r    forwardSVDLinear8bitLt.forward.   s#   __Q'F$$"&"6"6!)9)9);;*/*C*C*E&E#&%+\\Nww%--/GGI^4^4^4++N;,,~6,,~6= v&9&99FHHD&#YY~6F)G3+ #7, Mr#   c                 *   > [         TU ]  5       nSU-   $ Nzadalora.r   __repr__r   repr   s     r    rA   SVDLinear8bitLt.__repr__M       '"$C##r#   r   r   r   g        T)__name__
__module____qualname____firstlineno__r+   nnModulestrintr/   boolr   Tensorr<   rA   __static_attributes____classcell__r   s   @r    r	   r	      s     "%&*	\	\ 	\ 		\
 	\  	\  $	\ 	\ 	\$	U\\ 	ell 	>	$c 	$ 	$r#   r	   c                      ^  \ rS rSr    SS\R
                  R                  S\S\S\S\	S\
SS	4U 4S
 jjjrS\R                  S\S\S\R                  4S jrS\4U 4S jjrSrU =r$ )SVDLinear4bitT   r   r   r   r   r   r   r   Nc                    > [         TU ]  5         [        R                  " X5        SU R                  5       R                  l        X l        U R                  X#XEU5        g r   r   r   s	           r    r   SVDLinear4bit.__init__V   r"   r#   r$   argsr   c                    U R                   " U/UQ70 UD6nU R                  (       a  U$ UR                  5       nU R                   GH  nXPR                  R                  5       ;  a  M#  U R                  U   nU R                  U   nU R                  U   nU R                  U   n	U R                  U   n
U R                  U   S-   n[        R                  " 5       (       + nU(       a'  UR                  nU R                  XR                  5      nU	" U5      Xh-  R                  -  UR                  -  nU(       a  UR!                  W5      nX-  U-  nXN-  nGM     U$ r&   )r   r'   cloner(   r)   r*   r0   r1   r   r2   r3   r+   r,   r-   _cast_input_dtyper4   r5   )r   r$   rZ   r   r6   r7   r)   r0   r1   r:   r2   r3   r8   r9   r;   s                  r    r<   SVDLinear4bit.forwardh   s4   __Q888F$$ \\^F"&"6"6!)9)9);;^4^4^4++N;,,~6,,~6=*/*C*C*E&E#&%+\\N..q,,?A v&9&99FHHD&#YY~6F)G3 ) #7* Mr#   c                 *   > [         TU ]  5       nSU-   $ r?   r@   rB   s     r    rA   SVDLinear4bit.__repr__   rE   r#   rF   rG   )rH   rI   rJ   rK   r+   rL   rM   rN   rO   r/   rP   r   rQ   r   r<   rA   rR   rS   rT   s   @r    rV   rV   T   s     "%&*	\	\ 	\ 		\
 	\  	\  $	\ 	\ 	\$#	U\\ #	# #	 #	 #	J	$c 	$ 	$r#   rV   )typingr   r+   peft.import_utilsr   r   layerr   rL   rM   r	   rV    r#   r    <module>re      s[      E  5$%((//< 5$p ;$ ;$ r#   