ó
    qyüi>8  ã                   ó&  • 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  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K0J1r1  SSK2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9  SSK:J;r;  SSK<J=r=  SSK>J?r?  SSK@JArA  SSKBJCrC  SSKDJErE  SSKFJGrG  SSKHJIrI  SSKJJKrK  SSKLJMrM  0 S\%_S \)_S!\+_S"\9_S#\!_S$\C_S%\E_S&\5_S'\7_S(\/_S)\;_S*\=_S+\-_S,\1_S-\K_S.\'_S/\M_\I\3\#\A\?\GS0.ErN0 S\_S \
_S!\
_S(\_S"\_S#\_S$\_S%\_S&\_S'\_S*\_S+\_S,\_S)\_S-\_S.\	_S/\_\\\\\\S0.ErO\\\\\\\\4rP\R¢                  " \R5      rS " S1 S25      rT " S3 S45      rUS5\V4S6 jrWS7\V4S8 jrXS9 rYg):é    Né   )Ú
AutoConfig)Úlogging)Ú
AqlmConfigÚAutoRoundConfigÚ	AwqConfigÚBitNetQuantConfigÚBitsAndBytesConfigÚCompressedTensorsConfigÚ
EetqConfigÚFbgemmFp8ConfigÚFineGrainedFP8ConfigÚFourOverSixConfigÚFPQuantConfigÚ
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)Ú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Úfp8z
auto-roundÚmxfp4ÚmetalÚsinqc                   ó@   • \ 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Ú_8bitú‰The 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)ÚclsrO   rQ   ÚsuffixÚ
target_clss        ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/quantizers/auto.pyr`   Ú AutoQuantizationConfig.from_dict�   sÚ   € à/×3Ñ3°NÓCˆà#×'Ñ'¨¸×>Ñ>ÐBZ×B^ÑB^Ð_mÐot×BuÑBuØ 8× <Ñ <¸^ÈU× SÑ S‘WÐY`ˆFÜ-×<Ñ<¸vÑE‰LØÑ!Üð \óð ð Ô?Ó?ÜØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð:óð ô
 6°lÑ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[   rh   r`   Úupdate)ra   Úpretrained_model_name_or_pathÚkwargsÚmodel_configrO   rh   s         rd   rj   Ú&AutoQuantizationConfig.from_pretrained¤   s�   € ä!×1Ò1Ð2OÑZÐSYÑZˆÜ�<Ð!6¸Ó=ÑEÜØ;Ð<YÐ;Zð  [Mð  Nóð ð $0×#CÑ#CÐ Ø!Ÿm™mÐ,DÓEÐà×"Ò"Ñ, VÒ,Ø"Ð"rf   ri   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚclassmethodÚdictr`   rj   Ú__static_attributes__ri   rf   rd   rM   rM   ‰   s6   † ñð
 ð>°ó >ó ð>ð( ñ
#ó ó
#rf   rM   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`.
rh   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`.rU   rT   rW   rX   )Ú
isinstancerw   rM   r`   rQ   r   rZ   r
   Ú	TypeErrorrR   r^   r[   r]   r_   )ra   rh   rn   rQ   rc   s        rd   Úfrom_configÚAutoHfQuantizer.from_config¸   sØ   € ô Ð)¬4×0Ñ0Ü"8×"BÑ"BÐCVÓ"WÐà*×7Ñ7ˆð Ô-×<Ñ<Ó<ÜÐ1Ô3E×FÑFÜØpóð ð #×/×/Ø Ñ'‘à Ñ'�àÔ5Ó5ÜØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð:óð ô
 ,¨LÑ9ˆ
ÙÐ-Ñ8°Ñ8Ð8rf   c                 óR   • [         R                  " U40 UD6nU R                  U5      $ )N)rM   rj   r   )ra   rm   rn   rh   s       rd   rj   ÚAutoHfQuantizer.from_pretrainedÕ   s*   € ä4×DÒDÐEbÑmÐflÑmÐØ�‰Ð2Ó3Ð3rf   Ú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.
zÑYou 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}   rw   r   r`   rM   Ú	__class__rq   r[   ÚLOADING_ATTRIBUTES_CONFIG_TYPESÚget_loading_attributesÚitemsÚsetattrr]   r_   r   r   r   ÚwarningsÚwarnÚloggerÚinfo)ra   rh   rƒ   Úwarning_msgÚloading_attr_dictÚattrÚvals          rd   Úmerge_quantization_configsÚ*AutoHfQuantizer.merge_quantization_configsÚ   s²  € ð )Ñ4ðyñ ð
 ˆKäÐ)¬4×0Ñ0äÐ7¼×IÑIÜ&5×&?Ò&?Ð@SÓ&TÑ#ä&<×&FÑ&FÐGZÓ&[Ð#ð *Ñ5Ø#×-Ñ-×6Ñ6Ð:W×:aÑ:a×:jÑ:jÓjäØ.Ð/B×/LÑ/L×/UÑ/UÐ.VÐVmð  oL÷  oVñ  oV÷  o_ñ  o_ð  n`ð `Fð Fóð ô
 Ð)Ô+J×KÑKÔPZØ)Ô+J÷Q
ñ Q
ð !>× TÑ TÓ VÐØ.×4Ñ4Ö6‘	�ÜÐ+°3Ö7ñ 7ö !ØÐ!CÄDÐIZ×I_ÑI_ÓIaÓDbÐCcð  dAð   Bñ  B�à˜"Ó¤ZÐ0CÄkÔS^Ô`tÐEu×%vÑ%vÜ�MŠM˜+Ô&ð #Ð"ô �K‰K˜Ô$Ø"Ð"rf   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)NrQ   rR   FrS   rT   rU   rV   rW   rX   z~. Hence, we will skip the quantization. To remove the warning, you can delete the quantization_config attribute in config.jsonT)
rY   r   rZ   r[   r\   r�   Úwarningr]   r^   r_   )rO   rQ   rb   s      rd   Úsupports_quant_methodÚ%AutoHfQuantizer.supports_quant_method  sÌ   € à/×3Ñ3°NÀDÓIˆØ#×'Ñ'¨¸×>Ñ>ÐBZ×B^ÑB^Ð_mÐot×BuÑBuØ 8× <Ñ <¸^ÈU× SÑ S‘WÐY`ˆFÜ-×<Ñ<¸vÑE‰LØÑ!Üð \óð ð Ô?Ó?Ü�N‰NØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð 9iðiôð
 Ørf   ri   )rq   rr   rs   rt   ru   rv   r   rw   r   rj   r“   Ústaticmethodr—   rx   ri   rf   rd   rz   rz   ²   s‚   † ñð
 ð9Ð.EÈÑ.Ló 9ó ð9ð8 ñ4ó ð4ð ð/#à!Ð$;Ñ;ð/#ð (?ÀÑ'Eó/#ó ð/#ðb ñó órf   rz   Ú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~   )ra   rš   s    €rd   Úregister_config_fnÚ8register_quantization_config.<locals>.register_config_fn$  sK   ø€ ØÔ5Ó5Ü˜x¨ xÐ/CÐDÓEÐEä˜#Ô6×7Ñ7ÜÐHÓIÐIà36Ô(¨Ñ0Øˆ
