§
    Þ˜ºh·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jJ        eK¦  «        ZL G d/„ d0¦  «        ZM G d1„ d2¦  «        ZNd3eOfd4„ZPd5eOfd6„ZQd7„ ZRdS )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                   óD   — e Zd ZdZedefd„¦   «         Zed„ ¦   «         ZdS )Ú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           	      óÂ  — |                      d¦  «        }|                      dd¦  «        s|                      dd¦  «        r*|                      dd¦  «        rdnd}t          j        |z   }n|€t          d¦  «        ‚|t          vr9t          d|› d	t          t                               ¦   «         ¦  «        › �¦  «        ‚t          |         }|                     |¦  «        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        úd/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/transformers/quantizers/auto.pyrX   z AutoQuantizationConfig.from_dicty   s  € à/×3Ò3°NÑCÔCˆà#×'Ò'¨¸Ñ>Ô>ð 	ÐBZ×B^ÒB^Ð_mÐotÑBuÔBuð 	Ø 8× <Ò <¸^ÈUÑ SÔ SÐ`�W�WÐY`ˆFÝ-Ô<¸vÑEˆLˆLØÐ!Ýð \ñô ð ð Õ?Ð?Ð?Ýð:°,ð :ð :ÝÕ/×4Ò4Ñ6Ô6Ñ7Ô7ð:ð :ñô ð õ
 6°lÔCˆ
Ø×#Ò#Ð$<Ñ=Ô=Ð=ó    c                 óÄ   — t          j        |fi |¤Ž}t          |dd ¦  «        €t          d|› d�¦  «        ‚|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Ð2OÐZÐZÐSYÐZÐZˆÝ�<Ð!6¸Ñ=Ô=ÐEÝð NÐ<Yð  Nð  Nð  Nñô ð ð $0Ô#CÐ Ø!ŸmšmÐ,DÑEÔEÐà"ÐÔ"Ð,Ð, VÐ,Ð,Ð,Ø"Ð"r]   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚdictrX   ra   r`   r]   r\   rF   rF   s   s`   € € € € € ðð ð
 ð>°ð >ð >ð >ñ „[ð>ð( ð
#ð 
#ñ „[ð
#ð 
#ð 
#r]   rF   c                   ó¦   — 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dS )	ÚAutoHfQuantizerz–
     The Auto-HF quantizer class that takes care of automatically instantiating to the correct
    `HfQuantizer` given the `QuantizationConfig`.
    r_   c           	      ób  — t          |t          ¦  «        rt                               |¦  «        }|j        }|t
          j        k    r|j        r|dz  }n|dz  }|t          vr9t          d|› dt          t                               ¦   «         ¦  «        › �¦  «        ‚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Ô0ð 	XÝ"8×"BÒ"BÐCVÑ"WÔ"WÐà*Ô7ˆð Õ-Ô<Ò<Ð<Ø"Ô/ð (Ø Ñ'��à Ñ'�àÕ5Ð5Ð5Ýð:°,ð :ð :ÝÕ/×4Ò4Ñ6Ô6Ñ7Ô7ð:ð :ñô ð õ
 ,¨LÔ9ˆ
ØˆzÐ-Ð8Ð8°Ð8Ð8Ð8r]   c                 óP   — t          j        |fi |¤Ž}|                      |¦  «        S )N)rF   ra   rq   )rY   rd   re   r_   s       r\   ra   zAutoHfQuantizer.from_pretrained»   s0   € å4ÔDÐEbÐmÐmÐflÐmÐmÐØ�ŠÐ2Ñ3Ô3Ð3r]   Úquantization_config_from_argsc           	      ó   — |�d}nd}t          |t          ¦  «        rDt          |t          ¦  «        rt          j        |¦  «        }nt                               |¦  «        }|�D|j        j        |j        j        k    r*t          d|j        j        › d|j        j        › d�¦  «        ‚t          |t          t          t          t          t          t          f¦  «        ri|�g|                     ¦   «         }|                     ¦   «         D ]\  }}t          |||¦  «         Œ|dt!          |                     ¦   «         ¦  «        › d�z  }|dk    r*t          |t          ¦  «        st%          j        |¦  «         nt(                               |¦  «         |S )	z„
        handles situations where both quantization_config from args and quantization_config from model config are present.
        NzÑ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ð
 ˆKåÐ)­4Ñ0Ô0ð 	\åÐ7½ÑIÔIð \Ý&5Ô&?Ð@SÑ&TÔ&TÐ#Ð#å&<×&FÒ&FÐGZÑ&[Ô&[Ð#ð *Ð5Ø#Ô-Ô6Ð:WÔ:aÔ:jÒjÐjåðFÐ/BÔ/LÔ/Uð Fð Fð  oLô  oVô  o_ð Fð Fð Fñô ð õ Ø#Ý�Y­½ÕJaÕcnÐoñô ð	~ð
 .Ð9à =× TÒ TÑ VÔ VÐØ.×4Ò4Ñ6Ô6ð 8ð 8‘	��cÝÐ+¨T°3Ñ7Ô7Ð7Ð7àð  ~ÅÐEV×E[ÒE[ÑE]ÔE]Ñ@^Ô@^ð  ~ð  ~ð  ~ñ  ~ˆKà˜"ÒÐ¥ZÐ0CÅ[Ñ%QÔ%QÐÝŒM˜+Ñ&Ô&Ð&Ð&õ �KŠK˜Ñ$Ô$Ð$Ø"Ð"r]   c           	      ó   — |                       dd ¦  «        }|                       dd¦  «        s|                       dd¦  «        r*|                       dd¦  «        rdnd}t          j        |z   }n|€t          d¦  «        ‚|t          vrGt
                               d|› d	t          t           	                    ¦   «         ¦  «        › d
