Ë
    îÍ:jì5  ã                   óâ  — d dl Z d dlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ dd	l m!Z! dd
l"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZG i de%“de)“de+“d e7“d!e!“d"e?“d#eA“d$e5“d%e/“d&e9“d'e;“d(e-“d)e1“d*eE“d+e'“d,eG“d-eC“e3e#e=d.œ¥ZHi de“de“de“d%e“d e“d!e	“d"e“d#e“d$e“d'e“d(e“d)e“d&e“d*e“d+e“d,e“d-e“ee
ed.œ¥ZI ej”                  eK«      ZL G d/„ d0«      ZM G d1„ d2«      ZNd3eOfd4„ZPd5eOfd6„ZQd7„ ZRy)8é    N)ÚOptionalÚUnioné   )Ú
AutoConfig)Úlogging)Ú
AqlmConfigÚAutoRoundConfigÚ	AwqConfigÚBitNetQuantConfigÚBitsAndBytesConfigÚCompressedTensorsConfigÚ
EetqConfigÚFbgemmFp8ConfigÚFineGrainedFP8ConfigÚFPQuantConfigÚ
GPTQConfigÚHiggsConfigÚ	HqqConfigÚMxfp4ConfigÚQuantizationConfigMixinÚQuantizationMethodÚQuantoConfigÚQuarkConfigÚ
SpQRConfigÚTorchAoConfigÚ
VptqConfigé   )ÚHfQuantizer)ÚAqlmHfQuantizer)ÚAutoRoundQuantizer)ÚAwqQuantizer)ÚBitNetHfQuantizer)ÚBnb4BitHfQuantizer)ÚBnb8BitHfQuantizer)ÚCompressedTensorsHfQuantizer)ÚEetqHfQuantizer)ÚFbgemmFp8HfQuantizer)ÚFineGrainedFP8HfQuantizer)ÚFPQuantHfQuantizer)ÚGptqHfQuantizer)ÚHiggsHfQuantizer)ÚHqqHfQuantizer)ÚMxfp4HfQuantizer)ÚQuantoHfQuantizer)ÚQuarkHfQuantizer)ÚSpQRHfQuantizer)ÚTorchAoHfQuantizer)ÚVptqHfQuantizerÚawqÚbitsandbytes_4bitÚbitsandbytes_8bitÚgptqÚaqlmÚquantoÚquarkÚfp_quantÚeetqÚhiggsÚhqqzcompressed-tensorsÚ
fbgemm_fp8ÚtorchaoÚbitnetÚvptqÚspqr)Úfp8z
auto-roundÚmxfp4c                   ó6   — e Zd ZdZedefd„«       Zed„ «       Zy)ÚAutoQuantizationConfigz·
    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           	      óv  — |j                  d«      }|j                  dd«      s|j                  dd«      r*|j                  dd«      rdnd}t        j                  |z   }n|€t        d«      ‚|t        vr,t        d|› d	t        t        j                  «       «      › �«      ‚t        |   }|j                  |«      S )
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)ÚclsrG   rI   ÚsuffixÚ
target_clss        úq/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/transformers/quantizers/auto.pyrX   z AutoQuantizationConfig.from_dicty   sÑ   € à/×3Ñ3°NÓCˆà#×'Ñ'¨¸Ô>ÐBZ×B^ÑB^Ð_mÐotÔBuØ 8× <Ñ <¸^ÈUÔ S‘WÐY`ˆFÜ-×<Ñ<¸vÑE‰LØÐ!Üð \óð ð Ô?Ñ?ÜØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð:óð ô
 6°lÑCˆ
Ø×#Ñ#Ð$<Ó=Ð=ó    c                 óÈ   — t        j                  |fi |¤Ž}t        |dd «      €t        d|› d�«      ‚|j                  }| j                  |«      } |j                  di |¤Ž |S )NÚquantization_configz)Did not found a `quantization_config` in z2. Make sure that the model is correctly quantized.© )r   Úfrom_pretrainedÚgetattrrS   r_   rX   Úupdate)rY   Úpretrained_model_name_or_pathÚkwargsÚmodel_configrG   r_   s         r\   ra   z&AutoQuantizationConfig.from_pretrainedŽ   s„   € ä!×1Ñ1Ð2OÑZÐSYÑZˆÜ�<Ð!6¸Ó=ÐEÜØ;Ð<YÐ;Zð  [Mð  Nóð ð $0×#CÑ#CÐ Ø!Ÿm™mÐ,DÓEÐà"Ð×"Ñ"Ñ, VÒ,Ø"Ð"r]   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚdictrX   ra   r`   r]   r\   rF   rF   s   s6   „ ñð
 ð>°ò >ó ð>ð( ñ
#ó ñ
#r]   rF   c                   óz   — e Zd ZdZedeeef   fd„«       Zed„ «       Z	edeeef   de
e   fd„«       Zed„ «       Zy)	ÚAutoHfQuantizerz–
     The Auto-HF quantizer class that takes care of automatically instantiating to the correct
    `HfQuantizer` given the `QuantizationConfig`.
    r_   c           	      óD  — t        |t        «      rt        j                  |«      }|j                  }|t
        j                  k(  r|j                  r|dz  }n|dz  }|t        vr,t        d|› dt        t        j                  «       «      › �«      ‚t        |   } ||fi |¤ŽS )NrM   rL   rO   rP   )Ú