rf   ri   )rš   rŸ   s   ` rd   Úregister_quantization_configr¡   !  s   ø€ õð Ðrf   Ú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)r^   r[   rž   r   r~   )ra   r¢   s    €rd   Úregister_quantizer_fnÚ1register_quantizer.<locals>.register_quantizer_fn4  sJ   ø€ ØÔ)Ó)Ü˜{¨4¨&Ð0DÐEÓFÐFä˜#œ{×+Ñ+ÜÐ?Ó@Ð@à'*Ô˜tÑ$Øˆ
rf   ri   )r¢   r¥   s   ` rd   Úregister_quantizerr§   1  s   ø€ õð !Ð rf   c                 óH  • [        U S5      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$ )Nrh   F)Úpre_quantized)Ú
device_mapÚweights_onlyÚ
dequantizeÚvalueÚquant)Úhasattrrz   r—   rh   r“   r   Úvalidate_environmentÚupdate_device_mapÚupdate_tp_planÚupdate_ep_planrk   rQ   )Úconfigrh   rª   r«   Ú
user_agentr©   Úhf_quantizerrQ   s           rd   Úget_hf_quantizerr·   A  s  € Ü˜FÐ$9Ó:€MÞœ_×BÑBÀ6×C]ÑC]×^Ñ^ØˆæÐ+Ñ7ÞÜ)8×)SÑ)SØ×*Ñ*Ð,?ó*ˆFÕ&ð *=Ô&ä&×2Ñ2Ø×&Ñ&Ø'ð 3ð 
‰ð
 ˆàÑØ×)Ñ)Ø!Ø%ð 	*ñ 	
ð "×3Ñ3°JÓ?ˆ
Ø×,Ñ,¨VÓ4ˆØ×,Ñ,¨VÓ4ˆô �|×7Ñ7¸Àu×MÑMØ'×;Ñ;×HÑHˆLÜ")¨,¸ÀÓ"NˆJ�wÑØ Ð+Ð+rf   )Zr‹   Ú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   Ú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_gptqr,   Úquantizer_higgsr-   Úquantizer_hqqr.   Úquantizer_metalr/   Úquantizer_mxfp4r0   Úquantizer_quantor1   Úquantizer_quarkr2   Úquantizer_sinqr3   Úquantizer_spqrr4   Úquantizer_torchaor5   Úquantizer_vptqr6   r^   r\   r‡   Ú
get_loggerrq   r�   rM   rz   Ústrr¡   r§   r·   ri   rf   rd   Ú<module>rÕ      sÈ  ðó å 7Ý ÷÷ ÷ ÷ ÷ ÷ ó õ4 Ý +Ý 4Ý 'Ý /Ý 2Ý 2Ý FÝ +Ý 6Ý @Ý 9Ý 2Ý +Ý -Ý )Ý -Ý -Ý /Ý -Ý +Ý +Ý 1Ý +ðØ	ˆ<ðàÐ+ðð Ð+ðð ˆOð	ð
 ˆOðð Ððð Ððð Ð)ðð Ð"ðð ˆOðð Ððð 
ˆ>ðð Ð6ðð Ð&ðð Ð!ðð  Ðð!ð" ˆOð#ð$ Ø$Ø$ØØØò/Ð ð4$Ø	ˆ9ð$àÐ+ð$ð Ð+ð$ð ˆJð	$ð
 ˆJð$ð ˆJð$ð ˆlð$ð ˆ[ð$ð Ð$ð$ð �ð$ð 
ˆ9ð$ð Ð1ð$ð �/ð$ð ˆ[ð$ð ˆ}ð$ð  Ðð!$ð" ˆJð#$ð$ ØØ!ØØØò/$Ð  ð6 ØØØØØØØð	#Ð ð 
×	Ò	˜HÓ	%€÷&#ñ &#÷Rlñ lð^¨ô ð !˜Sô !ó !,rf   