+
    "Ý³jÙ*  ã                  ó0  € ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIt^RIHtH	t	H
t
Ht ^RIHt ^RIHt ^RIHt ^RIHtHtHtHtHtHtHtHtHt ^R	IHtHtHtH t H!t!H"t"H#t# ^R
I$H%t% ^RI&H't'H(t( ^RI)H*t*H+t+ ^RI,H-t- ^RI.H/t/ ](! 4       t0 ! R R]4      t1R.t2R# )é    )ÚannotationsN)ÚOptional)ÚDTYPE_SIZE_COLUMNÚExecutionConfigÚMODULE_FEATURE_COLUMNÚLoopProcessor)ÚNamedModule)Ú
BaseQModel)ÚCPU)	ÚPROCESS_LOG_FWD_TIMEÚPROCESS_LOG_LAYERÚPROCESS_LOG_MODULEÚPROCESS_LOG_NAMEÚPROCESS_LOG_TIMEÚPROCESS_USED_MEMORYÚQUANT_LOG_DAMPÚQUANT_LOG_LOSSÚQUANT_LOG_NSAMPLES)ÚBitsAndBytesConfigÚ	FP8ConfigÚ
GGUFConfigÚMETHODÚ	RTNConfigÚ#clone_weight_only_config_for_moduleÚresolve_quant_format)ÚRTN)Úlog_time_blockÚsetup_logger)Úcreate_quant_moduleÚpack_module)ÚTorchQuantEmbeddings)Úparent_module_lockc                  ó¦   a € ] tR t^.tRtR V 3R lltR R lt]R R l4       tR R	 lt	R
R/R R llt
RR/R R lltR V 3R lltR R ltRtV ;t# )ÚWeightOnlyProcessorzQProcess weight-only modules without entering activation-based quantization flows.c               ó   € V ^8„  d   QhRR/# )é   Úqcfgú7RTNConfig | GGUFConfig | FP8Config | BitsAndBytesConfig© )Úformats   "Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/looper/weight_only_processor.pyÚ__annotate__Ú WeightOnlyProcessor.__annotate__1   s   € ÷ %ñ %ð Fñ%ó    c                ó‚   <€ \         SV `  VVRRRRR^\        RRR7      R7	       \        P                  ! 4       V n        R# )zHInitializes a weight-only processor for RTN, GGUF, FP8, or BitsAndBytes.NF)Úrequire_fwdÚfwd_replay_after_process)	Ú	tokenizerr'   ÚcalibrationÚprepare_dataset_funcÚcalibration_concat_sizeÚcalibration_sortÚcalibration_concat_separatorÚ
batch_sizeÚexecution_config)ÚsuperÚ__init__r   Ú	threadingÚLockÚlock)Úselfr2   r'   Ú	__class__s   &&&€r+   r;   ÚWeightOnlyProcessor.__init__1   sM   ø€ ô 	‰ÑØØØØ!%Ø$(Ø!Ø)-ØÜ,Ø!Ø).ôð 	ô 	
ô —N’NÓ$ˆŽ	r.   c               ó    € V ^8„  d   QhRRRR/# )r&   Úmoduler	   ÚreturnÚboolr)   )r*   s   "r+   r,   r-   H   s   € ÷ Kñ K ð K°ñ Kr.   c                óR   € V P                   P                  VP                  R7      RJ # )z:Report whether dynamic configuration excludes this module.)Ú
layer_nameF)r'   Údynamic_getÚ	full_name)r?   rC   s   &&r+   Ú
is_skippedÚWeightOnlyProcessor.is_skippedH   s'   € ð �y‰y×$Ñ$°×0@Ñ0@Ð$ÓAÀUÐJÐJr.   c               ó    € V ^8„  d   QhRRRR/# )r&   r'   r(   rD   rE   r)   )r*   s   "r+   r,   r-   N   s    € ÷ Mñ MÐ Wð MÐ\`ñ Mr.   c                óz   € V P                   \        P                  \        P                  \        P                  09   # )zJReturns whether the method packs directly from the original dense weights.)Úmethodr   ÚGGUFÚFP8ÚBITSANDBYTES)r'   s   &r+   Ú_uses_direct_packÚ%WeightOnlyProcessor._uses_direct_packM   s(   € ð �{‰{œvŸ{™{¬F¯J©J¼×8KÑ8KÐLÑLÐLr.   c               ó$   € V ^8„  d   QhRRRRRR/# )r&   rC   r	   Úavg_lossÚstrrD   ÚNoner)   )r*   s   "r+   r,   r-   S   s!   € ÷ ñ ¨+ð Àð Èñ r.   c                óZ  € V P                   ;_uu_ 4        \        V P                  4       F`  pVP                  \        4      VP
                  8X  g   K)  VP                  \        4      VP                  8X  g   KO  W#\        &    RRR4       R# 	  RRR4       R#   + '       g   i     R# ; i)zEBackfills the logged loss field after late dequant-error measurement.N)	r>   ÚreversedÚlogÚgetr   Úlayer_indexr   Únamer   )r?   rC   rU   Úentrys   &&& r+   Ú_update_logged_lossÚ'WeightOnlyProcessor._update_logged_lossS   sl   € ð �Y�Y‹YÜ! $§(¡(Ö+�Ø—9‘9Ô.Ó/°6×3EÑ3EÖEÈ%Ï)É)ÔTfÓJgÐkq×kvÑkvÖJvØ,4œ.Ñ)Ø÷	 ‰YÙ+÷ �Y�YŠYús   •:BÁ!BÁ:	BÂBÂB*	ÚdeviceNc               ó$   € V ^8„  d   QhRRRRRR/# )r&   rC   r	   ra   zOptional[torch.device]rD   úAOptional[RTNConfig | GGUFConfig | FP8Config | BitsAndBytesConfig]r)   )r*   s   "r+   r,   r-   \   s)   € ÷ 6ñ 6àð6ð 'ð	6ð
 
Kñ6r.   c               ó2  € \        V P                  VP                  4      pVf   R# Ve   W#n        V P	                  V4      '       dP   \
        P
                  ! 4       p\
        P
                  ! 4       V,
          pVP                  P                   R2pRp^ pM;\        WR7      p	V	P                  4       w  r«rÍrVrxVP                  RVRVRV/4       ???\        V P                  4       \        VP                  \        VP                  \         V P#                  V4      \$        V P'                  V4      \(        \+        V\,        4      '       d   TMVR \.        V \0        VR	 \2        VR
 \4        V P7                  4       \8        V P;                  4       RR/pV P<                  ;_uu_ 4        V P>                  PA                  V4       RRR4       V PC                  V4       V P	                  V4      '       g   X
VPD                  n#        V#   + '       g   i     LK; i)zAClones per-module config, quantizes weights, and logs the result.Nz	: pendingg        )rC   r'   Úq_scalesÚq_zerosÚq_g_idxz.10fz.5fz.3fÚ	lifecycleÚweight_only)$r   r'   rI   ra   rR   ÚtimerN   Úvaluer   ÚquantizeÚstream_state_payload_to_cpur   r]   r   r\   r   r   Úmodule_feature_summaryr   Úmodule_dtype_size_summaryr   Ú
isinstancerV   r   r   r   r   Úformatted_fwd_timer   Údevice_memory_reportr>   rZ   ÚappendÚlog_new_rowÚweightÚdata)r?   rC   ra   Ú
qcfg_cloneÚ
start_timeÚdurationrU   Údamp_percentÚnsamplesÚtaskÚwqre   rf   rg   Ústats   &&$            r+   Úquantize_moduleÚ#WeightOnlyProcessor.quantize_module\   s¾  € ô 9¸¿¹ÀF×DTÑDTÓUˆ
ØÒÙØÒØ &Ôà×!Ñ! *×-Ò-ÜŸš›ˆJÜ—y’y“{ ZÕ/ˆHØ$×+Ñ+×1Ñ1Ð2°)Ð<ˆHØˆLØ‰Hä˜fÔ6ˆDØY]×YfÑYfÓYhÑVˆB˜'¨HÀà×.Ñ.à Ø˜wØ˜wðôð ˜' 7ô ˜dŸi™i›kÜ˜v×1Ñ1Ü §¡Ü! 4×#>Ñ#>¸vÓ#FÜ˜t×=Ñ=¸fÓEÜ¬
°8¼S×(AÒ(A™HÈ(ÐSWÈÜ 8 *Ü˜|¨CÐ0Ü ¨# Ü  $×"9Ñ"9Ó";Ü ×!:Ñ!:Ó!<Ø˜ð
ˆð �Y�Y‹YØ�H‰H�O‰O˜DÔ!÷ à×Ñ˜Ôà×%Ñ% j×1Ò1Ø!#ˆF�M‰MÔØÐ÷ �Yús   Æ'HÈH	r'   c               ó$   € V ^8„  d   QhRRRRRR/# )r&   rC   r	   Úmodelr
   r'   rc   r)   )r*   s   "r+   r,   r-   ”   s.   € ÷ r.ñ r.àðr.ð ðr.ð
 Pñr.r.   c               ób  € T;'       g    V P                   pV P                  V4      '       gî   VP                  4        V P                  ;_uu_ 4        VP                  P                  R4      P                  4       pVP                  P                  R4      P                  4       pVP                  P                  R4      P                  4       pRRR4       XP                  \        8X  g   Q hXP                  \        8X  g   Q hXP                  \        8X  g   Q hVP                  VP                  P                  VP                  4      /p	\        VR\        VRR4      4      p
\        VR\        VRR4      4      pV	P                  VP                  4      p\        VRR4      pVe   \        P                  ! 4       MRp\!        R	\"        V
R
7      ;_uu_ 4        \%        V4      ;_uu_ 4        \'        VP                  VP(                  VP*                  VP,                  VP.                  VP0                  VP                  VVP2                  VP                  VP4                  VP6                  \9        VP:                  VP<                  4      RVP?                  4       R7       RRR4       RRR4       Ve3   Ve/   VPA                  R\        P                  ! 4       V,
          V
R7       VP                  P                  VP                  4      p\C        WòP(                  \D        34      '       d   VP                  V/M/ pV P                  V4      '       Ed0   Ve   \        P                  ! 4       MRp\!        R\"        V
R
7      ;_uu_ 4        \%        V4      ;_uu_ 4        VVP                  ,          pVPG                  VRRRVPH                  R7       RRR4       RRR4       Ve6   Ve2   VPA                  R\        P                  ! 4       V,
          V
 R2R7       VPK                  V4      PM                  4       PO                  4       PQ                  \R        PT                  4      pVPW                  4       pVP<                  \X        PZ                  8w  d   VP\                  pVPM                  4       PO                  4       PQ                  \R        PT                  4      pVV,
          P_                  4       Pa                  4       Pc                  4       pV Pe                  WP<                  Pf                   RVR 24       VP                  P                  RR4       VP                  P                  RR4       VPi                  R4       R# Ve   \        P                  ! 4       MRp\!        R\"        V
R
7      ;_uu_ 4        \%        V4      ;_uu_ 4        \k        VP                  VXXXV	VP(                  V P                  VR7	      pRRR4       RRR4       VeC   Ve?   TPA                  R\        P                  ! 4       V,
          T
 RX;'       g    R R2R7       ???VP                  P                  RR4       VP                  P                  RR4       VPi                  R4       R#   + '       g   i     ELà; i  + '       g   i     EL ; i  + '       g   i     EL,; i  + '       g   i     EL; i  + '       g   i     EL#; i  + '       g   i     EL; i  + '       g   i     EL; i)zBCreates and packs the final quantized module into the model graph.rf   re   rg   NrI   r]   Ú Úquant_region_timerr   )ÚloggerÚmodule_nameF)r]   Ú
linear_clsÚbitsÚdesc_actÚdynamicÚ
group_sizerC   Ú	submoduleÚsymra   Úlm_head_nameÚ
pack_dtyper*   Úregister_buffersÚinit_kwargsÚsubmodule_finalize_create)Úsourcezmodule.pack_original)ÚlinearÚscalesÚzerosÚg_idxÚsmoothÚsubmodule_finalize_packz [module.pack_original]z: z.7fÚtp_pad_infoÚquant_source_moduleru   Úpack)	r]   ÚqModulesre   rf   rg   ÚlayersÚquant_linear_clsr>   Úquantize_configz [Ú])6r'   rR   Ústream_syncr>   ÚstateÚpopÚclonera   r   rI   r‚   Úget_submoduleÚgetattrr[   rj   Úperf_counterr   rZ   r"   r   Úqlinear_kernelÚruntime_bitsrŠ   r‹   rŒ   rŽ   Úlm_headr�   r   r*   rN   Úquant_linear_init_kwargsÚrecordrp   r!   Úpack_originalr™   Ú_weight_to_matrixÚdetachÚcpuÚtoÚtorchÚfloat32Údequantize_weightr   rQ   ÚTÚabsÚmeanÚitemr_   rk   Úunregister_parameterr    )r?   rC   r‚   r'   ÚkwargsÚactive_qcfgrf   re   rg   rŸ   Úmodule_labelÚ
parent_keyÚoriginal_layerÚtimerÚcreate_startÚqmoduleÚqmodulesÚ
pack_startÚreference_weightÚdequant_weightÚmean_abs_errÚpacker_labels   &&&$,                 r+   Úsubmodule_finalizeÚ&WeightOnlyProcessor.submodule_finalize”   s³  € ð ×'Ð'˜dŸi™iˆØ×%Ñ% k×2Ò2Ø×ÑÔ Ø——“Ø Ÿ,™,×*Ñ*¨9Ó5×;Ñ;Ó=�Ø!Ÿ<™<×+Ñ+¨JÓ7×=Ñ=Ó?�Ø Ÿ,™,×*Ñ*¨9Ó5×;Ñ;Ó=�÷ ð
 —>‘>¤SÔ(Ð(Ð(Ø—?‘?¤cÔ)Ð)Ð)Ø—>‘>¤SÔ(Ð(Ð(à×"Ñ" E§K¡K×$=Ñ$=¸f×>NÑ>NÓ$OÐPˆÜ˜v {´G¸FÀFÈBÓ4OÓPˆÜ˜V [´'¸&À&È$Ó2OÓPˆ
ØŸ™ F×$4Ñ$4Ó5ˆÜ˜Ð3°TÓ:ˆà.3Ò.?”t×(Ò(Ô*ÀTˆÜÐ1¼#È<×XÖXÜ# J×/Õ/Ü#Ø×)Ñ)Ø$×3Ñ3Ø$×1Ñ1Ø(×1Ñ1Ø'×/Ñ/Ø*×5Ñ5Ø Ÿ;™;Ø$Ø#Ÿ™Ø&×-Ñ-Ø!&§¡Ø*×5Ñ5Ü/°×0BÑ0BÀK×DVÑDVÓWØ%*Ø +× DÑ DÓ Fõ÷ 0÷ Yð& Ò Ò!9Ø�L‰LÐ4´d×6GÒ6GÓ6IÈLÕ6XÐamˆLÔnà—+‘+×+Ñ+¨F×,<Ñ,<Ó=ˆô ˜'×$8Ñ$8Ô:NÐ#O×PÒPð ×Ñ˜wÑ'àð 	ð ×!Ñ! +×.Ó.Ø05Ò0Aœ×*Ò*Ô,ÀtˆJÜÐ 6¼sÐP\×]Ö]Ü'¨
×3Õ3Ø& v×'7Ñ'7Õ8�GØ×)Ñ)Ø-Ø#Ø"Ø"Ø*×1Ñ1ð *ô ÷ 4÷ ^ð Ò  ZÒ%;Ø—‘Ø-Ü×%Ò%Ó'¨*Õ4Ø*˜^Ð+BÐCð ô ð  '×8Ñ8¸ÓH×OÑOÓQ×UÑUÓW×ZÑZÔ[`×[hÑ[hÓiÐØ$×6Ñ6Ó8ˆNà×!Ñ!¤V×%8Ñ%8Ô8Ø!/×!1Ñ!1�Ø+×2Ñ2Ó4×8Ñ8Ó:×=Ñ=¼e¿m¹mÓLˆNØ*Ð-=Õ=×BÑBÓD×IÑIÓK×PÑPÓRˆLØ×$Ñ$ V×0BÑ0B×0HÑ0HÐ/IÈÈLÐY\ÐK]Ð-^Ô_Ø�L‰L×Ñ˜]¨DÔ1Ø�L‰L×ÑÐ2°DÔ9Ø×'Ñ'¨Ô1Ùà,1Ò,=”T×&Ò&Ô(À4ˆ
Ü˜F¬3¸L×IÖIÜ# J×/Õ/Ü*Ø×)Ñ)Ø%Ø%Ø#Ø#Ø!Ø%*×%9Ñ%9ØŸ™Ø$/ô
 �÷ 0÷ Jð Ò Ò!7Ø�L‰LØ)Ü×!Ò!Ó# jÕ0Ø&˜ r¨,×*PÐ*PÐ:PÐ)QÐQRÐSð ô ð �g˜wØ�‰×Ñ˜¨Ô-Ø�‰×ÑÐ.°Ô5Ø×#Ñ# HÖ-÷K —�ú÷" 0×/Ð/ú÷ Y×XÐXú÷@ 4×3Ð3ú÷ ^×]Ð]ú÷@ 0×/Ð/ú÷ J×IÐIúsz   ÁA<Z%Ç[Ç-B5Z9	Ê"[Î[5Î4[!	Ï[5Ö:\×3\		Ø\Ú%Z6	Ú9[