isinstancerl   rF   rX   rI   r   rR   rJ   rV   rS   rU   rW   )rY   r_   re   rI   r[   s        r\   Úfrom_configzAutoHfQuantizer.from_config¢   s´   € ô Ð)¬4Ô0Ü"8×"BÑ"BÐCVÓ"WÐà*×7Ñ7ˆð Ô-×<Ñ<Ò<Ø"×/Ò/Ø Ñ'‘à Ñ'�àÔ5Ñ5ÜØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð:óð ô
 ,¨LÑ9ˆ
ÙÐ-Ñ8°Ñ8Ð8r]   c                 óP   — t        j                  |fi |¤Ž}| j                  |«      S )N)rF   ra   rq   )rY   rd   re   r_   s       r\   ra   zAutoHfQuantizer.from_pretrained»   s*   € ä4×DÑDÐEbÑmÐflÑmÐØ�‰Ð2Ó3Ð3r]   Úquantization_config_from_argsc           	      ó   — |�d}nd}t        |t        «      r;t        |t        «      rt        j                  |«      }nt        j                  |«      }|�g|j
                  j                  |j
                  j                  k7  r:t        d|j
                  j                  › d|j
                  j                  › d�«      ‚t        |t        t        t        t        t        t        f«      rW|�U|j                  «       }|j                  «       D ]  \  }}t        |||«       Œ |dt!        |j#                  «       «      › d�z  }|dk7  r't        |t        «      st%        j&                  |«       |S t(        j+                  |«       |S )z„
        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.)rp   rl   r	   rX   rF   Ú	__class__rg   rS   r   r
   r   r   r   Úget_loading_attributesÚitemsÚsetattrrU   rW   ÚwarningsÚwarnÚloggerÚinfo)rY   r_   rs   Úwarning_msgÚloading_attr_dictÚattrÚvals          r\   Úmerge_quantization_configsz*AutoHfQuantizer.merge_quantization_configsÀ   s¥  € ð )Ð4ðyñ ð
 ˆKäÐ)¬4Ô0äÐ7¼Ô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óð ô Ø#ÜœY¬¼ÔJaÔcnÐoôð .Ð9à =× TÑ TÓ VÐØ.×4Ñ4Ó6ò 8‘	��cÜÐ+¨T°3Õ7ð8ð Ð?ÄÐEV×E[ÑE[ÓE]Ó@^Ð?_ð  `}ð  ~ñ  ~ˆKà˜"Ò¤ZÐ0CÄ[Ô%QÜ�M‰M˜+Ô&ð #Ð"ô �K‰K˜Ô$Ø"Ð"r]   c           	      ó^  — | j                  dd «      }| j                  dd«      s| j                  dd«      r*| j                  dd«      rdnd}t        j                  |z   }n|€t        d«      ‚|t        vr8t
        j                  d|› d	t        t        j                  «       «      › d
