ó
    >: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\R                  R                  \5      rS\R                  R                  S	\S
\S\\R                  R                     4S jrg)é    )ÚAnyÚOptionalN)Úis_gptqmodel_available)ÚOFTLayer)ÚBaseTunerLayerc                   ó¢   ^ • \ 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\R                  4S jr
S\4U 4S jjrSrU =r$ )ÚAwqOFTLinearé   ÚrÚoft_block_sizeÚmodule_dropoutÚcoftÚepsÚblock_shareÚfan_in_fan_outÚinit_weightsÚuse_cayley_neumannÚnum_cayley_neumann_termsc                 ó–   >• [         TU ]  5         [        R                  " X5        Xl        X l        U R                  UUUUUUUU
UUS9
  g )N)r   r   r   r   r   r   r   r   )ÚsuperÚ__init__r   Úquant_linear_moduleÚ_active_adapterÚupdate_layer)ÚselfÚ
base_layerÚadapter_namer   r   r   r   r   r   r   r   r   r   ÚkwargsÚ	__class__s                 €ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/oft/awq.pyr   ÚAwqOFTLinear.__init__   s]   ø€ ô  	‰ÑÔÜ×Ò˜$Ô+ð $.Ô à+ÔØ×ÑØØØ)Ø)ØØØ#Ø%Ø1Ø%=ð 	ò 	
ó    Úxc                 óÚ  • U R                   (       a  U R                  U5      nU$ U R                   H¥  nX0R                  R	                  5       ;  a  M"  U R                  U   n[
        R                  " 5       (       + nU(       a1  UR                  nU R                  XR                  R                  5      nU" U5      nU(       d  M”  UR                  W5      nM§     U R                  U5      nU$ )N)Údisable_adaptersr   Úactive_adaptersÚoft_RÚkeysÚtorchÚis_autocast_enabledÚdtypeÚ_cast_input_dtypeÚweightÚto)r   r#   ÚresultÚactive_adapterr'   Úrequires_conversionÚexpected_dtypes          r    ÚforwardÚAwqOFTLinear.forward=   s¾   € Ø× × Ø×-Ñ-¨aÓ0ˆFØˆMà"×2Ô2ˆNØ§Z¡Z§_¡_Ó%6Ó6ÙØ—J‘J˜~Ñ.ˆEä&+×&?Ò&?Ó&AÔ"AÐÞ"Ø!"§¡�Ø×*Ñ*¨1¯l©l×.@Ñ.@ÓA�á�a“ˆAß"Ð"Ø—D‘D˜Ó(’ñ 3ð ×)Ñ)¨!Ó,ˆØˆr"   Úreturnc                 ó*   >• [         TU ]  5       nSU-   $ )Nzoft.)r   Ú__repr__)r   Úrepr   s     €r    r7   ÚAwqOFTLinear.__repr__S   s   ø€ Ü‰gÑÓ ˆØ˜‰|Ðr"   )r   r   )
r   é    g        FgiUMu?FFTFé   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚfloatÚboolr   r)   ÚTensorr3   Ústrr7   Ú__static_attributes__Ú__classcell__)r   s   @r    r	   r	      s³   ø† ð
 Ø Ø #ØØØ!Ø$Ø!Ø#(Ø()ñ#
ð ð	#
ð
 ð#
ð ð#
ð ð#
ð ð#
ð ð#
ð ð#
ð ð#
ð !ð#
ð #&÷#
ð #
ðJ˜Ÿ™ô ð,˜#÷ õ r"   r	   Útargetr   r   r5   c                 óÞ   • S n[        U [        5      (       a  U R                  5       nOU n[        5       (       a3  SSKJn  [        XE5      (       a  [        X40 UD6nUR                  U l        U$ )Nr   )ÚAwqGEMMQuantLinear)Ú
isinstancer   Úget_base_layerr   Ú%gptqmodel.nn_modules.qlinear.gemm_awqrI   r	   Úqweight)rG   r   r   Ú
new_moduleÚtarget_base_layerrI   s         r    Údispatch_awqrP   X   se   € ð
 €Jä�&œ.×)Ñ)Ø"×1Ñ1Ó3Ñà"Ðä×ÑÝLäÐ'×<Ñ<Ü% fÑE¸fÑEˆJØ.×6Ñ6ˆFŒNàÐr"   )Útypingr   r   r)   Úpeft.import_utilsr   Úpeft.tuners.oft.layerr   Úpeft.tuners.tuners_utilsr   ÚnnÚModuler	   rD   rP   © r"   r    Ú<module>rX      sk   ð÷ !ã å 4Ý *Ý 3ô>�5—8‘8—?‘? Hô >ðBØ�H‰H�O‰Oðàðð ðð ˆe�h‰h�o‰oÑõ	r"   