Ë
    T^(hž)  ã                   ó˜  — d dl Z d dlmZ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 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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? i de!“de%“de'“de1“de“de7“d e9“d!e+“d"e3“d#e5“d$e)“d%e-“d&e=“d'e#“d(e?“d)e;“d*e/“Z@i 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“ZA ej„                  eC«      ZD G d+„ d,«      ZE G d-„ d.«      ZFd/eGfd0„ZHd1eGfd2„ZIy)3é    N)ÚDictÚOptionalÚUnioné   )Ú
AutoConfig)Úlogging)Ú
AqlmConfigÚ	AwqConfigÚBitNetConfigÚBitsAndBytesConfigÚCompressedTensorsConfigÚ
EetqConfigÚFbgemmFp8ConfigÚFineGrainedFP8ConfigÚ
GPTQConfigÚHiggsConfigÚ	HqqConfigÚQuantizationConfigMixinÚQuantizationMethodÚQuantoConfigÚQuarkConfigÚ
SpQRConfigÚTorchAoConfigÚ
VptqConfigé   )ÚHfQuantizer)ÚAqlmHfQuantizer)Ú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Úfp8c                   ó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           	      ó”  — |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        j                  «       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ÚkeysÚlistÚAUTO_QUANTIZER_MAPPINGÚ	from_dict)Úclsr@   rB   ÚsuffixÚ
target_clss        úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/quantizers/auto.pyrQ   z AutoQuantizationConfig.from_dictm   sÜ   € à/×3Ñ3°NÀDÓIˆà#×'Ñ'¨¸Ô>ÐBZ×B^ÑB^Ð_mÐotÔBuØ 8× <Ñ <¸^ÈUÔ S‘WÐY`ˆFÜ-×<Ñ<¸vÑE‰LØÐ!Üð \óð ð Ô?×DÑDÓFÑFÜØ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ÚgetattrrL   rX   rQ   Úupdate)rR   Úpretrained_model_name_or_pathÚkwargsÚmodel_configr@   rX   s         rU   rZ   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Ò,Ø"Ð"rV   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr   rQ   rZ   rY   rV   rU   r?   r?   g   s6   „ ñð
 ð>°ò >ó ð>ð( ñ
#ó ñ
#rV   r?   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`.
    rX   c           	      ó`  — t        |t        «      rt        j                  |«      }|j                  }|t
        j                  k(  r|j                  r|dz  }n|dz  }|t        j                  «       vr,t        d|› dt        t        j                  «       «      › �«      ‚t        |   } ||fi |¤ŽS )NrF   rE   rH   rI   )Ú
isinstanceÚdictr?   rQ   rB   r   rK   rC   rP   rN   rL   rO   )rR   rX   r^   rB   rT   s        rU   Úfrom_configzAutoHfQuantizer.from_config–   s½   € ô Ð)¬4Ô0Ü"8×"BÑ"BÐCVÓ"WÐà*×7Ñ7ˆð Ô-×<Ñ<Ò<Ø"×/Ò/Ø Ñ'‘à Ñ'�àÔ5×:Ñ:Ó<Ñ<ÜØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð:óð ô
 ,¨LÑ9ˆ
ÙÐ-Ñ8°Ñ8Ð8rV   c                 óP   — t        j                  |fi |¤Ž}| j                  |«      S )N)r?   rZ   rj   )rR   r]   r^   rX   s       rU   rZ   zAutoHfQuantizer.from_pretrained¯   s*   € ä4×DÑDÐEbÑmÐflÑmÐØ�‰Ð2Ó3Ð3rV   Úquantization_config_from_argsc                 ó€  — |�d}nd}t        |t        «      rt        j                  |«      }t        |t        t
        t        t        f«      rW|�U|j                  «       }|j                  «       D ]  \  }}t        |||«       Œ |dt        |j                  «       «      › d�z  }|dk7  r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"However, loading attributes (e.g. z]) will be overwritten with the one you passed to `from_pretrained`. The rest will be ignored.)rh   ri   r?   rQ   r   r
   r   r   Úget_loading_attributesÚitemsÚsetattrrO   rN   ÚwarningsÚwarn)rR   rX   rl   Úwarning_msgÚloading_attr_dictÚattrÚvals          rU   Úmerge_quantization_configsz*AutoHfQuantizer.merge_quantization_configs´   sÛ   € ð )Ð4ðyñ ð
 ˆKäÐ)¬4Ô0Ü"8×"BÑ"BÐCVÓ"WÐô Ð*¬Z¼ÄOÔUlÐ,mÔnØ-Ð9ð !>× TÑ TÓ VÐØ.×4Ñ4Ó6ò 8‘	��cÜÐ+¨T°3Õ7ð8ð Ð?ÄÐEV×E[ÑE[ÓE]Ó@^Ð?_ð  `}ð  ~ñ  ~ˆKà˜"ÒÜ�M‰M˜+Ô&à"Ð"rV   c           	      óz  — | 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        j                  «       vr8t        j                  d|› d	t        t        j                  «       «      › d