Û	[Û[	Û![2Û,	[5Û5\	Ü	\Ü	\Ü\.	c               ó   € V ^8„  d   QhRR/# )r&   r‚   r
   r)   )r*   s   "r+   r,   r-     s   € ÷ 0ñ 0˜jñ 0r.   c                ó:   <€ RVn         \        SV `  ! RRV/VB  R# )zAMarks the model quantized and runs shared processor finalization.Tr‚   Nr)   )Ú	quantizedr:   Úfinalize)r?   r‚   r¼   r@   s   &&,€r+   rÏ   ÚWeightOnlyProcessor.finalize  s!   ø€ ð ˆŒÜ‰ÒÑ/˜uÐ/¨Ô/r.   c               ó   € V ^8„  d   QhRR/# )r&   rD   rV   r)   )r*   s   "r+   r,   r-     s   € ÷ 	!ñ 	!�cñ 	!r.   c                ó  € V P                   P                  \        P                  8X  d   R# V P                   P                  \        P                  8X  d   R# V P                   P                  \        P
                  8X  d   R# R# )z9Returns the method-specific processor label used in logs.Úweight_only_ggufÚweight_only_fp8Úweight_only_bitsandbytesÚweight_only_rtn)r'   rN   r   rO   rP   rQ   )r?   s   &r+   r]   ÚWeightOnlyProcessor.name  sT   € ð �9‰9×ÑœvŸ{™{Ô*Ù%Ø�9‰9×ÑœvŸz™zÔ)Ù$Ø�9‰9×Ñœv×2Ñ2Ô2Ù-Ù r.   )r>   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r;   rJ   ÚstaticmethodrR   r_   r   rÊ   rÏ   r]   Ú__static_attributes__Ú__classcell__)r@   s   @r+   r$   r$   .   si   ø† Ù[÷%ð %õ.Kð
 ôMó ðMõ
ð6ð *.÷	6ðpr.ð
 SW÷r.÷h0ð 0÷	!ó 	!r.   r$   )3Ú
__future__r   r<   rj   Útypingr   r´   Úlooper.loop_processorr   r   r   r   Úlooper.named_moduler	   Úmodelsr
   Úmodels._constr   Úmodels.writerr   r   r   r   r   r   r   r   r   Úquantization.configr   r   r   r   r   r   r   Úquantization.rtnr   Úutils.loggerr   r   Úutils.modelr   r    Únn_modules.qlinear.torchr!   Úutils.module_locksr"   rZ   r$   Ú__all__r)   r.   r+   Ú<module>rî      sv   ðõ #ã Û Ý ã ç lÓ lÝ -Ý Ý ÷
÷ 
õ 
÷÷ ñ õ #ß 7ß :Ý ;Ý 3ñ ƒn€ôi!˜-ô i!ðV !Ð
!‚r.   