
    6i              	           d dl mZ ddlmZ erddlmZ ddlmZmZ  ej                  e
      Zddd	d
dddddZ G d de      Zy)    )TYPE_CHECKING   )HfQuantizer   )PreTrainedModel)is_quark_availableloggingzweight_quantizer.scalezbias_quantizer.scalezinput_quantizer.scalezoutput_quantizer.scalezweight_quantizer.zero_pointzbias_quantizer.zero_pointzinput_quantizer.zero_pointzoutput_quantizer.zero_point)weight_scale
bias_scaleinput_scaleoutput_scaleweight_zero_pointbias_zero_pointinput_zero_pointoutput_zero_pointc                   d     e Zd ZdZdZ fdZd ZddZddded	e	fd
Z
d Zed        Zd Z xZS )QuarkHfQuantizerz?
    Quark quantizer (https://quark.docs.amd.com/latest/).
    Tc                 H    t        |   |fi | |j                  | _        y )N)super__init__json_export_config)selfquantization_configkwargs	__class__s      c/mnt/e/genesis-system/.venv/lib/python3.12/site-packages/transformers/quantizers/quantizer_quark.pyr   zQuarkHfQuantizer.__init__0   s$    ,77"5"H"H    c                 .    t               st        d      y )NzLoading a Quark quantized model requires the `quark` library but it was not found in the environment. Please refer to https://quark.docs.amd.com/latest/install.html.)r   ImportError)r   argsr   s      r   validate_environmentz%QuarkHfQuantizer.validate_environment5   s     !# x  $r   modelr   c                     ddl m}  ||| j                  j                  | j                  j
                  | j                  j                         |S )Nr   )_map_to_quark)pack_methodcustom_mode)quark.torch.export.apir$   r   quant_configr   r%   r&   )r   r"   r   r$   s       r   $_process_model_before_weight_loadingz5QuarkHfQuantizer._process_model_before_weight_loading;   sD    8$$11//;;00<<		
 r   
param_namereturnc                      y)NT )r   r"   r*   r   s       r   param_needs_quantizationz)QuarkHfQuantizer.param_needs_quantizationG   s    r   c                      yNFr-   r   s    r   is_serializablez QuarkHfQuantizer.is_serializableJ   s    r   c                      yr0   r-   r1   s    r   is_trainablezQuarkHfQuantizer.is_trainableM   s    r   c           
          ddl m} ddlm} g }t        j                         D ]$  }|j                   ||g| ||       g             & |S )Nr   )WeightConverter)QuarkDeserialize)source_patternstarget_patterns
operations)core_model_loadingr6   integrations.quarkr7   CHECKPOINT_KEYSkeysappend)r   r6   r7   
converterskeys        r   get_weight_conversionsz'QuarkHfQuantizer.get_weight_conversionsQ   sX    89, 
"'') 	C%(E$' 0 67	 r   )r"   r   )__name__
__module____qualname____doc__requires_calibrationr   r!   r)   strboolr.   r2   propertyr4   rB   __classcell__)r   s   @r   r   r   )   sZ      I

.? S _c   !r   r   N)typingr   baser   modeling_utilsr   utilsr   r	   
get_loggerrC   loggerr=   r   r-   r   r   <module>rR      s[    !  0 / 
		H	% -(*,6246	I{ Ir   