§
    ‚ŠtjV
  ã                   óº   — 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dS )é    )Úmetadata)ÚTYPE_CHECKING)Úversioné   )ÚHfQuantizeré   )ÚPreTrainedModel)Ú
AqlmConfig)Úreplace_with_aqlm_linear)Úis_accelerate_availableÚis_aqlm_availableÚlogging)ÚQuantizationConfigMixinc                   ól   ‡ — 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          ¦   «         j        |fi |¤Ž d S )N)ÚsuperÚ__init__)Úselfr   ÚkwargsÚ	__class__s      €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/quantizers/quantizer_aqlm.pyr   zAqlmHfQuantizer.__init__*   s)   ø€ Ø�‰ŒÔÐ,Ð7Ð7°Ð7Ð7Ð7Ð7Ð7ó    c                 óz   — t          ¦   «         st          d¦  «        ‚t          ¦   «         st          d¦  «        ‚d S )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-   sJ   € Ý&Ñ(Ô(ð 	iÝÐgÑhÔhÐhå Ñ"Ô"ð 	fÝÐdÑeÔeÐeð	fð 	fr   Úmodelr	   c                 óH   — t          || j        j        | j        ¬¦  «         d S )N)Úmodules_to_not_convertr   )r   r   Úlinear_weights_not_to_quantize)r   r   r   s      r   Ú$_process_model_before_weight_loadingz4AqlmHfQuantizer._process_model_before_weight_loading4   s7   € õ
 	!ØØ#'Ô#;Ô#ZØ $Ô 8ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r   Úreturnc                 óæ   — t          j        t          j         d¦  «        ¦  «        t          j        d¦  «        k    }|rdS t                               dt          j         d¦  «        › d�¦  «         dS )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?   s|   € å!(¤­xÔ/?ÀÑ/GÔ/GÑ!HÔ!HÍGÌMÐZaÑLbÔLbÒ!bÐØ!ð 	Ø�4å�NŠNð IµxÔ7GÈÑ7OÔ7Oð  Ið  Ið  Iñô ð ð �5r   c                 ó   — dS )NT© )r   s    r   Úis_serializablezAqlmHfQuantizer.is_serializableJ   s   € Øˆtr   )r   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úrequires_calibrationÚ__annotations__r   r   r   r#   ÚpropertyÚboolr+   r.   Ú__classcell__)r   s   @r   r   r   "   sÉ   ø€ € € € € € ðð ð  ÐØ%Ð%Ð%Ñ%ð8Ð,Cð 8ð 8ð 8ð 8ð 8ð 8ðfð fð fð	
à ð	
ð 	
ð 	
ð 	
ð ð˜dð ð ð ñ „Xððð ð ð ð ð ð 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      s  ðð Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ð ð 7Ø0Ð0Ð0Ð0Ð0Ð0Ø6Ð6Ð6Ð6Ð6Ð6à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ð 
ˆÔ	˜HÑ	%Ô	%€ð)ð )ð )ð )ð )�kñ )ô )ð )ð )ð )r   