�¦  «         dS dS )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ÔIˆØ#×'Ò'¨¸Ñ>Ô>ð 	ÐBZ×B^ÒB^Ð_mÐotÑBuÔBuð 	Ø 8× <Ò <¸^ÈUÑ SÔ SÐ`�W�WÐY`ˆFÝ-Ô<¸vÑEˆLˆLØÐ!Ýð \ñô ð ð Õ?Ð?Ð?Ý�NŠNði°,ð ið iÝÕ/×4Ò4Ñ6Ô6Ñ7Ô7ðið ið iñô ð ð
 �5Øˆtr]   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ð 9ñ „[ð9ð0 ð4ð 4ñ „[ð4ð ð2#à" 4Ð)@Ð#@ÔAð2#ð (0Ð0GÔ'Hð2#ð 2#ð 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  s\   ø€ ØÕ5Ð5Ð5ÝÐD¨ÐDÐDÐDÑEÔEÐEå˜#Õ6Ñ7Ô7ð 	JÝÐHÑIÔ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  s[   ø€ ØÕ)Ð)Ð)ÝÐE¨4ÐEÐEÐEÑFÔFÐFå˜#�{Ñ+Ô+ð 	BÝÐ@ÑAÔAÐAà'*Õ˜tÑ$Øˆ
r]   r`   )r�   r’   s   ` r\   Úregister_quantizerr“     s$   ø€ ðð ð ð ð ð !Ð r]   c                 óD  — t          | d¦  «        }|r!t                               | j        ¦  «        sd}|s|�Q|r&t                               | j        |¦  «        | _        n|| _        t                               | j        |¬¦  «        }	nd }	|	��|	                     |||||¬¦  «         |	                     |¦  «        }|	                     |¦  «        }|	 	                    | ¦  «        } 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_planrb   rI   )Úconfigr_   r–   r—   r˜   r™   rš   Ú
user_agentr•   Úhf_quantizerrI   s              r\   Úget_hf_quantizerr¦   *  s^  € Ý˜FÐ$9Ñ:Ô:€MØð �_×BÒBÀ6ÔC]Ñ^Ô^ð Øˆàð Ð+Ð7Øð 	=Ý)8×)SÒ)SØÔ*Ð,?ñ*ô *ˆFÔ&Ð&ð *=ˆFÔ&å&×2Ò2ØÔ&Ø'ð 3ñ 
ô 
ˆˆð
 ˆàÐØ×)Ò)ØØØØ!Ø%ð 	*ñ 	
ô 	
ð 	
ð ×)Ò)¨%Ñ0Ô0ˆØ!×3Ò3°JÑ?Ô?ˆ
Ø×,Ò,¨VÑ4Ô4ˆõ �|Ô7¸ÀuÑMÔMð 	OØ'Ô;ÔHˆLÝ")¨,¸ÀÑ"NÔ"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Â      sM  ðð €€€Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð. Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø /Ð /Ð /Ð /Ð /Ð /Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø FÐ FÐ FÐ FÐ FÐ FØ +Ð +Ð +Ð +Ð +Ð +Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø @Ð @Ð @Ð @Ð @Ð @Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø +Ð +Ð +Ð +Ð +Ð +Ø -Ð -Ð -Ð -Ð -Ð -Ø )Ð )Ð )Ð )Ð )Ð )Ø -Ð -Ð -Ð -Ð -Ð -Ø /Ð /Ð /Ð /Ð /Ð /Ø -Ð -Ð -Ð -Ð -Ð -Ø +Ð +Ð +Ð +Ð +Ð +Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø +Ð +Ð +Ð +Ð +Ð +ðØ	ˆ<ðàÐ+ðð Ð+ðð ˆOð	ð
 ˆOðð Ððð Ððð Ð"ðð ˆOðð Ððð 
ˆ>ðð Ð6ðð Ð&ðð Ð!ðð Ððð  ˆOð!ð" ˆOð#ð$ %Ø$Øð)ð ð Ð ð.$Ø	ˆ9ð$àÐ+ð$ð Ð+ð$ð ˆJð	$ð
 ˆJð$ð ˆJð$ð ˆlð$ð ˆ[ð$ð �ð$ð 
ˆ9ð$ð Ð1ð$ð �/ð$ð ˆ[ð$ð ˆ}ð$ð Ðð$ð  ˆJð!$ð" ˆJð#$ð$  Ø!Øð)$ð $ð $Ð  ð. 
ˆÔ	˜HÑ	%Ô	%€ð&#ð &#ð &#ð &#ð &#ñ &#ô &#ð &#ðRkð kð kð kð kñ kô kð kð\¨ð ð ð ð ð !˜Sð !ð !ð !ð !ð $3ð $3ð $3ð $3ð $3r]   