
    oi              	          S SK JrJr  S SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  SSKJr   " S	 S
\R                  R                  \5      rS\R                  R                  S\S\S\\R                  R                     4S jrg)    )AnyOptionalN)is_gptqmodel_available)	LoraLayer)BaseTunerLayer)get_auto_gptq_quant_linear   )LoraVariantc                      ^  \ rS rSr         SS\S\S\S\S\S\S\S	\S
\S\4U 4S jjjrS\S	\S\	\
   4S jrS\R                  4S jrS\4U 4S jjrSrU =r$ )GPTQLoraLinear   adapter_namer
lora_alphalora_dropoutinit_lora_weights
use_rslorause_dora
use_qalora	lora_biasqalora_group_sizec                    > [         TU ]  5         [        R                  " X5        U(       a"  [        U R                  R
                   S35      eXl        X l        U R                  UUUUUUUU	U
US9
  g )Nz2 does not support DoRA yet, please set it to False)r   r   r   r   r   r   r   r   )	super__init__r   
ValueError	__class____name__quant_linear_module_active_adapterupdate_layer)self
base_layerr   r   r   r   r   r   r   r   r   r   kwargsr   s                O/home/james-whalen/.local/lib/python3.13/site-packages/peft/tuners/lora/gptq.pyr   GPTQLoraLinear.__init__   s~     	4, 7 788jkll $. +!%/!!/ 	 	
    returnc                    U(       a*  U(       a#  [        SU R                  R                   S35      eU(       a  SSKJn  U" 5       nU$ U(       a  SSKJn  U" 5       nU$ S nU$ )Nz7Dora and QA_lora at the same time is not supported for z (yet).r	   )DoraLinearVariant)QALoraLinearVariant)NotImplementedErrorr   r   variantsr)   r*   )r!   r   r   r#   r)   variantr*   s          r$   resolve_lora_variant#GPTQLoraLinear.resolve_lora_variantA   sf    
%I$..JaJaIbbij  3')G  5)+G  Gr&   xc           	      B   U R                  U5      nU R                  (       a  U$ U R                  R                  5       nU R                   H  nXC;  a  M
  UR
                  nU R                  U   nU R                  U   nU R                  U   nU R                  U   n	U R                  XR                  R
                  5      nX@R                  ;  a  X'" U" U" U5      5      5      U	-  -   nOU R                  U   R                  U UUUS9nUR                  U5      nM     U$ )N)active_adapterr0   result)r   disable_adapterslora_Akeysactive_adaptersdtypelora_Br   scaling_cast_input_dtypeweightlora_variantforwardto)
r!   r0   r3   lora_A_keysr2   torch_result_dtyper5   r9   dropoutr:   s
             r$   r>   GPTQLoraLinear.forwardR   s   ))!,  Mkk&&("22N0!'[[0F[[0F''7Gll>2G&&q--*=*=>A%6%66&
);"<w"FF**>:BB#1!	 C  YY12F- 3. r&   c                 *   > [         TU ]  5       nSU-   $ )Nzlora.)r   __repr__)r!   repr   s     r$   rE   GPTQLoraLinear.__repr__t   s    g }r&   )r   r   )	r   r	   g        TFFFF    )r   
__module____qualname____firstlineno__strintfloatboolr   r   r
   r.   torchTensorr>   rE   __static_attributes____classcell__)r   s   @r$   r   r      s    
 !"&  !#$
 $
 	$

 $
 $
  $
 $
 $
 $
 $
 $
 $
L $ U]^iUj "   D#  r&   r   targetr   r#   r'   c                 |   S n[        U [        5      (       a  U R                  5       nOU nUR                  SS 5      n[	        5       (       a5  SSKJn  [        XF5      (       a  [        X40 UD6nUR                  U l        U$ [        U5      nUb-  [        XG5      (       a  [        X40 UD6nUR                  U l        U$ )Ngptq_quantization_configr   )BaseQuantLinear)

isinstancer   get_base_layergetr   gptqmodel.nn_modules.qlinearrW   r   qweightr   )rT   r   r#   
new_moduletarget_base_layercfgrW   quant_linears           r$   dispatch_gptqra      s    
 J&.))"113"
**/
6C@'99'GGJ.66FN  2#6#
3D(S(S'GGJ.66FNr&   )typingr   r   rP   peft.import_utilsr   peft.tuners.lora.layerr   peft.tuners.tuners_utilsr   
peft.utilsr   layerr
   nnModuler   rL   ra    r&   r$   <module>rk      ss    !  4 , 3 1 \UXX__i \JHHOO  ehhoo	r&   