
    3j	:              
       >   S SK r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJ r   SSK!J"r"  SS	K#J$r$  SS
K%J&r&  SSK'J(r(  SSK)J*r*  SSK+J,r,  SSK-J.r.  SSK/J0r0  SSK1J2r2  SSK3J4r4  SSK5J6r6  SSK7J8r8  SSK9J:r:  SSK;J<r<  SSK=J>r>  SSK?J@r@  SSKAJBrB  SSKCJDrD  SSKEJFrF  SSKGJHrH  SSKIJJrJ  SSKKJLrL  SSKMJNrN  SSKOJPrP  0 S \&_S!\*_S"\,_S#\<_S$\"_S%\F_S&\H_S'\6_S(\8_S)\0_S*\>_S+\@_S,\._S-\2_S.\N_S/\(_S0\P_\L\4\4\$\D\B\J\:S1.ErQ0 S \_S!\
_S"\
_S)\_S#\_S$\_S%\_S&\_S'\_S(\_S+\_S,\_S-\_S*\_S.\_S/\	_S0\_\\\\\\\\S1.ErR\\\\\\\\4rS\R                  " \U5      rV " S2 S35      rW " S4 S55      rXS6\Y4S7 jrZS8\Y4S9 jr[S: r\g);    N   )
AutoConfig)logging)
AqlmConfigAutoRoundConfig	AwqConfigBitNetQuantConfigBitsAndBytesConfigCompressedTensorsConfig
EetqConfigFbgemmFp8ConfigFineGrainedFP8ConfigFourOverSixConfigFPQuantConfigGemmaQuantizationConfig
GPTQConfigHiggsConfig	HqqConfigMetalConfigMxfp4ConfigQuantizationConfigMixinQuantizationMethodQuantoConfigQuarkConfig
SinqConfig
SpQRConfigTorchAoConfig
VptqConfig   )HfQuantizer)AqlmHfQuantizer)AutoRoundQuantizer)AwqQuantizer)BitNetHfQuantizer)Bnb4BitHfQuantizer)Bnb8BitHfQuantizer)CompressedTensorsHfQuantizer)EetqHfQuantizer)FbgemmFp8HfQuantizer)FineGrainedFP8HfQuantizer)FourOverSixHfQuantizer)FPQuantHfQuantizer)GemmaQuantizer)GptqHfQuantizer)HiggsHfQuantizer)HqqHfQuantizer)MetalHfQuantizer)Mxfp4HfQuantizer)QuantoHfQuantizer)QuarkHfQuantizer)SinqHfQuantizer)SpQRHfQuantizer)TorchAoHfQuantizer)VptqHfQuantizerawqbitsandbytes_4bitbitsandbytes_8bitgptqaqlmquantoquarkfouroversixfp_quanteetqhiggshqqzcompressed-tensors
fbgemm_fp8torchaobitnetvptq)spqrfp8mxfp8z
auto-roundmxfp4metalsinqgemmac                   @    \ rS rSrSr\S\4S j5       r\S 5       rSr	g)AutoQuantizationConfig   z
The Auto-HF quantization config class that takes care of automatically dispatching to the correct
quantization config given a quantization config stored in a dictionary.
quantization_config_dictc           	         UR                  S5      nUR                  SS5      (       d  UR                  SS5      (       a/  UR                  SS5      (       a  SOSn[        R                  U-   nOUc  [        S5      eU[        ;  a,  [        SU S	[        [        R                  5       5       35      e[        U   nUR                  U5      $ )
Nquant_methodload_in_8bitFload_in_4bit_4bit_8bitThe model's quantization config from the arguments has no `quant_method` attribute. Make sure that the model has been correctly quantizedUnknown quantization type, got  - supported types are: )	getr   BITS_AND_BYTES
ValueError AUTO_QUANTIZATION_CONFIG_MAPPINGlistAUTO_QUANTIZER_MAPPINGkeys	from_dict)clsrS   rU   suffix
target_clss        V/home/wildlama/miniconda3/lib/python3.13/site-packages/transformers/quantizers/auto.pyrd    AutoQuantizationConfig.from_dict   s    /33NC#''>>BZB^B^_motBuBu 8 < <^U S SWY`F-<<vEL! \  ??1, @/44678: 
 6lC
##$<==    c                     [         R                  " U40 UD6n[        USS 5      c  [        SU S35      eUR                  nU R                  U5      nUR                  " S0 UD6  U$ )Nquantization_configz)Did not found a `quantization_config` in z2. Make sure that the model is correctly quantized. )r   from_pretrainedgetattrr_   rl   rd   update)re   pretrained_model_name_or_pathkwargsmodel_configrS   rl   s         rh   rn   &AutoQuantizationConfig.from_pretrained   s    !112OZSYZ<!6=E;<Y;Z  [M  N  $0#C#C !mm,DE"",V,""rj   rm   N)
__name__
__module____qualname____firstlineno____doc__classmethoddictrd   rn   __static_attributes__rm   rj   rh   rQ   rQ      s6    
 > > >( 
# 
#rj   rQ   c                   ~    \ rS rSrSr\S\\-  4S j5       r\S 5       r	\S\\-  S\S-  4S j5       r
\S	 5       rS
rg)AutoHfQuantizer   z
 The Auto-HF quantizer class that takes care of automatically instantiating to the correct
`HfQuantizer` given the `QuantizationConfig`.
rl   c           	         [        U[        5      (       a  [        R                  U5      nUR                  nU[
        R                  :X  a<  [        U[        5      (       d  [        S5      eUR                  (       a  US-  nOUS-  nU[        ;  a,  [        SU S[        [        R                  5       5       35      e[        U   nU" U40 UD6$ )NzZFound `quant_method=bitsandbytes` but `quantization_config` is not a `BitsAndBytesConfig`.rY   rX   r[   r\   )
isinstancer{   rQ   rd   rU   r   r^   r
   	TypeErrorrV   rb   r_   ra   rc   )re   rl   rr   rU   rg   s        rh   from_configAutoHfQuantizer.from_config   s     )400"8"B"BCV"W*77 -<<<13EFFp  #//''551, @/44678: 
 ,L9
-888rj   c                 R    [         R                  " U40 UD6nU R                  U5      $ )N)rQ   rn   r   )re   rq   rr   rl   s       rh   rn   AutoHfQuantizer.from_pretrained   s*    4DDEbmflm233rj   quantization_config_from_argsNc                 J   Ub  SnOSn[        U[        5      (       aA  [        U[        5      (       a  [        R                  " U5      nO[        R                  U5      nUbh  UR
                  R                  UR
                  R                  :w  a:  [        SUR
                  R                   SUR
                  R                   S35      e[        U[        5      (       aq  [        U[        5      (       a\  UR                  5       nUR                  5        H  u  pV[        XU5        M     U(       a   US[        UR                  5       5       S3-  nUS:w  a8  [        U[        [        [         45      (       d  ["        R$                  " U5        U$ [&        R)                  U5        U$ )zt
handles situations where both quantization_config from args and quantization_config from model config are present.
zYou passed `quantization_config` or equivalent parameters to `from_pretrained` but the model you're loading already has a `quantization_config` attribute. The `quantization_config` from the model will be used. zThe model is quantized with z but you are passing a z| config. Please make sure to pass the same quantization config class to `from_pretrained` with different loading attributes.z"However, loading attributes (e.g. z]) will be overwritten with the one you passed to `from_pretrained`. The rest will be ignored.)r   r{   r   rd   rQ   	__class__ru   r_   LOADING_ATTRIBUTES_CONFIG_TYPESget_loading_attributesitemssetattrra   rc   r   r   r   warningswarnloggerinfo)re   rl   r   warning_msgloading_attr_dictattrvals          rh   merge_quantization_configs*AutoHfQuantizer.merge_quantization_configs   s    )4y 
 K)4007II&5&?&?@S&T#&<&F&FGZ&[# *5#--66:W:a:a:j:jj./B/L/L/U/U.VVm  oL  oV  oV  o_  o_  n` `F F 
 )+JKKPZ)+JQ
 Q
 !> T T V.446	+37 7 !!CDIZI_I_IaDbCc  dA   B  B"Z0CkS^`tEu%v%vMM+& #" KK$""rj   c           	         U R                  SS 5      nU R                  SS5      (       d  U R                  SS5      (       a/  U R                  SS5      (       a  SOSn[        R                  U-   nOUc  [        S5      eU[        ;  a8  [
        R                  SU S	[        [        R                  5       5       S
35        gg)NrU   rV   FrW   rX   rY   rZ   r[   r\   z~. Hence, we will skip the quantization. To remove the warning, you can delete the quantization_config attribute in config.jsonT)
r]   r   r^   r_   r`   r   warningra   rb   rc   )rS   rU   rf   s      rh   supports_quant_method%AutoHfQuantizer.supports_quant_method  s    /33NDI#''>>BZB^B^_motBuBu 8 < <^U S SWY`F-<<vEL! \  ??NN1, @/44678 9ii
 rj   rm   )ru   rv   rw   rx   ry   rz   r   r{   r   rn   r   staticmethodr   r|   rm   rj   rh   r~   r~      s    
 9.E.L 9 98 4 4 /#!$;;/# (?'E/# /#b  rj   r~   methodc                    ^  U 4S jnU$ )z-Register a custom quantization configuration.c                    > T[         ;   a  [        ST S35      e[        U [        5      (       d  [	        S5      eU [         T'   U $ )NzConfig '' already registeredz*Config must extend QuantizationConfigMixin)r`   r_   
issubclassr   r   )re   r   s    rh   register_config_fn8register_quantization_config.<locals>.register_config_fn-  sK    55xx/CDEE#677HII36(0
rj   rm   )r   r   s   ` rh   register_quantization_configr   *  s     rj   namec                    ^  U 4S jnU$ )zRegister a custom quantizer.c                    > T[         ;   a  [        ST S35      e[        U [        5      (       d  [	        S5      eU [         T'   U $ )NzQuantizer 'r   z!Quantizer must extend HfQuantizer)rb   r_   r   r    r   )re   r   s    rh   register_quantizer_fn1register_quantizer.<locals>.register_quantizer_fn=  sJ    )){4&0DEFF#{++?@@'*t$
rj   rm   )r   r   s   ` rh   register_quantizerr   :  s     ! rj   c                 N   [        U SS 5      S LnU(       a&  [        R                  U R                  5      (       d  SnU(       d  UbR  U(       a&  [        R	                  U R                  U5      U l        OXl        [        R                  U R                  US9nOS nUb  UR                  UUS9  UR                  U5      nUR                  U 5      n UR                  U 5      n [        UR                  SS5      (       d&  UR                  R                  n[        USU5      US'   X`U4$ )Nrl   F)pre_quantized)
device_mapweights_only
dequantizevaluequant)ro   r~   r   rl   r   r   validate_environmentupdate_device_mapupdate_tp_planupdate_ep_planrU   )configrl   r   r   
user_agentr   hf_quantizerrU   s           rh   get_hf_quantizerr   J  s&   F$94@LM_BB6C]C]^^+7)8)S)S**,?*F& *=&&22&&' 3 

 ))!% 	* 	
 "33J?
,,V4,,V4 |77uMM';;HHL"),"NJw++rj   )]r   models.auto.configuration_autor   utilsr   utils.quantization_configr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   baser    quantizer_aqlmr!   quantizer_auto_roundr"   quantizer_awqr#   quantizer_bitnetr$   quantizer_bnb_4bitr%   quantizer_bnb_8bitr&   quantizer_compressed_tensorsr'   quantizer_eetqr(   quantizer_fbgemm_fp8r)   quantizer_finegrained_fp8r*   quantizer_fouroversixr+   quantizer_fp_quantr,   quantizer_gemmar-   quantizer_gptqr.   quantizer_higgsr/   quantizer_hqqr0   quantizer_metalr1   quantizer_mxfp4r2   quantizer_quantor3   quantizer_quarkr4   quantizer_sinqr5   quantizer_spqrr6   quantizer_torchaor7   quantizer_vptqr8   rb   r`   r   
get_loggerru   r   rQ   r~   strr   r   r   rm   rj   rh   <module>r      s    7       6  + 4 ' / 2 2 F + 6 @ 9 2 + + - ) - - / - + + 1 +	<+ + O	
 O   ) " O  
> 6 & !  !" O#$ $ '$9 >$	9$+$ +$ J	$
 J$ J$ l$ [$ $$ $ 
9$ 1$ /$ [$ }$  !$" J#$$ !!$3$  : 	#  
		H	%&# &#Rl l^  !S ! !,rj   