
    oi
                     X    S SK r SSKJr   " S S\ R                  R                  \5      rg)    N   )AdaLoraLayerc                      ^  \ rS rSr    SS\S\S\S\SS4
U 4S jjjrS	\R                  S\R                  4U 4S
 jjr
SrU =r$ )SVDQuantLinear   r
lora_alphalora_dropoutinit_lora_weightsreturnNc                    > [         TU ]  5         [        R                  " X5        Xl        X l        U R                  X#XEU5        g )N)super__init__r   quant_linear_module_active_adapterupdate_layer)	self
base_layeradapter_namer   r	   r
   r   kwargs	__class__s	           R/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/adalora/gptq.pyr   SVDQuantLinear.__init__   s?     	d/ $. +,:EVW    xc                   > U R                  U5      nU R                  (       a  U$ U R                   GH  nX0R                  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                  U[        R                  5      nU" U5      XF-  R                  -  UR                  -  U-  U	-  nU
(       a  UR!                  W5      nX,-  nGM     U$ )Ngh㈵>)r   disable_adaptersactive_adapterslora_Akeyslora_Blora_Er
   scalingranknumtorchis_autocast_enableddtype_cast_input_dtypefloat32Ttostr)r   r   resultactive_adapterr   r!   r"   dropoutr#   r$   requires_conversionexpected_dtypeoutput__repr__r   s                 r   forwardSVDQuantLinear.forward'   s!   ))!,  M"22N[[%5%5%77[[0F[[0F[[0F''7Gll>2Gll>2T9G&+&?&?&A"A"!'**1emm<ajFO#6#66AWLwVF #>2F+ 3, r   )r   r   )r   r   g        T)__name__
__module____qualname____firstlineno__intfloatboolr   r%   Tensorr4   __static_attributes____classcell__)r   s   @r   r   r      st    
 !"&X 	X
 X X  X 
X X& $  $%,,  $  $r   r   )r%   layerr   nnModuler    r   r   <module>rD      s#     4$UXX__l 4$r   