
    fTh+                        S SK r S SKJrJrJ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  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-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  0 S\$_S\(_S\*_S\4_S\ _S \:_S!\<_S"\._S#\6_S$\8_S%\,_S&\0_S'\@_S(\&_S)\B_S*\>_S+\2_S,\"0ErC0 S\_S\_S\_S"\_S\_S\
_S \_S!\_S$\_S%\_S&\_S#\_S'\_S(\_S)\_S*\_S+\_S,\0ErD\R                  " \F5      rG " S- S.5      rH " S/ S05      rIS1\J4S2 jrKS3\J4S4 jrLg)5    N)DictOptionalUnion   )
AutoConfig)logging)
AqlmConfigAutoRoundConfig	AwqConfigBitNetQuantConfigBitsAndBytesConfigCompressedTensorsConfig
EetqConfigFbgemmFp8ConfigFineGrainedFP8Config
GPTQConfigHiggsConfig	HqqConfigQuantizationConfigMixinQuantizationMethodQuantoConfigQuarkConfig
SpQRConfigTorchAoConfig
VptqConfig   )HfQuantizer)AqlmHfQuantizer)AutoRoundQuantizer)AwqQuantizer)BitNetHfQuantizer)Bnb4BitHfQuantizer)Bnb8BitHfQuantizer)CompressedTensorsHfQuantizer)EetqHfQuantizer)FbgemmFp8HfQuantizer)FineGrainedFP8HfQuantizer)GptqHfQuantizer)HiggsHfQuantizer)HqqHfQuantizer)QuantoHfQuantizer)QuarkHfQuantizer)SpQRHfQuantizer)TorchAoHfQuantizer)VptqHfQuantizerawqbitsandbytes_4bitbitsandbytes_8bitgptqaqlmquantoquarkeetqhiggshqqzcompressed-tensors
fbgemm_fp8torchaobitnetvptqspqrfp8z
auto-roundc                   @    \ rS rSrSr\S\4S j5       r\S 5       rSr	g)AutoQuantizationConfigk   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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[        R                  5       ;  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keyslistAUTO_QUANTIZER_MAPPING	from_dict)clsrC   rE   suffix
target_clss        T/var/www/auris/envauris/lib/python3.13/site-packages/transformers/quantizers/auto.pyrT    AutoQuantizationConfig.from_dictq   s    /33NDI#''>>BZB^B^_motBuBu 8 < <^U S SWY`F-<<vEL! \  ?DDFF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getattrrO   r\   rT   update)rU   pretrained_model_name_or_pathkwargsmodel_configrC   r\   s         rX   r^   &AutoQuantizationConfig.from_pretrained   s    !112OZSYZ<!6=E;<Y;Z  [M  N  $0#C#C !mm,DE"",V,""rZ   r]   N)
__name__
__module____qualname____firstlineno____doc__classmethodr   rT   r^   __static_attributes__r]   rZ   rX   rA   rA   k   s6    
 > > >( 
# 
#rZ   rA   c                       \ rS rSrSr\S\\\4   4S j5       r	\S 5       r
\S\\\4   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`.
r\   c           	      z   [        U[        5      (       a  [        R                  U5      nUR                  nU[
        R                  :X  a  UR                  (       a  US-  nOUS-  nU[        R                  5       ;  a,  [        SU S[        [        R                  5       5       35      e[        U   nU" U40 UD6$ )NrI   rH   rK   rL   )
isinstancedictrA   rT   rE   r   rN   rF   rS   rQ   rO   rR   )rU   r\   rb   rE   rW   s        rX   from_configAutoHfQuantizer.from_config   s     )400"8"B"BCV"W*77 -<<<"//''5::<<1, @/44678: 
 ,L9
-888rZ   c                 R    [         R                  " U40 UD6nU R                  U5      $ )N)rA   r^   rr   )rU   ra   rb   r\   s       rX   r^   AutoHfQuantizer.from_pretrained   s*    4DDEbmflm233rZ   quantization_config_from_argsc                    Ub  SnOSn[        U[        5      (       aA  [        U[        5      (       a  [        R                  " U5      nO[        R                  U5      n[        U[
        [        [        [        [        45      (       aX  UbU  UR                  5       nUR                  5        H  u  pV[        XU5        M     US[        UR                  5       5       S3-  nUS:w  a  [        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"However, loading attributes (e.g. z]) will be overwritten with the one you passed to `from_pretrained`. The rest will be ignored.)rp   rq   r
   rT   rA   r   r   r   r   get_loading_attributesitemssetattrrR   rQ   warningswarn)rU   r\   rv   warning_msgloading_attr_dictattrvals          rX   merge_quantization_configs*AutoHfQuantizer.merge_quantization_configs   s     )4y 
 K)4007II&5&?&?@S&T#&<&F&FGZ&[# #j)_o_v%w  .9 !> T T V.446	+37 7 ?EVE[E[E]@^?_  `}  ~  ~K"MM+&""rZ   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[        R                  5       ;  a8  [        R                  SU S	[        [        R                  5       5       S
35        gg)NrE   rF   FrG   rH   rI   rJ   rK   rL   z~. Hence, we will skip the quantization. To remove the warning, you can delete the quantization_config attribute in config.jsonT)
rM   r   rN   rO   rP   rQ   loggerwarningrR   rS   )rC   rE   rV   s      rX   supports_quant_method%AutoHfQuantizer.supports_quant_method   s    /33NDI#''>>BZB^B^_motBuBu 8 < <^U S SWY`F-<<vEL! \  ?DDFFNN1, @/44678 9ii
 rZ   r]   N)re   rf   rg   rh   ri   rj   r   r   r   rr   r^   rq   r   r   staticmethodr   rk   r]   rZ   rX   rm   rm      s    
 9e4KT4Q.R 9 90 4 4 '#"4)@#@A'# (00G'H'# '#R  rZ   rm   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)rP   rO   
issubclassr   )rU   r   s    rX   register_config_fn8register_quantization_config.<locals>.register_config_fn   sK    55xx/CDEE#677IJJ36(0
rZ   r]   )r   r   s   ` rX   register_quantization_configr      s     rZ   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)rS   rO   r   r   )rU   r   s    rX   register_quantizer_fn1register_quantizer.<locals>.register_quantizer_fn
  sJ    )){4&0DEFF#{++@AA'*t$
rZ   r]   )r   r   s   ` rX   register_quantizerr     s     ! rZ   )Mr|   typingr   r   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   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_gptqr(   quantizer_higgsr)   quantizer_hqqr*   quantizer_quantor+   quantizer_quarkr,   quantizer_spqrr-   quantizer_torchaor.   quantizer_vptqr/   rS   rP   
get_loggerre   r   rA   rm   strr   r   r]   rZ   rX   <module>r      sy    ( ( 7      *  + 4 ' / 2 2 F + 6 @ + - ) / - + 1 +	<+ + O	
 O   O  
> 6 & !  O  O!" 
$#$ $% *$	9$+$ +$ J	$
 J$ J$ l$ [$ 
9$ 1$ /$ [$ }$ $ J$  J!$" 
#$$ /%$  * 
		H	%&# &#R` `F  !S !rZ   