ó
    >: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	\R                  R                  \5      rS
\R                  R                  S\S\S\S\\R                  R                     4
S jrg)é    )ÚAnyÚOptionalN)Úis_gptqmodel_available)Ú	LoraLayer)ÚBaseTunerLayeré   )Ú
LoraConfigc                   óv   ^ • \ rS rSr  SS\S\S\4U 4S jjjrS\R                  4S jr	S\
4U 4S	 jjrS
rU =r$ )ÚAwqLoraLinearé   ÚconfigÚrÚ
lora_alphac                 óð   >• UR                   (       a"  [        U R                  R                   S35      e[        TU ]  5         [        R
                  " X5        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   )
Úuse_doraÚ
ValueErrorÚ	__class__Ú__name__ÚsuperÚ__init__r   Úquant_linear_moduleÚ_active_adapterÚupdate_layer)ÚselfÚ
base_layerÚadapter_namer   r   r   Úkwargsr   s          €ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/lora/awq.pyr   ÚAwqLoraLinear.__init__   sp   ø€ ð �?�?Ü §¡× 7Ñ 7Ð8Ð8jÐkÓlÐlä‰ÑÔÜ×Ò˜4Ô,ð $.Ô à+ÔØ×ÑØØØ!Øð	 	ò 	
ó    Úxc                 ó6  • U R                  U5      nU R                  (       a  U$ U R                   Hä  nX0R                  R	                  5       ;  a  M"  U R                  U   nU R
                  U   nU R                  U   nU R                  U   n[        R                  " 5       (       + nU(       a1  UR                  n	U R                  XR                  R                  5      nU" U" U" U5      5      5      n
U(       a  U
R                  W	5      n
X§-  n
X*-   nMæ     U$ )N)r   Údisable_adaptersÚactive_adaptersÚlora_AÚkeysÚlora_BÚlora_dropoutÚscalingÚtorchÚis_autocast_enabledÚdtypeÚ_cast_input_dtypeÚweightÚto)r   r!   ÚresultÚactive_adapterr%   r'   Údropoutr)   Úrequires_conversionÚexpected_dtypeÚoutputs              r   ÚforwardÚAwqLoraLinear.forward5   sò   € Ø×)Ñ)¨!Ó,ˆà× × ØˆMà"×2Ô2ˆNØ§[¡[×%5Ñ%5Ó%7Ó7ÙØ—[‘[ Ñ0ˆFØ—[‘[ Ñ0ˆFØ×'Ñ'¨Ñ7ˆGØ—l‘l >Ñ2ˆGä&+×&?Ò&?Ó&AÔ"AÐÞ"Ø!'§¡�Ø×*Ñ*¨1¯m©m×.AÑ.AÓB�á™F¡7¨1£:Ó.Ó/ˆFÞ"ØŸ™ >Ó2�ØÑ%ˆFØ‘_ŠFñ# 3ð$ ˆr    Úreturnc                 ó*   >• [         TU ]  5       nSU-   $ )Nzlora.)r   Ú__repr__)r   Úrepr   s     €r   r:   ÚAwqLoraLinear.__repr__O   s   ø€ Ü‰gÑÓ ˆØ˜‰}Ðr    )r   r   )r   r   )r   Ú
__module__Ú__qualname__Ú__firstlineno__r	   Úintr   r*   ÚTensorr6   Ústrr:   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      sT   ø† ð Øñ
ð ð	
ð
 ð
ð ÷
ð 
ð6˜Ÿ™ô ð4˜#÷ õ r    r   Útargetr   r   r   r8   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   )ÚAwqGEMMQuantLinearr   )Ú
isinstancer   Úget_base_layerr   Ú%gptqmodel.nn_modules.qlinear.gemm_awqrG   r   Úqweight)rE   r   r   r   Ú
new_moduleÚtarget_base_layerrG   s          r   Údispatch_awqrN   T   sj   € ð €Jä�&œ.×)Ñ)Ø"×1Ñ1Ó3Ñà"Ðä×ÑÝLäÐ'×<Ñ<Ü& vÑUÀFÐUÈfÑUˆJØ.×6Ñ6ˆFŒNàÐr    )Útypingr   r   r*   Úpeft.import_utilsr   Úpeft.tuners.lora.layerr   Úpeft.tuners.tuners_utilsr   r   r	   ÚnnÚModuler   rB   rN   © r    r   Ú<module>rV      sx   ð÷ !ã å 4Ý ,Ý 3å ô8�E—H‘H—O‘O Yô 8ðvØ�H‰H�O‰Oðàðð ðð ð	ð
 ˆe�h‰h�o‰oÑõr    