+
    QV-j—  ã                   óÞ   € ^ RI Ht ^ RIHt ^ RIHt ^RIHt ]'       d   ^RIH	t	 ^RI
HtHtHtHt ^RIHtHt ]! 4       '       d   ^ RIt]P&                  ! ]4      tR	tR
t ! R R]4      tR# )é    )Úmetadata)ÚTYPE_CHECKING)Úversion)ÚHfQuantizer)ÚPreTrainedModel)Úis_gptqmodel_availableÚis_optimum_availableÚis_torch_availableÚlogging)Ú
GPTQConfigÚQuantizationConfigMixinNz1.4.3z1.24.0c                   ó¶   a a€ ] tR t^'t oRtRtV3R lV 3R lltR tV3R lR ltR t	V3R	 lR
 lt
V3R lR lt]V3R lR l4       tR tV3R ltRtVtV ;t# )ÚGptqHfQuantizerzî
Quantizer of the GPTQ method - for GPTQ the quantizer support calibration of the model through
the GPT-QModel package (Python import name `gptqmodel`). Quantization is done under the hood for users if they
load a non-prequantized model.
Fc                ó    <€ V ^8„  d   QhRS[ /# )é   Úquantization_config)r   )ÚformatÚ__classdict__s   "€Úw/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/quantizers/quantizer_gptq.pyÚ__annotate__ÚGptqHfQuantizer.__annotate__1   s   ø€ ÷ eñ eÑ,Cñ eó    c                óÈ   <€ \         SV `  ! V3/ VB  \        4       '       g   \        R 4      h^ RIHp VP                  V P                  P                  4       4      V n	        R# )úGLoading a GPTQ quantized model requires optimum (`pip install optimum`))ÚGPTQQuantizerN)
ÚsuperÚ__init__r	   ÚImportErrorÚoptimum.gptqr   Ú	from_dictr   Úto_dict_optimumÚoptimum_quantizer)Úselfr   Úkwargsr   Ú	__class__s   &&, €r   r   ÚGptqHfQuantizer.__init__1   sP   ø€ Ü‰ÒÐ,Ñ7°Ò7ä#×%Ò%ÜÐgÓhÐhÝ.à!.×!8Ñ!8¸×9QÑ9Q×9aÑ9aÓ9cÓ!dˆÖr   c                óf  € \        4       '       g   \        R 4      h\        4       pV'       g0   \        P                  P                  4       '       g   \        R4      h\        4       '       g   \        R4      h\        4       '       dª   \        P                  ! \        P                  ! R4      4      \        P                  ! \        4      8  gH   \        P                  ! \        P                  ! R4      4      \        P                  ! \        4      8  d   \        R\         R\         24      hR# R# )r   z2GPU is required to quantize or run quantize model.zTLoading a GPTQ quantized model requires gptqmodel (`pip install gptqmodel`) library.Ú	gptqmodelÚoptimumz#The gptqmodel version should be >= z, optimum version should >= N)r	   r   r   ÚtorchÚcudaÚis_availableÚRuntimeErrorr   Úparser   ÚMIN_GPTQ_VERSIONÚMIN_OPTIMUM_VERSION)r#   Úargsr$   Úgptq_supports_cpus   &*, r   Úvalidate_environmentÚ$GptqHfQuantizer.validate_environment:   sØ   € Ü#×%Ò%ÜÐgÓhÐhä2Ó4Ðß ¬¯©×)@Ñ)@×)BÒ)BÜÐSÓTÐTÜ'×)Ò)ÜÐtÓuÐuÜ#×%Ò%Ü�MŠMœ(×*Ò*¨;Ó7Ó8¼7¿=º=ÔIYÓ;ZÔZÜ�}Š}œX×-Ò-¨iÓ8Ó9¼G¿MºMÔJ]Ó<^Ô^äØ5Ô6FÐ5GÐGcÔdwÐcxÐyóð ñ _ñ &r   c                ó"   <€ V ^8„  d   QhRRRR/# )r   Údtypeztorch.dtypeÚreturn© )r   r   s   "€r   r   r   K   s   ø€ ÷ ñ  -ð °Mñ r   c                óZ   € V\         P                  8w  d   \        P                  R 4       V# )zLWe suggest you to set `dtype=torch.float16` for better efficiency with GPTQ.)r*   Úfloat16ÚloggerÚinfo)r#   r6   s   &&r   Úupdate_dtypeÚGptqHfQuantizer.update_dtypeK   s    € Ø”E—M‘MÔ!Ü�K‰KÐfÔgØˆr   c                ó>   € Vf   R\         P                  ! R4      /pV# )NÚ Úcpu)r*   Údevice)r#   Ú
device_maps   &&r   Úupdate_device_mapÚ!GptqHfQuantizer.update_device_mapP   s!   € ØÒØœeŸlšl¨5Ó1Ð2ˆJØÐr   c                ó   <€ V ^8„  d   QhRR/# ©r   Úmodelr   r8   )r   r   s   "€r   r   r   U   s   ø€ ÷ 	Nñ 	NÐ:Kñ 	Nr   c                ó|  € VP                   P                  R 8w  d   \        R4      hV P                  '       d„   \        P
                  ! \        P                  ! R4      4      \        P
                  ! \        4      8  d   V P                  P                  V4      pR# V P                  P                  ! V3/ VB pR# R# )Ú	input_idsz%We can only quantize pure text model.r)   N)
