
    3;ji                         d dl mZmZmZ d dlmZ ddlmZ  e            rddlZ ej	        e
          Z G d de          ZdS )	   )is_compressed_tensors_availableis_torch_availablelogging)QuantizationConfigMixin   )HfQuantizer    Nc                   j     e Zd ZdZdZdgZdef fdZd Zdd
Z	d Z
d Zed             ZddZ xZS )CompressedTensorsHfQuantizerz
    Quantizer for the compressed_tensors package.  Loads and restores models to
    quantized state with compressed_tensors
    Tcompressed_tensorsquantization_configc                 |     t                      j        |fi | ddlm} |                    |          | _        d S )Nr	   )ModelCompressor)super__init__compressed_tensors.compressorsr   from_compression_config
compressor)selfr   kwargsr   	__class__s       n/root/voice-cloning/.venv/lib/python3.11/site-packages/transformers/quantizers/quantizer_compressed_tensors.pyr   z%CompressedTensorsHfQuantizer.__init__#   sO    ,77777BBBBBB)AABUVV    c                 z    t                      st          d          t                      st          d          d S )NzuUsing `compressed_tensors` quantized models requires the compressed-tensors library: `pip install compressed-tensors`z;torch is required for using compressed-tensors quantization)r   ImportErrorr   )r   argsr   s      r   validate_environmentz1CompressedTensorsHfQuantizer.validate_environment*   sS    .00 	3   "## 	][\\\	] 	]r   torch_dtypetorch.dtypereturnc                     |'t                               d           t          j        }n*|t          j        k    rt                               d           |S )NzELoading model using torch.float16 for compressed-tensors quantizationz`We suggest you to set `torch_dtype=torch.float16` for better efficiency with compressed_tensors.)loggerinfotorchfloat16)r   r   s     r   update_torch_dtypez/CompressedTensorsHfQuantizer.update_torch_dtype4   sR    KK_```-KKEM))KKr   r   c                 F    ddl m} | j        j        } |||d           d S )Nr	   )apply_quantization_configT)run_compressed)compressed_tensors.quantizationr(   r   r   )r   modelr   r(   ct_quantization_configs        r   $_process_model_before_weight_loadingzACompressedTensorsHfQuantizer._process_model_before_weight_loading>   s?    MMMMMM!%!D!!%)?PTUUUUUUr   c                     d S N )r   r+   r   s      r   #_process_model_after_weight_loadingz@CompressedTensorsHfQuantizer._process_model_after_weight_loadingD   s    r   c                     dS NFr0   )r   s    r   is_trainablez)CompressedTensorsHfQuantizer.is_trainableG   s    ur   Nc                     dS r3   r0   )r   safe_serializations     r   is_serializablez,CompressedTensorsHfQuantizer.is_serializableK   s    ur   )r   r   r    r   r/   )__name__
__module____qualname____doc__requires_calibrationrequired_packagesr   r   r   r&   r-   r1   propertyr4   r7   __classcell__)r   s   @r   r   r      s         
  -.W,C W W W W W W] ] ]   V V V     X       r   r   )utilsr   r   r   utils.quantization_configr   baser   r$   
get_loggerr8   r"   r   r0   r   r   <module>rD      s    Q P P P P P P P P P ? ? ? ? ? ?        LLL		H	%	%2 2 2 2 2; 2 2 2 2 2r   