Ë
    Hêñi>8  ã                   ó"  — 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 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 ddlHmIZI ddlJmKZK ddlLmMZM i de%“d e)“d!e+“d"e9“d#e!“d$eC“d%eE“d&e5“d'e7“d(e/“d)e;“d*e=“d+e-“d,e1“d-eK“d.e'“d/eM“eIe3e#eAe?eGd0œ¥ZNi 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eeed0œ¥ZOeeeeeeeefZP ej¢                  eR«      ZS G d1„ d2«      ZT G d3„ d4«      ZUd5eVfd6„ZWd7eVfd8„ZXd9„ ZYy):é    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                   ó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)ÚclsrN   rP   ÚsuffixÚ
target_clss        ú^/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/transformers/quantizers/auto.pyr_   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ÚgetattrrZ   rf   r_   Úupdate)r`   Úpretrained_model_name_or_pathÚkwargsÚmodel_configrN   rf   s         rc   rh   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Ò,Ø"Ð"rd   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚdictr_   rh   rg   rd   rc   rM   rM   ‰   s6   „ ñð
 ð>°ò >ó ð>ð( ñ
#ó ñ
#rd   rM   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`.
    rf   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`.rT   rS   rV   rW   )Ú
isinstancers   rM   r_   rP   r   rY   r
   Ú	TypeErrorrQ   r]   rZ   r\   r^   )r`   rf   rl   rP   rb   s        rc   Ú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Ð8rd   c                 óP   — t        j                  |fi |¤Ž}| j                  |«      S )N)rM   rh   ry   )r`   rk   rl   rf   s       rc   rh   zAutoHfQuantizer.from_pretrainedÕ   s*   € ä4×DÑDÐEbÑmÐflÑmÐØ�‰Ð2Ó3Ð3rd   Ú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.)rw   rs   r   r_   rM   Ú	__class__rn   rZ   ÚLOADING_ATTRIBUTES_CONFIG_TYPESÚget_loading_attributesÚitemsÚsetattrr\   r^   r   r   r   ÚwarningsÚwarnÚloggerÚinfo)r`   rf   r{   Úwarning_msgÚloading_attr_dictÚattrÚvals          rc   Ú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˜Ô$Ø"Ð"rd   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)NrP   rQ   FrR   rS   rT   rU   rV   rW   z~. Hence, we will skip the quantization. To remove the warning, you can delete the quantization_config attribute in config.jsonT)
rX   r   rY   rZ   r[   r…   Úwarningr\   r]   r^   )rN   rP   ra   s      rc   Ú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ôð
 Ørd   )rn   ro   rp   rq   rr   r   rs   ry   rh   r‹   ÚstaticmethodrŽ   rg   rd   rc   ru   ru   ²   s‚   „ ñð
 ð9Ð.EÈÑ.Lò 9ó ð9ð8 ñ4ó ð4ð ð/#à!Ð$;Ñ;ð/#ð (?ÀÑ'Eò/#ó ð/#ðb ñó ñrd   ru   Ú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[   rZ   Ú
issubclassr   rx   )r`   r�   s    €rc   Ú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Øˆ
rd   rg   )r�   r•   s   ` rc   Úregister_quantization_configr–   !  s   ø€ ôð Ðrd   Ú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)r]   rZ   r”   r   rx   )r`   r—   s    €rc   Úregister_quantizer_fnz1register_quantizer.<locals>.register_quantizer_fn4  sG   ø€ ØÔ)Ñ)Ü˜{¨4¨&Ð0DÐEÓFÐFä˜#œ{Ô+ÜÐ?Ó@Ð@à'*Ô˜tÑ$Øˆ
rd   rg   )r—   rš   s   ` rc   Úregister_quantizerr›   1  s   ø€ ôð !Ð rd   c                 ó"  — t        | d«      }|r!t        j                  | j                  «      sd}|s|�Q|r&t        j	                  | j                  |«      | _        n|| _        t        j                  | j                  |¬«      }nd }|�ƒ|j                  ||¬«       |j                  |«      }|j                  | «      } |j                  | «      } t        |j                  dd«      s&|j                  j                  }t        |d|«      |d<   || |fS )Nrf   F)Úpre_quantized)Ú
device_mapÚweights_onlyÚ
dequantizeÚvalueÚquant)Úhasattrru   rŽ   rf   r‹   ry   Úvalidate_environmentÚupdate_device_mapÚupdate_tp_planÚupdate_ep_planri   rP   )Úconfigrf   rž   rŸ   Ú
user_agentr�   Úhf_quantizerrP   s           rc   Úget_hf_quantizerr«   A  s  € Ü˜FÐ$9Ó:€MÙœ_×BÑBÀ6×C]ÑC]Ô^ØˆáÐ+Ð7ÙÜ)8×)SÑ)SØ×*Ñ*Ð,?ó*ˆFÕ&ð *=ˆFÔ&ä&×2Ñ2Ø×&Ñ&Ø'ð 3ó 
‰ð
 ˆàÐØ×)Ñ)Ø!Ø%ð 	*ô 	
ð "×3Ñ3°JÓ?ˆ
Ø×,Ñ,¨VÓ4ˆØ×,Ñ,¨VÓ4ˆô �|×7Ñ7¸ÀuÔMØ'×;Ñ;×HÑHˆLÜ")¨,¸ÀÓ"NˆJ�wÑØ˜ Ð+Ð+rd   )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_loggerrn   r…   rM   ru   Ústrr–   r›   r«   rg   rd   rc   ú<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ó !ó !,rd   