
    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      w/var/www/vps2.regionflexible.com/Desarrollo/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!HGMMZaLb!b!NN6x7G7G7O6P  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   