r%   Úmain_input_namer-   Úpre_quantizedr   r.   r   r0   r"   Úconvert_model©r#   rH   r$   s   &&,r   Ú$_process_model_before_weight_loadingÚ4GptqHfQuantizer._process_model_before_weight_loadingU   sˆ   € Ø�?‰?×*Ñ*¨kÔ9ÜÐFÓGÐGà××Ðä�}Š}œX×-Ò-¨iÓ8Ó9¼G¿MºMÔJ]Ó<^Ô^Ø×.Ñ.×<Ñ<¸UÓC’à×.Ñ.×<Ò<¸UÑMÀfÑM’ñ r   c                ó   <€ V ^8„  d   QhRR/# rG   r8   )r   r   s   "€r   r   r   `   s   ø€ ÷ fñ fÐ9Jñ fr   c                ó¢  € V P                   '       d   V P                  P                  V4      pR # V P                  P                  f   VP
                  V P                  n        V P                  P                  WP                  P                  4       \        P                  ! V P                  P                  4       4      VP                  n        R # )N)rL   r"   Úpost_init_modelr   Ú	tokenizerÚname_or_pathÚquantize_modelr   r    Úto_dictÚconfigrN   s   &&,r   Ú#_process_model_after_weight_loadingÚ3GptqHfQuantizer._process_model_after_weight_loading`   s�   € Ø××ÐØ×*Ñ*×:Ñ:¸5ÓAŠEà×'Ñ'×1Ñ1Ò9Ø5:×5GÑ5G�×(Ñ(Ô2à×"Ñ"×1Ñ1°%×9QÑ9Q×9[Ñ9[Ô\Ü/9×/CÒ/CÀD×DZÑDZ×DbÑDbÓDdÓ/eˆE�L‰LÖ,r   c                ó    <€ V ^8„  d   QhRS[ /# )r   r7   )Úbool)r   r   s   "€r   r   r   k   s   ø€ ÷ ñ ™dñ r   c                ó   € R # ©Tr8   ©r#   s   &r   Úis_trainableÚGptqHfQuantizer.is_trainablej   s   € ár   c                ó   € R # r^   r8   r_   s   &r   Úis_serializableÚGptqHfQuantizer.is_serializablen   s   € Ùr   c                ó$   <€ V ^8„  d   Qh/ R;R&   # )r   r   r   r8   )r   r   s   "€r   r   r   '   s   ø‡ ‚ ð &Ñ%ò r   )r"   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úrequires_calibrationr   r3   r=   rD   rO   rY   Úpropertyr`   rc   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r%   r   s   @@r   r   r   '   sk   ù‡ € ñð !Ð÷eó eò÷"ð ò
÷
	Nð 	N÷fð fð ÷ó ðò÷O … r   r   )Ú	importlibr   Útypingr   Ú	packagingr   Úbaser   Úmodeling_utilsr   Úutilsr   r	   r
   r   Úutils.quantization_configr   r   r*   Ú
get_loggerrf   r;   r/   r0   r   r8   r   r   Ú<module>ry      s^   ðõ Ý  å å ÷ Ý0ç ]Ó ]ß Kñ ×ÒÛà	×	Ò	˜HÓ	%€ð Ð ØÐ ôH�kö Hr   