+
    "Ý³jÁ  ã                  óš   € ^ RI Ht ^ RIt^ RIHtHtHtHt ^ RIt^ RI	t	^RI
HtHt ^RIHt ^RIHtHtHt R R lt ! R	 R
]4      tR
.tR# )é    )ÚannotationsN)ÚAnyÚDictÚListÚOptional)ÚExecutionConfigÚLoopProcessor)ÚNamedModule)ÚAutoModuleDecoderConfigÚSmootherConfigÚTensorParallelPadderConfigc               ó    € V ^8„  d   QhRRRR/# )é   Úlayerztorch.nn.ModuleÚreturnztuple[int, int]© )Úformats   "Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/looper/module_preprocessor.pyÚ__annotate__r      s   € ÷ Dñ D¨ð D¸Oñ Dó    c                ó–  € \        V \        4      '       d   V P                  p \        V \        P                  4      '       d;   V P
                  P                  ^,          V P
                  P                  ^ ,          3# V P
                  P                  ^ ,          \        P                  ! V P
                  P                  R,          4      3# )é   :r   NN)	Ú
isinstancer
   ÚmoduleÚtransformersÚConv1DÚweightÚshapeÚmathÚprod)r   s   &r   Ú_get_number_of_rows_and_colsr!      s†   € Ü�%œ×%Ò%Ø—‘ˆä�%œ×,Ñ,×-Ò-Ø�|‰|×!Ñ! !Õ$ e§l¡l×&8Ñ&8¸Õ&;Ð;Ð;à�<‰<×Ñ˜aÕ ¤$§)¢)¨E¯L©L×,>Ñ,>¸rÕ,BÓ"CÐCÐCr   c                  óˆ   a € ] tR t^tRtRtV 3R ltR R ltR R ltR R lt	RR	 R
 llt
R R ltR R ltR R ltRtV ;t# )ÚModulePreProcessorzGAnnotate modules with an ordered preprocessor plan before quantization.c                óÚ   <€ \        V4      pVP                  RR4       VP                  R4      pVP                  RR4      p\        SV `  VVRRRRR^\	        RRR7      R7	       W0n        R# )zDInitialize a no-forward planning processor for module preprocessors.Úcalculate_w_wq_diffNÚqcfgÚ	tokenizerF)Úrequire_fwdÚfwd_replay_after_process)	r'   r&   ÚcalibrationÚprepare_dataset_funcÚcalibration_concat_sizeÚcalibration_sortÚcalibration_concat_separatorÚ
batch_sizeÚexecution_config)ÚdictÚpopÚsuperÚ__init__r   r&   )ÚselfÚargsÚkwargsr&   r'   Ú	__class__s   &*,  €r   r4   ÚModulePreProcessor.__init__    sz   ø€ ô �f“ˆØ�
‰
Ð(¨$Ô/Ø�z‰z˜&Ó!ˆØ—J‘J˜{¨DÓ1ˆ	Ü‰ÑØØØØ!%Ø$(Ø!Ø)-ØÜ,Ø!Ø).ôð 	ô 	
ð Ž	r   c               ó   € V ^8„  d   QhRR/# )r   r   r
   r   )r   s   "r   r   ÚModulePreProcessor.__annotate__7   s   € ÷ -2ñ -2 ñ -2r   c                óè  € ?. pRpRp\        V P                  R. 4      ;'       g    .  FÑ  p\        V\        4      '       d:   RVP                  RVP
                  RVP                  /pVP                  V4       KR  \        V\        4      '       d3   V P                  V4      pVP                  RVP                  /VC4       Kš  \        V\        4      '       g   K²  VP                  VP                  4       4       KÓ  	  V'       d   W1P                  R&   MVP                  P                  RR4       Ve   WAP                  R&   MpVP                  P                  RR4       VP                  P                  RR4       VP                  P                  R	R4       VP                  P                  R