�«       yy)NrB   rC   FrD   rE   rF   rG   rH   rI   z~. Hence, we will skip the quantization. To remove the warning, you can delete the quantization_config attribute in config.jsonT)
rJ   r   rK   rL   rM   rN   ÚloggerÚwarningrO   rP   )r@   rB   rS   s      rU   Ú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ØÐ!Üð \óð ð Ô?×DÑDÓFÑFÜ�N‰NØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð 9iðiôð
 ØrV   N)r`   ra   rb   rc   rd   r   r   r   rj   rZ   ri   r   rx   Ústaticmethodr|   rY   rV   rU   rf   rf   �   s�   „ ñð
 ð9¨eÐ4KÈTÐ4QÑ.Rò 9ó ð9ð0 ñ4ó ð4ð ð!#à" 4Ð)@Ð#@ÑAð!#ð (0Ð0GÑ'Hò!#ó ð!#ðF ñó ñrV   rf   Ú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)rM   rL   Ú
issubclassr   )rR   r~   s    €rU   Úregister_config_fnz8register_quantization_config.<locals>.register_config_fnð   sH   ø€ ØÔ5Ñ5Ü˜x¨ xÐ/CÐDÓEÐEä˜#Ô6Ô7ÜÐIÓJÐJà36Ô(¨Ñ0Øˆ
rV   rY   )r~   rƒ   s   ` rU   Úregister_quantization_configr„   í   s   ø€ ôð ÐrV   Ú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)rP   rL   r‚   r   )rR   r…   s    €rU   Úregister_quantizer_fnz1register_quantizer.<locals>.register_quantizer_fn   sG   ø€ ØÔ)Ñ)Ü˜{¨4¨&Ð0DÐEÓFÐFä˜#œ{Ô+ÜÐ@ÓAÐAà'*Ô˜tÑ$Øˆ
rV   rY   )r…   rˆ   s   ` rU   Úregister_quantizerr‰   ý   s   ø€ ôð !Ð rV   )Jrr   Ú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   Úbaser   Úquantizer_aqlmr   Ú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-   rP   rM   Ú
get_loggerr`   rz   r?   rf   Ústrr„   r‰   rY   rV   rU   ú<module>r¢      sY  ðó ß (Ñ (å 7Ý ÷÷ ÷ ÷ ÷ õ( Ý +Ý 'Ý /Ý 2Ý 2Ý FÝ +Ý 6Ý @Ý +Ý -Ý )Ý /Ý -Ý +Ý 1Ý +ðØ	ˆ<ðàÐ+ðð Ð+ðð ˆOð	ð
 ˆOðð Ððð Ððð ˆOðð Ððð 
ˆ>ðð Ð6ðð Ð&ðð Ð!ðð Ððð ˆOðð  ˆOð!ð" 
Ð$ð#Ð ð($Ø	ˆ9ð$àÐ+ð$ð Ð+ð$ð ˆJð	$ð
 ˆJð$ð ˆJð$ð ˆlð$ð ˆ[ð$ð 
ˆ9ð$ð Ð1ð$ð �/ð$ð ˆ[ð$ð ˆ}ð$ð ˆlð$ð ˆJð$ð  ˆJð!$ð" 
Ðð#$Ð  ð( 
ˆ×	Ñ	˜HÓ	%€÷&#ñ &#÷RZñ Zðz¨ó ð !˜Sô !rV   