
    fThl                         S SK r S SKJr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JrJrJr  SS
KJr  \" 5       (       a  S SKr\R(                  " \5      r " S S\5      rg)    N)TYPE_CHECKINGOptional)version   )HfQuantizer   )PreTrainedModel)replace_with_aqlm_linear)is_accelerate_availableis_aqlm_availableis_torch_availablelogging)QuantizationConfigMixinc                      ^  \ rS rSrSrSrS/rSrS\4U 4S jjr	S r
SS	 jr  SS jrSS jr\SS
\S   4S jj5       rSS jrSrU =r$ )AqlmHfQuantizer$   zK
Quantizer of the AQLM method. Enables the loading of prequantized models.
TaqlmNquantization_configc                 4   > [         TU ]  " U40 UD6  Xl        g N)super__init__r   )selfr   kwargs	__class__s      ^/var/www/auris/envauris/lib/python3.13/site-packages/transformers/quantizers/quantizer_aqlm.pyr   AqlmHfQuantizer.__init__-   s    ,77#6     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_environment1   s1    &((ghh ""dee #r   c                     Uco  [         R                  R                  5       (       a'  [         R                  n[        R                  S5        U$ [         R                  n[        R                  S5        U$ )NzCUDA available. Assuming AQLM inference on GPU and loading the model in `torch.float16`. To overwrite it, set `torch_dtype` manually.zCUDA is unavailable. Assuming AQLM inference on CPU and loading the model in `torch.float32`. To overwrite it, set `torch_dtype` manually.)torchcudais_availablefloat16loggerinfofloat32)r   torch_dtypes     r   update_torch_dtype"AqlmHfQuantizer.update_torch_dtype8   sc    zz&&((#mm \ 	 $mm a r   modelr	   c                     [        UU R                  U R                  R                  S9  U R                  UR                  l        g )N)r   linear_weights_not_to_quantize)r
   r   r1   configr   r/   r   s      r   $_process_model_before_weight_loading4AqlmHfQuantizer._process_model_before_weight_loadingF   s;    
 	! $ 8 8+/+C+C+b+b	

 ,0+C+C(r   c                     U$ r    r3   s      r   #_process_model_after_weight_loading3AqlmHfQuantizer._process_model_after_weight_loadingR   s    r   c                    [         R                  " [        R                  R                  S5      5      [         R                  " S5      :  nU(       a  g[        R                  S[        R                  R                  S5       S35        g)Nr   z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   parse	importlibmetadatar)   warning)r   r/   aqlm_supports_trainings      r   is_trainableAqlmHfQuantizer.is_trainableU   sr    !(y/A/A/I/I&/Q!RV]VcVcdkVl!l!NN6y7I7I7Q7QRX7Y6Z  [R  S r   c                     g)NTr7   )r   safe_serializations     r   is_serializableAqlmHfQuantizer.is_serializable`   s    r   )r   )r,   torch.dtypereturnrF   )r/   r	   r   )__name__
__module____qualname____firstlineno____doc__requires_calibrationrequired_packagesoptimum_quantizerr   r   r"   r-   r4   r8   propertyr   r@   rD   __static_attributes____classcell__)r   s   @r   r   r   $   su      7,C 7f
D 
D (+<"=   r   r   )r<   typingr   r   	packagingr   baser   modeling_utilsr	   integrationsr
   utilsr   r   r   r   utils.quantization_configr   r%   
get_loggerrH   r)   r   r7   r   r   <module>r[      sQ     *   0 3 [ [ ? 			H	%=k =r   