+
    "Ý³jù  ã                   ó‚   € ^ RI HtHt ^ RIt^RIHtHt ^RIHt ^RI	H
t
 ^RIHt ^RIHt ]! 4       t ! R R	]4      tR# )
é    )ÚDictÚOptionalN)ÚExecutionConfigÚLoopProcessor)ÚNamedModule)Ú
BaseQModel)ÚTorchLinear)Úsetup_loggerc                   ó”   a a€ ] tR t^t oRtV3R lV 3R lltR tRV3R lR lltV3R lR ltV3R	 lR
 lt	V3R lR lt
RtVtV ;t# )ÚDequantizeProcessorzMRestores quantized weights to dense tensors for comparison or recovery flows.c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# )é   Úquantized_modules)r   Ústrr	   )ÚformatÚ__classdict__s   "€Úf/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/looper/dequantize_processor.pyÚ__annotate__Ú DequantizeProcessor.__annotate__   s   ø€ ÷ 3ñ 3©$©s±KÐ/?Õ*@ñ 3ó    c                óV   <€ \         SV `  RRRRR^\        RRR7      R7       Wn        R# )zCInitializes the processor with the quantized modules to dequantize.NF)Úrequire_fwdÚfwd_replay_after_process)Ú	tokenizerÚqcfgÚcalibrationÚcalibration_concat_sizeÚprepare_dataset_funcÚ
batch_sizeÚexecution_config)ÚsuperÚ__init__r   r   )Úselfr   Ú	__class__s   &&€r   r"   ÚDequantizeProcessor.__init__   s?   ø€ ô 	‰ÑØØØØ$(Ø!%ØÜ,Ø!Ø).ôð 	ô 	
ð "3Ör   c                ó"   € RV n         ^ V n        R# )zBDisables calibration inputs because dequantization is weight-only.N)Úcalibration_datasetÚnum_batches)r#   r'   s   &&r   Úset_calibration_datasetÚ+DequantizeProcessor.set_calibration_dataset'   s   € ð $(ˆÔ ØˆÖr   c                ó¾   <€ V ^8„  d   QhRS[ RS[P                  RS[S[S[S[ 3,          ,          RS[S[S[S[ 3,          ,          RS[S[,          RS[S[,          /# )r   ÚmoduleÚdeviceÚsubsetÚprevious_subsetÚsubset_indexÚsubset_total)r   Útorchr-   r   r   r   Úint)r   r   s   "€r   r   r   .   sq   ø€ ÷ )ñ )áð)ñ —‘ð)ñ ™™c¡;Ð.Õ/Õ0ð	)ñ
 "¡$¡s©KÐ'7Õ"8Õ9ð)ñ ™s•mð)ñ ™s•mñ)r   c                ó
  € VP                   P                  pV P                  ;_uu_ 4        V P                  P	                  VP
                  4      pVP                  4        RRR4       VP                  P                  R4      p^ p	\        V\        4      '       d&   \        VP                  R^ 4      ;'       g    ^ 4      p	XP                  4       P                  P                  VR7      p
V	'       d>   V
P                  V
P                   ^ ,          V	34      p\"        P$                  ! W«3^R7      p
VP                   P&                  pV	'       d>   VP                  VP                   ^ ,          V	34      p\"        P$                  ! WË3^R7      pVP                  \"        P(                  R7      V
P                  \"        P(                  R7      ,
          pVP                  P+                  RVRV
/4       R#   + '       g   i     EL™; i)	zEDequantizes a module, preserving tensor-parallel padding when needed.NÚtp_pad_infoÚpad_cols)r-   )Údim)ÚdtypeÚ	w_wq_diffÚwq)Úweightr-   Úlockr   ÚpopÚ	full_nameÚoptimizeÚstateÚgetÚ
isinstanceÚdictr3   Údequantize_weightÚTÚtoÚ	new_zerosÚshaper2   ÚcatÚdataÚfloat32Úupdate)r#   r,   r-   r.   r/   r0   r1   ÚmÚtp_infor6   r:   ÚpadÚmodule_weightr9   s   &&&&&&&       r   ÚprocessÚDequantizeProcessor.process.   s|  € ð —‘×%Ñ%ˆð �Y�Y‹YØ×&Ñ&×*Ñ*¨6×+;Ñ+;Ó<ˆAØ�J‰JŒL÷ ð —,‘,×"Ñ" =Ó1ˆØˆÜ�gœt×$Ò$Ü˜7Ÿ;™; z°1Ó5×:Ð:¸Ó;ˆHà× Ñ Ó"×$Ñ$×'Ñ'¨vÐ'Ó6ˆßØ—,‘, §¡¨¥¨XÐ6Ó7ˆCÜ—’˜B˜9¨!Ô,ˆBàŸ™×*Ñ*ˆßØ×)Ñ)¨=×+>Ñ+>¸qÕ+AÀ8Ð*LÓMˆCÜ!ŸIšI }Ð&:ÀÔBˆMð "×$Ñ$¬5¯=©=Ð$Ó9¸B¿E¹EÌÏÉ¸EÓ<VÕVˆ	à�‰×ÑØ˜Ø�"ð
ö 	÷1 �YˆYús   «6G1Ç1H	c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r,   Úmodel)r   r   )r   r   s   "€r   r   r   Y   s   ø€ ÷ %ñ %©ð %¹Zñ %r   c                óv   € VP                   P                  RR4       VP                   P                  RR4       R# )zIDrops temporary dequantization tensors after downstream consumers finish.ÚwNr:   )r@   r=   )r#   r,   rT   Úkwargss   &&&,r   Úsubmodule_finalizeÚ&DequantizeProcessor.submodule_finalizeY   s,   € ð 	�‰×Ñ˜˜dÔ#Ø�‰×Ñ˜˜tÖ$r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úprocessor_indexÚreturn)r3   Úbool)r   r   s   "€r   r   r   _   s   ø€ ÷ ñ ¹#ð Á$ñ r   c                ó   € R# )zCReports that no calibration dataset is required for this processor.F© )r#   r[   s   &&r   Úverify_calibration_datasetÚ.DequantizeProcessor.verify_calibration_dataset_   s   € ñ r   c                ó    <€ V ^8„  d   QhRS[ /# )r   r\   )r   )r   r   s   "€r   r   r   d   s   ø€ ÷ ñ ‘cñ r   c                ó   € R# )zAReturns the processor label used in logs and lifecycle reporting.zde-quantizer_   )r#   s   &r   ÚnameÚDequantizeProcessor.named   s   € ñ r   )r'   r(   r   )NNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r)   rQ   rX   r`   rd   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r$   r   s   @@r   r   r      sE   ù‡ € ÙW÷3ó 3ò$÷)ò )÷V%ð %÷ð ÷
÷ ð r   r   )Útypingr   r   r2   Úlooper.loop_processorr   r   Úlooper.named_moduler   Úmodelsr   Únn_modules.qlinear.torchr	   Úutils.loggerr
   Úlogr   r_   r   r   Ú<module>ru      s1   ð÷ "ã ç BÝ -Ý Ý 2Ý 'áƒn€ôU˜-ö Ur   