ó
    >:jÙ  ã                   ó  • 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\S\\R                  R                     4
S jrg)é    )ÚAnyÚOptionalN)Ú	LoraLayer)ÚBaseTunerLayeré   )Úis_gptqmodel_availableé   )Ú
LoraConfig)ÚLoraVariantc            	       ó’   ^ • \ rS rSr  SS\S\S\S\4U 4S jjjr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ÚconfigÚrÚ
lora_alphac                 óð   >• [         TU ]  5         [        R                  " X5        UR                  (       a"  [	        U R
                  R                   S35      eXl        X l        U R                  UUUUS9  g )Nz2 does not support DoRA yet, please set it to False)r   r   )
ÚsuperÚ__init__r   Úuse_doraÚ
ValueErrorÚ	__class__Ú__name__Úquant_linear_moduleÚ_active_adapterÚupdate_layer)ÚselfÚ
base_layerr   r   r   r   Úkwargsr   s          €ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/lora/gptq.pyr   ÚGPTQLoraLinear.__init__   sp   ø€ ô 	‰ÑÔÜ×Ò˜4Ô,à�?�?Ü §¡× 7Ñ 7Ð8Ð8jÐkÓlÐlð $.Ô Ø+ÔØ×ÑØØØ!Øð	 	ò 	
ó    Úreturnc                ó  • UR                   (       a4  UR                  (       a#  [        SU R                  R                   S35      eUR                   (       a  SSKJn  U" 5       nU$ UR                  (       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)r   Ú
use_qaloraÚNotImplementedErrorr   r   Úvariantsr%   r&   )r   r   r   r%   Úvariantr&   s         r    Úresolve_lora_variantÚ#GPTQLoraLinear.resolve_lora_variant5   sz   € Ø�?�?˜v×0×0Ü%ØIÈ$Ï.É.×JaÑJaÐIbÐbiÐ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_adapterr-   Úresult)r   Údisable_adaptersÚlora_AÚkeysÚactive_adaptersÚdtypeÚlora_BÚlora_dropoutÚscalingÚ_cast_input_dtypeÚweightÚlora_variantÚforwardÚto)
r   r-   r0   Úlora_A_keysr/   Útorch_result_dtyper2   r6   Údropoutr8   s
             r    r<   ÚGPTQLoraLinear.forwardF   s  € à×)Ñ)¨!Ó,ˆà× × ØˆMà—k‘k×&Ñ&Ó(ˆà"×2Ô2ˆNØÓ0ÙØ!'§¡Ðà—[‘[ Ñ0ˆFØ—[‘[ Ñ0ˆFØ×'Ñ'¨Ñ7ˆGØ—l‘l >Ñ2ˆGà×&Ñ& q¯-©-×*=Ñ*=Ó>ˆAà×%6Ñ%6Ó6Ø &©±¸³
Ó);Ó"<¸wÑ"FÑF‘à×*Ñ*¨>Ñ:×BÑBØØ#1ØØ!ð	 Cð �ð —Y‘YÐ1Ó2ŠFñ- 3ð. ˆr"   c                 ó*   >• [         TU ]  5       nSU-   $ )Nzlora.)r   Ú__repr__)r   Úrepr   s     €r    rC   ÚGPTQLoraLinear.__repr__h   s   ø€ Ü‰gÑÓ ˆØ˜‰}Ðr"   )r   r   )r   r	   )r   Ú
__module__Ú__qualname__Ú__firstlineno__Ústrr
   Úintr   r   r   r+   ÚtorchÚTensorr<   rC   Ú__static_attributes__Ú__classcell__)r   s   @r    r   r      sx   ø† ð Øñ
ð ð
ð ð	
ð
 ð
ð ÷
ð 
ð4¨jð ÀxÐP[ÑG\ô ð" ˜Ÿ™ô  ðD˜#÷ õ r"   r   Útargetr   r   r   r#   c                 óâ   • S n[        U [        5      (       a  U R                  5       nOU n[        5       (       a5  SSKJn  [        XV5      (       a  [        X4SU0UD6nUR                  U l        U$ )Nr   )ÚBaseQuantLinearr   )Ú
isinstancer   Úget_base_layerr   Úgptqmodel.nn_modules.qlinearrQ   r   Úqweight)rO   r   r   r   Ú
new_moduleÚtarget_base_layerrQ   s          r    Údispatch_gptqrX   s   sj   € ð €Jä�&œ.×)Ñ)Ø"×1Ñ1Ó3Ñà"Ðä×ÑÝ@äÐ'×9Ñ9Ü'¨ÑVÀVÐVÈvÑVˆJØ.×6Ñ6ˆFŒNàÐr"   )Útypingr   r   rK   Úpeft.tuners.lora.layerr   Úpeft.tuners.tuners_utilsr   Úimport_utilsr   r   r
   Úlayerr   ÚnnÚModuler   rI   rX   © r"   r    Ú<module>ra      s}   ð÷ !ã å ,Ý 3å 2Ý Ý ôP�U—X‘X—_‘_ iô PðrØ�H‰H�O‰Oðàðð ðð ð	ð
 ˆe�h‰h�o‰oÑõr"   