ó
    >: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\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$ )ÚGPTQOFTLinearé   Úadapter_nameÚrÚoft_block_sizeÚmodule_dropoutÚcoftÚepsÚblock_shareÚuse_cayley_neumannÚnum_cayley_neumann_termsÚfan_in_fan_outÚinit_weightsc                 ó–   >• [         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_layerr   r   r   r   r   r   r   r   r   r   r   ÚkwargsÚ	__class__s                 €ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/peft/tuners/oft/gptq.pyr   ÚGPTQOFTLinear.__init__   s]   ø€ ô  	‰ÑÔÜ×Ò˜$Ô+ð $.Ô Ø+ÔØ×ÑØØØ)Ø)ØØØ#Ø%Ø1Ø%=ð 	ò 	
ó    Úxc                 óÖ  • U R                   (       a  U R                  U5      $ U R                   H¥  nX R                  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#   Úactive_adapterr'   Úrequires_conversionÚexpected_dtypeÚresults          r    ÚforwardÚGPTQOFTLinear.forward<   sº   € à× × Ø×+Ñ+¨AÓ.Ð.à"×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   ÚGPTQOFTLinear.__repr__R   s   ø€ Ü‰gÑÓ ˆØ˜‰|Ðr"   )r   r   )
é   r   g        FgiUMu?FFé   FT)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚstrÚintÚfloatÚboolr   r)   ÚTensorr3   r7   Ú__static_attributes__Ú__classcell__)r   s   @r    r	   r	      s½   ø† ð
 ØØ #ØØØ!Ø#(Ø()Ø$Ø!ñ"
ð ð"
ð ð	"
ð
 ð"
ð ð"
ð ð"
ð ð"
ð ð"
ð !ð"
ð #&ð"
ð ð"
ð ÷"
ð "
ðH˜Ÿ™ô ð,˜#÷ õ 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   )ÚBaseQuantLinear)Ú
isinstancer   Úget_base_layerr   Úgptqmodel.nn_modules.qlinearrI   r	   Úqweight)rG   r   r   Ú
new_moduleÚtarget_base_layerrI   s         r    Údispatch_gptqrP   W   se   € ð
 €Jä�&œ.×)Ñ)Ø"×1Ñ1Ó3Ñà"Ðä×ÑÝ@äÐ'×9Ñ9Ü& vÑF¸vÑFˆJØ.×6Ñ6ˆFŒNàÐr"   )Útypingr   r   r)   Úpeft.import_utilsr   Úpeft.tuners.oft.layerr   Úpeft.tuners.tuners_utilsr   ÚnnÚModuler	   r@   rP   © r"   r    Ú<module>rX      sk   ð÷ !ã å 4Ý *Ý 3ô=�E—H‘H—O‘O Xô =ð@Ø�H‰H�O‰Oðàðð ðð ˆe�h‰h�o‰oÑõ	r"   