ó
    qyüiV
  ã                   óÀ   • S SK Jr  S SKJr  S SKJr  SSKJr  \(       a  SSKJ	r	  SSK
Jr  SS	KJr  SS
KJrJrJr  SSK
Jr  \R&                  " \5      r " S S\5      rg)é    )Úmetadata)ÚTYPE_CHECKING)Úversioné   )ÚHfQuantizeré   )ÚPreTrainedModel)Ú
AqlmConfig)Úreplace_with_aqlm_linear)Úis_accelerate_availableÚis_aqlm_availableÚlogging)ÚQuantizationConfigMixinc                   óv   ^ • \ rS rSr% SrSrS\S'   S\4U 4S jjrS r	  SS jr
\S	\4S
 j5       rS rSrU =r$ )ÚAqlmHfQuantizeré"   zK
Quantizer of the AQLM method. Enables the loading of prequantized models.
Tr
   Úquantization_configc                 ó(   >• [         TU ]  " U40 UD6  g )N)ÚsuperÚ__init__)Úselfr   ÚkwargsÚ	__class__s      €Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/quantizers/quantizer_aqlm.pyr   ÚAqlmHfQuantizer.__init__*   s   ø€ Ü‰ÒÐ,Ñ7°Ó7ó    c                 ól   • [        5       (       d  [        S5      e[        5       (       d  [        S5      eg )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_environmentÚ$AqlmHfQuantizer.validate_environment-   s1   € Ü&×(Ñ(ÜÐgÓhÐhä ×"Ñ"ÜÐdÓeÐeð #r   c                 óV   • [        UU R                  R                  U R                  S9  g )N)Úmodules_to_not_convertr   )r   r   Úlinear_weights_not_to_quantize)r   Úmodelr   s      r   Ú$_process_model_before_weight_loadingÚ4AqlmHfQuantizer._process_model_before_weight_loading4   s'   € ô
 	!ØØ#'×#;Ñ#;×#ZÑ#ZØ $× 8Ñ 8ó	
r   Úreturnc                 óð   • [         R                  " [        R                   " S5      5      [         R                  " S5      :¬  nU(       a  g[        R	                  S[        R                   " S5       S35        g)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_trainableÚ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                 ó   • g)NT© )r   s    r   Úis_serializableÚAqlmHfQuantizer.is_serializableJ   s   € Ør   r2   )r%   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úrequires_calibrationÚ__annotations__r   r   r    r&   ÚpropertyÚboolr/   r3   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   "   s[   ø‡ ñð  ÐØ%Ó%ð8Ð,C÷ 8òfð	
à ô	
ð ð˜dó ó ð÷ð r   r   N)Ú	importlibr   Útypingr   Ú	packagingr   Úbaser   Úmodeling_utilsr	   Úutils.quantization_configr
   Úintegrationsr   Úutilsr   r   r   r   Ú
get_loggerr5   r,   r   r2   r   r   Ú<module>rI      sH   ðõ Ý  å å ö Ý0Ý6å 3ß GÑ GÝ ?ð 
×	Ò	˜HÓ	%€ô)�kõ )r   