R4       Ve   VR,          ^ 8”  d   WQP                  R&   R# VP                  P                  RR4       R# )zANormalize configured preprocessors into a stable per-module plan.NÚpreprocessorsÚcodeÚsource_dtypeÚtarget_dtypeÚpreprocessor_pipelineÚauto_module_decoderÚquant_source_moduleÚ auto_module_decoder_forward_modeÚ#_auto_module_decoder_event_recordedÚpad_colsÚtp_pad_info)Úgetattrr&   r   r   r>   r?   r@   Úappendr   Ú_compute_tp_pad_infor   Úto_dictÚstater2   )r5   r   r7   ÚpipelineÚauto_module_decoder_planrG   Úpreprocessors   &&,    r   Ú
preprocessÚModulePreProcessor.preprocess7   s¬  € ð à)+ˆØ#'Ð ØˆÜ# D§I¡I¨ÀÓC×IÐIÀrÒIˆLÜ˜,Ô(?×@Ò@à˜L×-Ñ-Ø" L×$=Ñ$=Ø" L×$=Ñ$=ð,Ð(ð
 —‘Ð 8Ô9ÙÜ˜,Ô(B×CÒCØ"×7Ñ7¸Ó?�Ø—‘à × 1Ñ 1ðà%ðôñ Ü˜,¬×7Ô7Ø—‘ × 4Ñ 4Ó 6Ö7ñ' J÷* Ø4<�L‰LÐ0Ò1à�L‰L×ÑÐ4°dÔ;à#Ò/Ø2J�L‰LÐ.Ò/à�L‰L×ÑÐ2°DÔ9Ø�L‰L×ÑÐ2°DÔ9Ø�L‰L×ÑÐ?ÀÔFØ�L‰L×ÑÐBÀDÔIàÒ" {°:Õ'>ÀÔ'BØ*5�L‰L˜Ó'à�L‰L×Ñ˜]¨DÖ1r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r
   r   Úboolr   )r   s   "r   r   r;   f   s   € ÷ ñ  ð °ñ r   c                ó   € ?R# )zHReport that every candidate module passes through preprocessor planning.Fr   )r5   r   s   &&r   Ú
is_skippedÚModulePreProcessor.is_skippedf   s
   € ð Ùr   c               ó   € V ^8„  d   QhRR/# )r   ÚnameÚstrr   )r   s   "r   r   r;   l   s   € ÷ 	ñ 	¨ñ 	r   c                ó   € ?R pV# )zBReturn a no-op hook because planning does not inspect activations.c                ó   € ? ??R # )Nr   )r   ÚinputsÚoutputs   &&&r   Ú_noopÚ6ModulePreProcessor.pre_process_fwd_hook.<locals>._noopq   s   € Ø˜ Ùr   r   )r5   rX   r^   s   && r   Úpre_process_fwd_hookÚ'ModulePreProcessor.pre_process_fwd_hookl   s   € ð ò	ð ˆr   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R	/# )r   r   r
   Údeviceztorch.deviceÚsubsetz Optional[Dict[str, NamedModule]]Úprevious_subsetÚsubset_indexzOptional[int]Úsubset_totalr   )r   s   "r   r   r;   w   sN   € ÷ Pñ PàðPð ðPð 1ð	Pð
 :ðPð $ðPð $ñPr   c                ó   € ??????R# )z:Keep the planning stage side-effect free after preprocess.Nr   )r5   r   rc   rd   re   rf   rg   s   &&&&&&&r   ÚprocessÚModulePreProcessor.processw   s   € ð �F˜F O°\Â<r   c               ó    € V ^8„  d   QhRRRR/# )r   Úprocessor_indexÚintr   rS   r   )r   s   "r   r   r;   „   s   € ÷ ñ ¸#ð À$ñ r   c                ó   € ?R# )zDReport that this planning stage does not require calibration inputs.Fr   )r5   rl   s   &&r   Úverify_calibration_datasetÚ-ModulePreProcessor.verify_calibration_dataset„   s
   € ð Ùr   c               ó   € V ^8„  d   QhRR/# )r   r   rY   r   )r   s   "r   r   r;   Š   s   € ÷ %ñ %�cñ %r   c                ó   € R# )z@Return the processor label used in logs and lifecycle reporting.zmodule-preprocessorr   )r5   s   &r   rX   ÚModulePreProcessor.nameŠ   s   € ñ %r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r
   r   zDict[str, int]r   )r   s   "r   r   r;   �   s   € ÷ 
ñ 
¨;ð 
¸>ñ 
r   c                óü   € \         P                  ! V P                  !  p\        V P                  RR4      pV^ 8”  d   \         P                  ! W#4      p\        V4      w  rEW%V,          ,
          V,          pRVRVRV/# )z:Calculate tensor-parallel padding metadata for one module.Ú
group_sizerF   Útarget_multipleÚoriginal_columnséÿÿÿÿ)r   ÚlcmÚ_TP_TARGETSrH   r&   r!   )r5   r   rw   rv   Ú_ÚcolumnsrF   s   &&     r   rJ   Ú'ModulePreProcessor._compute_tp_pad_info�   sv   € ô Ÿ(š( D×$4Ñ$4Ñ5ˆÜ˜TŸY™Y¨°bÓ9ˆ
Ø˜Œ>Ü"Ÿhšh ÓCˆOä1°&Ó9‰
ˆØ#°Õ'@ÕAÀ_ÕTˆà˜Ø˜Ø ð
ð 	
r   )r&   )r   é   é   )NNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r{   r4   rP   rU   r`   ri   ro   rX   rJ   Ú__static_attributes__Ú__classcell__)r8   s   @r   r#   r#      s:   ø† ÙQà€Kõõ.-2õ^õ	÷Põõ%÷

ó 
r   r#   )Ú
__future__r   r   Útypingr   r   r   r   Útorchr   Úlooper.loop_processorr   r	   Úlooper.named_moduler
   Úquantization.configr   r   r   r!   r#   Ú__all__r   r   r   Ú<module>r�      sD   ðõ #ã ß ,Ó ,ã Û ç BÝ -ß eÑ eõDôB
˜ô B
ðH  Ð
 ‚r   