�«       yy)NrI   rJ   FrK   rL   rM   rN   rO   rP   z~. Hence, we will skip the quantization. To remove the warning, you can delete the quantization_config attribute in config.jsonT)
rQ   r   rR   rS   rT   r|   ÚwarningrU   rV   rW   )rG   rI   rZ   s      r\   Úsupports_quant_methodz%AutoHfQuantizer.supports_quant_methodõ   sÃ   € à/×3Ñ3°NÀDÓIˆØ#×'Ñ'¨¸Ô>ÐBZ×B^ÑB^Ð_mÐotÔBuØ 8× <Ñ <¸^ÈUÔ S‘WÐY`ˆFÜ-×<Ñ<¸vÑE‰LØÐ!Üð \óð ð Ô?Ñ?Ü�N‰NØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð 9iðiôð
 Ør]   N)rg   rh   ri   rj   rk   r   r   rl   rq   ra   r   r‚   Ústaticmethodr…   r`   r]   r\   rn   rn   œ   s�   „ ñð
 ð9¨eÐ4KÈTÐ4QÑ.Rò 9ó ð9ð0 ñ4ó ð4ð ð2#à" 4Ð)@Ð#@ÑAð2#ð (0Ð0GÑ'Hò2#ó ð2#ðh ñó ñr]   rn   Úmethodc                 ó   ‡ — ˆ fd„}|S )z-Register a custom quantization configuration.c                 ó~   •— ‰t         v rt        d‰› d�«      ‚t        | t        «      st	        d«      ‚| t         ‰<   | S )NzConfig 'ú' already registeredz*Config must extend QuantizationConfigMixin)rT   rS   Ú
issubclassr   Ú	TypeError)rY   r‡   s    €r\   Úregister_config_fnz8register_quantization_config.<locals>.register_config_fn  sH   ø€ ØÔ5Ñ5Ü˜x¨ xÐ/CÐDÓEÐEä˜#Ô6Ô7ÜÐHÓIÐIà36Ô(¨Ñ0Øˆ
r]   r`   )r‡   r�   s   ` r\   Úregister_quantization_configrŽ   
  s   ø€ ôð Ðr]   Únamec                 ó   ‡ — ˆ fd„}|S )zRegister a custom quantizer.c                 ó~   •— ‰t         v rt        d‰› d�«      ‚t        | t        «      st        d«      ‚| t         ‰<   | S )NzQuantizer 'rŠ   z!Quantizer must extend HfQuantizer)rV   rS   r‹   r   )rY   r�   s    €r\   Úregister_quantizer_fnz1register_quantizer.<locals>.register_quantizer_fn  sG   ø€ ØÔ)Ñ)Ü˜{¨4¨&Ð0DÐEÓFÐFä˜#œ{Ô+ÜÐ@ÓAÐAà'*Ô˜tÑ$Øˆ
r]   r`   )r�   r’   s   ` r\   Úregister_quantizerr“     s   ø€ ôð !Ð r]   c                 óL  — t        | d«      }|r!t        j                  | j                  «      sd}|s|�Q|r&t        j	                  | j                  |«      | _        n|| _        t        j                  | j                  |¬«      }	nd }	|	�—|	j                  |||||¬«       |	j                  |«      }|	j                  |«      }|	j                  | «      } |	j                  | «      } t        |	j                  dd«      s&|	j                  j                  }
t        |
d|
«      |d<   |	| ||fS )Nr_   F)Úpre_quantized)ÚdtypeÚfrom_tfÚ	from_flaxÚ
device_mapÚweights_onlyÚ
dequantizeÚvalueÚquant)Úhasattrrn   r…   r_   r‚   rq   Úvalidate_environmentÚupdate_dtypeÚupdate_device_mapÚupdate_tp_planÚupdate_ep_planrb   rI   )Úconfigr_   r–   r—   r˜   r™   rš   Ú
user_agentr•   Úhf_quantizerrI   s              r\   Úget_hf_quantizerr§   *  s8  € Ü˜FÐ$9Ó:€MÙœ_×BÑBÀ6×C]ÑC]Ô^ØˆáÐ+Ð7ÙÜ)8×)SÑ)SØ×*Ñ*Ð,?ó*ˆFÕ&ð *=ˆFÔ&ä&×2Ñ2Ø×&Ñ&Ø'ð 3ó 
‰ð
 ˆàÐØ×)Ñ)ØØØØ!Ø%ð 	*ô 	
ð ×)Ñ)¨%Ó0ˆØ!×3Ñ3°JÓ?ˆ
Ø×,Ñ,¨VÓ4ˆØ×,Ñ,¨VÓ4ˆô �|×7Ñ7¸ÀuÔMØ'×;Ñ;×HÑHˆLÜ")¨,¸ÀÓ"NˆJ�wÑØ˜ ¨
Ð2Ð2r]   )Srz   Útypingr   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   Ú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_fp_quantr)   Úquantizer_gptqr*   Úquantizer_higgsr+   Úquantizer_hqqr,   Úquantizer_mxfp4r-   Úquantizer_quantor.   Úquantizer_quarkr/   Úquantizer_spqrr0   Úquantizer_torchaor1   Úquantizer_vptqr2   rV   rT   Ú
get_loggerrg   r|   rF   rn   ÚstrrŽ   r“   r§   r`   r]   r\   ú<module>rÃ      s‰  ðó ß "å 7Ý ÷÷ ÷ ÷ ÷ õ õ. Ý +Ý 4Ý 'Ý /Ý 2Ý 2Ý FÝ +Ý 6Ý @Ý 2Ý +Ý -Ý )Ý -Ý /Ý -Ý +Ý 1Ý +ðØ	ˆ<ðàÐ+ðð Ð+ðð ˆOð	ð
 ˆOðð Ððð Ððð Ð"ðð ˆOðð Ððð 
ˆ>ðð Ð6ðð Ð&ðð Ð!ðð Ððð  ˆOð!ð" ˆOð#ð$ %Ø$Øò)Ð ð.$Ø	ˆ9ð$àÐ+ð$ð Ð+ð$ð ˆJð	$ð
 ˆJð$ð ˆJð$ð ˆlð$ð ˆ[ð$ð �ð$ð 
ˆ9ð$ð Ð1ð$ð �/ð$ð ˆ[ð$ð ˆ}ð$ð Ðð$ð  ˆJð!$ð" ˆJð#$ð$  Ø!Øò)$Ð  ð. 
ˆ×	Ñ	˜HÓ	%€÷&#ñ &#÷Rkñ kð\¨ó ð !˜Só !ó %3r]   