Ë
    ÜÓ^jµ:  ã            
       ó:  — d dl 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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/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddlKmLZL ddlMmNZN ddlOmPZP i d e&“d!e*“d"e,“d#e<“d$e"“d%eF“d&eH“d'e6“d(e8“d)e0“d*e>“d+e@“d,e.“d-e2“d.eN“d/e(“d0eP“eLe4e4e$eDeBeJe:d1œ¥ZQi 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	“d0e“eeeeeeeed1œ¥ZReeeeeeeefZS ej¨                  eU«      ZV G d2„ d3«      ZW G d4„ d5«      ZXd6eYfd7„ZZd8eYfd9„Z[d:„ Z\y);é    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                   ó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)ÚclsrR   rT   ÚsuffixÚ
target_clss        úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/quantizers/auto.pyrc   z AutoQuantizationConfig.from_dict˜   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Úgetattrr^   rj   rc   Úupdate)rd   Úpretrained_model_name_or_pathÚkwargsÚmodel_configrR   rj   s         rg   rl   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Ò,Ø"Ð"rh   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚdictrc   rl   rk   rh   rg   rQ   rQ   ’   s6   „ ñð
 ð>°ò >ó ð>ð( ñ
#ó ñ
#rh   rQ   c                   ór   — e Zd ZdZedeez  fd„«       Zed„ «       Zedeez  dedz  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`.
    rj   c           	      óz  — t        |t        «      rt        j                  |«      }|j                  }|t
        j                  k(  r2t        |t        «      st        d«      ‚|j                  r|dz  }n|dz  }|t        vr,t        d|› dt        t        j                  «       «      › �«      ‚t        |   } ||fi |¤ŽS )NzZFound `quant_method=bitsandbytes` but `quantization_config` is not a `BitsAndBytesConfig`.rX   rW   rZ   r[   )Ú
isinstancerw   rQ   rc   rT   r   r]   r
   Ú	TypeErrorrU   ra   r^   r`   rb   )rd   rj   rp   rT   rf   s        rg   Úfrom_configzAutoHfQuantizer.from_configÁ   sÒ   € ô Ð)¬4Ô0Ü"8×"BÑ"BÐCVÓ"WÐà*×7Ñ7ˆð Ô-×<Ñ<Ò<ÜÐ1Ô3EÔFÜØpóð ð #×/Ò/Ø Ñ'‘à Ñ'�àÔ5Ñ5ÜØ1°,°ð @ÜÔ/×4Ñ4Ó6Ó7Ð8ð:óð ô
 ,¨LÑ9ˆ
ÙÐ-Ñ8°Ñ8Ð8rh   c                 óP   — t        j                  |fi |¤Ž}| j                  |«      S )N)rQ   rl   r}   )rd   ro   rp   rj   s       rg   rl   zAutoHfQuantizer.from_pretrainedÞ   s*   € ä4×DÑDÐEbÑmÐflÑmÐØ�‰Ð2Ó3Ð3rh   Úquantization_config_from_argsNc                 ó  — |�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        «      rgt        |t        «      rW|j                  «       }|j                  «       D ]  \  }}t        |||«       Œ |r |dt        |j                  «       «      › d�z  }|dk7  r2t        |t        t        t         f«      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.)r{   rw   r   rc   rQ   Ú	__class__rr   r^   ÚLOADING_ATTRIBUTES_CONFIG_TYPESÚget_loading_attributesÚitemsÚsetattrr`   rb   r   r   r   ÚwarningsÚwarnÚloggerÚinfo)rd   rj   r   Úwarning_msgÚloading_attr_dictÚattrÚvals          rg   Ú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óð ô
 Ð)Ô+JÔKÔPZØ)Ô+JôQ
ð !>× TÑ TÓ VÐØ.×4Ñ4Ó6ò 8‘	��cÜÐ+¨T°3Õ7ð8ñ !ØÐ!CÄDÐIZ×I_ÑI_ÓIaÓDbÐCcð  dAð   Bñ  B�à˜"Ò¤ZÐ0CÄkÔS^Ô`tÐEuÔ%vÜ�M‰M˜+Ô&ð #Ð"ô �K‰K˜Ô$Ø"Ð"rh   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)NrT   rU   FrV   rW   rX   rY   rZ   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‰   Úwarningr`   ra   rb   )rR   rT   re   s      rg   Ú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ôð
 Ørh   )rr   rs   rt   ru   rv   r   rw   r}   rl   r�   Ústaticmethodr’   rk   rh   rg   ry   ry   »   s‚   „ ñð
 ð9Ð.EÈÑ.Lò 9ó ð9ð8 ñ4ó ð4ð ð/#à!Ð$;Ñ;ð/#ð (?ÀÑ'Eò/#ó ð/#ðb ñó ñrh   ry   Ú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)r_   r^   Ú
issubclassr   r|   )rd   r”   s    €rg   Ú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Øˆ
rh   rk   )r”   r™   s   ` rg   Úregister_quantization_configrš   *  s   ø€ ôð Ðrh   Ú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)ra   r^   r˜   r    r|   )rd   r›   s    €rg   Úregister_quantizer_fnz1register_quantizer.<locals>.register_quantizer_fn=  sG   ø€ ØÔ)Ñ)Ü˜{¨4¨&Ð0DÐEÓFÐFä˜#œ{Ô+ÜÐ?Ó@Ð@à'*Ô˜tÑ$Øˆ
rh   rk   )r›   rž   s   ` rg   Úregister_quantizerrŸ   :  s   ø€ ôð !Ð rh   c                 óB  — t        | dd «      xs t        | j                  d¬«      dd «      }|d u}|rt        j                  |«      sd}|s|�G|rt        j	                  ||«      | _        n|| _        t        j                  | j
                  |¬«      }nd }|�ƒ|j                  ||¬«       |j                  |«      }|j                  | «      } |j                  | «      } t        |j
                  dd«      s&|j
                  j                  }t        |d|«      |d	<   || |fS )
Nrj   T)ÚdecoderF)Úpre_quantized)Ú
device_mapÚweights_onlyÚ
dequantizeÚvalueÚquant)rm   Úget_text_configry   r’   r�   rj   r}   Úvalidate_environmentÚupdate_device_mapÚupdate_tp_planÚupdate_ep_planrT   )	Úconfigrj   r£   r¤   Ú
user_agentÚquantization_params_from_configr¢   Úhf_quantizerrT   s	            rg   Úget_hf_quantizerr±   J  sE  € Ü&-¨fÐ6KÈTÓ&Rò 'ÔV]Ø×Ñ tÐÓ,Ð.CÀTóWÐ#ð 4¸4Ð?€MÙœ_×BÑBÐCbÔcØˆáÐ+Ð7ÙÜ)8×)SÑ)SØ/Ð1Dó*ˆFÕ&ð *=ˆFÔ&ä&×2Ñ2Ø×&Ñ&Ø'ð 3ó 
‰ð
 ˆàÐØ×)Ñ)Ø!Ø%ð 	*ô 	
ð "×3Ñ3°JÓ?ˆ
Ø×,Ñ,¨VÓ4ˆØ×,Ñ,¨VÓ4ˆô �|×7Ñ7¸ÀuÔMØ'×;Ñ;×HÑHˆLÜ")¨,¸ÀÓ"NˆJ�wÑØ˜ Ð+Ð+rh   )]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   ra   r_   rƒ   Ú
get_loggerrr   r‰   rQ   ry   Ústrrš   rŸ   r±   rk   rh   rg   ú<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ó !ó $,rh   