
    bi
                     X    d dl Z ddlmZ  G d de j                  j                  e      Zy)    N   )AdaLoraLayerc                   z     e Zd Z	 	 	 	 d
dededededdf
 fdZdej                  dej                  f fd	Z	 xZ
S )SVDQuantLinearr
lora_alphalora_dropoutinit_lora_weightsreturnNc                     t         |           t        j                  | |       || _        || _        | j                  |||||       y )N)super__init__r   quant_linear_module_active_adapterupdate_layer)	self
base_layeradapter_namer   r   r	   r
   kwargs	__class__s	           S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/peft/tuners/adalora/gptq.pyr   zSVDQuantLinear.__init__   sI     	dJ/ $. +,:|EVW    xc                 l   | j                  |      }| j                  r|S | j                  D ]  }|| j                  j	                         vr!| j                  |   }| j
                  |   }| j                  |   }| j                  |   }| j                  |   }| j                  |   dz   }	t        j                          }
|
r,|j                  }| j                  |t        j                        } ||      ||z  j                  z  |j                  z  |z  |	z  }|
r|j!                        }||z  } |S )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   forwardzSVDQuantLinear.forward'   s,   ))!,  M"22 	NT[[%5%5%77[[0F[[0F[[0F''7Gll>2Gll>2T9G&+&?&?&A"A"!'**1emm<ajFVO#6#66AWLwVF #>2fF+	, r   )r   r   g        T)__name__
__module____qualname__intfloatboolr   r#   Tensorr2   __classcell__)r   s   @r   r   r      sn    
 !"&X 	X
 X X  X 
X& $  $%,,  $  $r   r   )r#   layerr   nnModuler    r   r   <module>r?      s#     4$UXX__l 4$r   