ó
    qyüi~
  ã                   óŒ   • S SK Jr  SSKJr  \(       a  SSKJr  SSKJrJr  SSK	J
r
  \R                  " \5      r " S S	\5      rg
)é    )ÚTYPE_CHECKINGé   )ÚHfQuantizeré   )ÚPreTrainedModel)Úis_auto_round_availableÚlogging)ÚQuantizationConfigMixinc                   óp   ^ • \ 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	\4S
 j5       rS rSrU =r$ )ÚAutoRoundQuantizeré   zO
Quantizer of the AutoRound method. (https://huggingface.co/papers/2309.05516)
TÚquantization_configc                 ó(   >• [         TU ]  " U40 UD6  g )N)ÚsuperÚ__init__)Úselfr   ÚkwargsÚ	__class__s      €Úi/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/quantizers/quantizer_auto_round.pyr   ÚAutoRoundQuantizer.__init__%   s   ø€ Ü‰ÒÐ,Ñ7°Ó7ó    c                 ód   • UR                  S5      U l        [        5       (       d  [        S5      eg )NÚ
device_mapzbLoading an AutoRound quantized model requires auto-round library (`pip install 'auto-round>=0.5'`))Úgetr   r   ÚImportError)r   Úargsr   s      r   Úvalidate_environmentÚ'AutoRoundQuantizer.validate_environment(   s0   € Ø Ÿ*™* \Ó2ˆŒÜ&×(Ñ(ÜØtóð ð )r   c                 óÚ   • UR                   R                  S:w  a  [        R                  S5        SSKJnJn  U R                  (       a#  U" U R                  5      nU" X5      u  pX`l	        g g )NÚ	input_idszRAutoRound offers only limited support for models that are not strictly text-based.r   )Úconvert_hf_modelÚinfer_target_device)
r   Úmain_input_nameÚloggerÚwarningÚ"auto_round.inference.convert_modelr!   r"   Úpre_quantizedr   Úused_backends)r   Úmodelr   r!   r"   Útarget_devicer(   s          r   Ú$_process_model_before_weight_loadingÚ7AutoRoundQuantizer._process_model_before_weight_loading/   sS   € Ø�?‰?×*Ñ*¨kÓ9Ü�N‰NÐoÔpß\à××Ù/°·±Ó@ˆMÙ#3°EÓ#IÑ ˆEØ!.Õð r   c                 ól   • U R                   (       a  SSKJn  U" XR                  5        g [	        S5      e)Nr   )Ú	post_initz+AutoRound only sports pre-quantized models.)r'   r&   r.   r(   Ú
ValueError)r   r)   r   r.   s       r   Ú#_process_model_after_weight_loadingÚ6AutoRoundQuantizer._process_model_after_weight_loading9   s(   € Ø××ÝDá�e×/Ñ/Õ0äÐJÓKÐKr   Úreturnc                 ó   • g)NF© ©r   s    r   Úis_trainableÚAutoRoundQuantizer.is_trainableA   s   € àr   c                 ó   • g)NTr4   r5   s    r   Úis_serializableÚ"AutoRoundQuantizer.is_serializableE   s   € àr   )r   r(   )r)   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úrequires_calibrationr
   r   r   r+   r0   ÚpropertyÚboolr6   r9   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      sR   ø† ñð
  Ðð8Ð,C÷ 8òô/ôLð ð˜dó ó ð÷ð r   r   N)Útypingr   Úbaser   Úmodeling_utilsr   Úutilsr   r	   Úutils.quantization_configr
   Ú
get_loggerr;   r$   r   r4   r   r   Ú<module>rK      s9   ðõ !å ö Ý0ç 4Ý ?ð 
×	Ò	˜HÓ	%€ô*˜õ *r   