Ë
    HêñiV
  ã                   ó¶   — d dl mZ d dlmZ d dlmZ ddlmZ erddlm	Z	 ddl
mZ dd	lmZ dd
lmZmZmZ ddl
mZ  ej&                  e«      Z G d„ de«      Zy)é    )Úmetadata)ÚTYPE_CHECKING)Úversioné   )ÚHfQuantizeré   )ÚPreTrainedModel)Ú
AqlmConfig)Úreplace_with_aqlm_linear)Úis_accelerate_availableÚis_aqlm_availableÚlogging)ÚQuantizationConfigMixinc                   óf   ‡ — e Zd ZU dZdZded<   defˆ fd„Zd„ Z	 	 dd„Z	e
defd	„«       Zd
„ Zˆ xZS )ÚAqlmHfQuantizerzS
    Quantizer of the AQLM method. Enables the loading of prequantized models.
    Tr
   Úquantization_configc                 ó&   •— t        ‰| �  |fi |¤Ž y )N)ÚsuperÚ__init__)Úselfr   ÚkwargsÚ	__class__s      €úh/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/transformers/quantizers/quantizer_aqlm.pyr   zAqlmHfQuantizer.__init__*   s   ø€ Ü‰ÑÐ,Ñ7°Ó7ó    c                 óX   — t        «       st        d«      ‚t        «       st        d«      ‚y )NzGUsing `aqlm` quantization requires Accelerate: `pip install accelerate`zDUsing `aqlm` quantization requires AQLM: `pip install aqlm[gpu,cpu]`)r   ÚImportErrorr   )r   Úargsr   s      r   Úvalidate_environmentz$AqlmHfQuantizer.validate_environment-   s+   € Ü&Ô(ÜÐgÓhÐhä Ô"ÜÐdÓeÐeð #r   c                 ó\   — t        || j                  j                  | j                  ¬«       y )N)Úmodules_to_not_convertr   )r   r   Úlinear_weights_not_to_quantize)r   Úmodelr   s      r   Ú$_process_model_before_weight_loadingz4AqlmHfQuantizer._process_model_before_weight_loading4   s'   € ô
 	!ØØ#'×#;Ñ#;×#ZÑ#ZØ $× 8Ñ 8ö	
r   Úreturnc                 óÞ   — t        j                  t        j                   d«      «      t        j                  d«      k\  }|ryt        j	                  dt        j                   d«      › d�«       y)NÚaqlmz1.0.2Tz$Currently installed `aqlm` version (zw) doesn't support training. If you wish to train a quantized model, please update `aqlm` with `pip install aqlm>=1.0.2`F)r   Úparser   ÚloggerÚwarning)r   Úaqlm_supports_trainings     r   Úis_trainablezAqlmHfQuantizer.is_trainable?   sb   € ä!(§¡¬x×/?Ñ/?ÀÓ/GÓ!HÌGÏMÉMÐZaÓLbÑ!bÐÙ!Øä�N‰NØ6´x×7GÑ7GÈÓ7OÐ6Pð  QHð  Iôð r   c                  ó   — y)NT© )r   s    r   Úis_serializablezAqlmHfQuantizer.is_serializableJ   s   € Ør   )r"   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úrequires_calibrationÚ__annotations__r   r   r   r#   ÚpropertyÚboolr+   r.   Ú__classcell__)r   s   @r   r   r   "   sV   ø… ñð  ÐØ%Ó%ð8Ð,Cõ 8òfð	
à ó	
ð ð˜dò ó ðör   r   N)Ú	importlibr   Útypingr   Ú	packagingr   Úbaser   Úmodeling_utilsr	   Úutils.quantization_configr
   Úintegrationsr   Úutilsr   r   r   r   Ú
get_loggerr/   r(   r   r-   r   r   ú<module>rA      sJ   ðõ Ý  å å ñ Ý0Ý6å 3ß GÑ GÝ ?ð 
ˆ×	Ñ	˜HÓ	%€ô)�kõ )r   