+
    QV-j»  ã                   óÚ   € ^ RI t^ RIHt ^ RIHt ^RIHt ]'       d   ^RIH	t	 ^RI
Ht ^RIHtHtHtHt ^RI
Ht ]! 4       '       d   ^ RIt]P&                  ! ]4      t ! R	 R
]4      tR# )é    N)ÚTYPE_CHECKING)Úversion)ÚHfQuantizer)ÚPreTrainedModel)Ú	AwqConfig)Úis_accelerate_availableÚis_gptqmodel_availableÚis_torch_availableÚlogging)Ú
AwqBackendc                   ó€   a a€ ] tR t^$t oRtRtV 3R ltR tR tV3R lR lt	R t
R	 t]R
 4       tV3R ltRtVtV ;t# )ÚAwqQuantizerzm
4-bit quantization for Activation-aware Weight Quantization(AWQ) (https://huggingface.co/papers/2306.00978)
Tc                ó*   <€ \         SV `  ! V3/ VB  R # )N)ÚsuperÚ__init__)ÚselfÚquantization_configÚkwargsÚ	__class__s   &&,€Úv/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/quantizers/quantizer_awq.pyr   ÚAwqQuantizer.__init__-   s   ø€ Ü‰ÒÐ,Ñ7°Ô7ó    c                ór   € \        4       '       g   \        R 4      h\        4       '       g   \        R4      hR# )zaLoading an AWQ quantized model requires gptqmodel. Please install it with `pip install gptqmodel`zMLoading an AWQ quantized model requires accelerate (`pip install accelerate`)N)r	   ÚImportErrorr   )r   r   s   &,r   Úvalidate_environmentÚ!AwqQuantizer.validate_environment0   s7   € Ü%×'Ò'ÜØsóð ô '×(Ò(ÜÐmÓnÐnñ )r   c                óò  € V\         P                  8X  dp   \         P                  P                  4       '       g%   \         P                  P                  4       '       d(   \
        P                  R 4       \         P                  pV# V\         P                  8w  d^   \         P                  P                  4       '       g%   \         P                  P                  4       '       d   \
        P                  R4       V# )z[`torch.bfloat16` is not supported for AWQ CUDA/XPU kernels yet. Casting to `torch.float16`.zWWe suggest you to set `dtype=torch.float16` for better efficiency on CUDA/XPU with AWQ.)ÚtorchÚbfloat16ÚcudaÚis_availableÚxpuÚloggerÚwarningÚfloat16)r   Údtypes   &&r   Úupdate_dtypeÚAwqQuantizer.update_dtype9   s—   € Ø”E—N‘NÔ"¬¯
©
×(?Ñ(?×(AÒ(AÄUÇYÁY×E[ÑE[×E]ÒE]Ü�N‰NØmôô —M‘MˆEð ˆð ”e—m‘mÔ#¬¯©×)@Ñ)@×)BÒ)BÄeÇiÁi×F\ÑF\×F^ÒF^Ü�N‰NÐtÔuØˆr   c                ó   <€ V ^8„  d   QhRR/# )é   Úmodelr   © )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚAwqQuantizer.__annotate__C   s   ø€ ÷ Lñ LÐ:Kñ Lr   c                ó  € ^RI HpHp V P                  WP                  P
                  VP                  RR7      V n        V! VV P                  V P
                  VP                  R4      R7      pV! WP                  P                  4      pR# )r*   )Úreplace_quantization_scalesÚreplace_with_awq_linearT)Úadd_default_skipsÚ
device_map)r   Úmodules_to_not_convertr5   N)
Úintegrationsr2   r3   Úget_modules_to_not_convertr   r6   Ú_keep_in_fp32_modulesÚgetÚconfigÚ
model_type)r   r+   r   r2   r3   s   &&,  r   Ú$_process_model_before_weight_loadingÚ1AwqQuantizer._process_model_before_weight_loadingC   s{   € ßWà&*×&EÑ&EØ×+Ñ+×BÑBÀE×D_ÑD_Ðswð 'Fó '
ˆÔ#ñ (ØØ $× 8Ñ 8Ø#'×#>Ñ#>Ø—z‘z ,Ó/ô	
ˆñ ,¨E·<±<×3JÑ3JÓKŠr   c                óL   € ^ RI Hp V! WP                  P                  R7       R# )r   )Úhf_gptqmodel_post_init)Úuse_act_orderN)Úgptqmodel.utils.modelr@   r   Údesc_act)r   r+   r   r@   s   &&, r   Ú#_process_model_after_weight_loadingÚ0AwqQuantizer._process_model_after_weight_loadingS   s   € Ý@á˜u×4LÑ4L×4UÑ4U×Vr   c                ó¦   € V P                   P                  \        P                  \        P                  39   d   \
        P                  R 4       R# R# )z7You cannot save an AWQ model that uses Exllama backend!FT)r   Úbackendr   Ú
EXLLAMA_V1Ú
EXLLAMA_V2r#   r$   ©r   s   &r   Úis_serializableÚAwqQuantizer.is_serializableX   s:   € Ø×#Ñ#×+Ñ+´
×0EÑ0EÄz×G\ÑG\Ð/]Ô]Ü�N‰NÐTÔUÙár   c                ó–   € \         P                  ! \        P                  P                  R 4      4      \         P                  ! R4      8¬  # )Ú	gptqmodelz5.0.0)r   ÚparseÚ	importlibÚmetadatarJ   s   &r   Úis_trainableÚAwqQuantizer.is_trainable_   s1   € ä�}Š}œY×/Ñ/×7Ñ7¸ÓDÓEÌÏÊÐW^ÓI_Ñ_Ð_r   c                ó$   <€ V ^8„  d   Qh/ R;R&   # )r*   r   r   r,   )r-   r.   s   "€r   r/   r0   $   s   ø‡ ‚ ð %Ñ$ò r   )r6   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úrequires_calibrationr   r   r'   r=   rD   rK   ÚpropertyrR   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   r.   s   @@r   r   r   $   sW   ù‡ € ñð
  Ðõ8òoò÷Lð Lò Wò
ð ñ`ó ð`÷y … r   r   )Úimportlib.metadatarP   Útypingr   Ú	packagingr   Úbaser   Úmodeling_utilsr   Úutils.quantization_configr   Úutilsr   r	   r
   r   r   r   Ú
get_loggerrU   r#   r   r,   r   r   Ú<module>rh      sS   ðó Ý  å å ÷ Ý0Ý5ç `Ó `Ý 2ñ ×ÒÛà	×	Ò	˜HÓ	%€ô=`�;ö =`r   