
    Z jV
                         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      w/root/GenerationalWealth/GenerationalWealth/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_loading4AqlmHfQuantizer._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!HGMMZaLb!b!NN6x7G7G7O6P  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   