+
    "Ý³j„~  ã            (      óN  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
 ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHt ^ R
IHt ^ RIHt Rt]! R4      tRtR R ltR R ltR R lt R R lt!R t"R R lt#R R lt$R R lt%R R lt&R  R! lt'R" R# lt(R$R%R&^R'^€R(^R)R*R+^
R,^
R-R.R/^@R0^@R1R2R3R4R5R€R6R7R8R9R:R;R<R;R=R9R>RR?R9/R@ RA llt)RB RC lt*RD RE lt+R�RF RG llt,RH t-RIRRJRRKRRLR/RM RN llt.RO]RP^@RQR/RR RS llt/RO]RI]P`                  RP^@RQR/RT RU llt1R‚RW RX llt2RY RZ lt3R[ R\ lt4R] R^ lt5RƒR_ R` llt6RaRVRb^Rc^/Rd Re llt7Rf Rg lt8Rh Ri lt9RI]P`                  RjRRkRRlR%/Rm Rn llt:RO]Ro^RI]P`                  Rp^@RqR.Rr^RP^@RQRRKRRLRR$R%RsR%R)R*R+^
R,^
R-R.R/^@R0^@/Rt Ru llt;RO]RI]P`                  Rp^@RqR.Rr^RP^@RQRRKRRLRR$R%RsR%R)R*R+^
R,^
R-R.R/^@R0^@/Rv Rw llt<RO]RI]P`                  Rp^@RqR.Rr^RP^@RQRRKRRLRR$R%RsR%R)R*R+^
R,^
R-R.R/^@R0^@/Rx Ry llt=Rz R{ lt>R| R} lt?R~ R lt@R# )„é    )ÚannotationsN)ÚPath)ÚAnyÚOptional)Ú	GPTQModel)Ú
ParoLinear)ÚParoQuantTritonLinear)ÚFORMATÚMETHOD)ÚQuantizeConfig)ÚBACKEND)Úrender_tablez*/monster/data/model/dataset/nm-calibrationz6/monster/data/model/dataset/nm-calibration/llm.parquetz)/monster/data/model/Llama-3.2-1B-Instructc               ó    € V ^8„  d   QhRRRR/# )é   Úmodel_dtyper   Úreturnztorch.dtype | str | None© )Úformats   "Úd/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/utils/paroquant_benchmark.pyÚ__annotate__r      s   € ÷ ñ ¨ð Ð0Hñ ó    c                ó€  € V f   R # \        V \        4      '       d¢   V P                  4       P                  4       pR\        P
                  R\        P
                  R\        P
                  R\        P                  R\        P                  R\        P                  R\        P                  /pVP                  W4      # V # )NÚfp16Úfloat16ÚhalfÚbf16Úbfloat16Úfp32Úfloat32)	Ú
isinstanceÚstrÚstripÚlowerÚtorchr   r   r   Úget©r   Ú
normalizedÚmappings   &  r   Ú_normalize_model_dtyper)      sŒ   € ØÒÙÜ�+œs×#Ò#Ø ×&Ñ&Ó(×.Ñ.Ó0ˆ
à”E—M‘MØ”u—}‘}Ø”E—M‘MØ”E—N‘NØœŸ™Ø”E—M‘MØ”u—}‘}ð
ˆð �{‰{˜:Ó3Ð3ØÐr   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r!   r   )r   s   "r   r   r   /   s   € ÷ 4ñ 4˜cð 4 cñ 4r   c                ó²   € \        V 4      p\        P                  R \        P                  R\        P                  R/pVP                  V\        V4      4      # )r   r   r   )r)   r$   r   r   r   r%   r!   r&   s   &  r   Ú_dtype_labelr,   /   sE   € Ü'¨Ó4€Jä�‰�vÜ�‰˜Ü�‰�vð€Gð
 �;‰;�z¤3 z£?Ó3Ð3r   c               ó   € V ^8„  d   QhRR/# )r   r   r!   r   )r   s   "r   r   r   9   s   € ÷ >ñ > 3ñ >r   c                 ó´   € \         P                  P                  4       '       g   R # \         P                  P                  \         P                  ! R4      4      # )Úcpuúcuda:0)r$   ÚcudaÚis_availableÚget_device_nameÚdevicer   r   r   Ú_visible_cuda_device_namer5   9   s6   € Ü�:‰:×"Ñ"×$Ò$ÙÜ�:‰:×%Ñ%¤e§l¢l°8Ó&<Ó=Ð=r   c               ó   € V ^8„  d   QhRR/# )r   r   zdict[str, str] | strr   )r   s   "r   r   r   ?   s   € ÷ Bñ BÐ 4ñ Br   c                 óV   € \         P                  P                  4       '       d   R R/# R# )Ú r0   r/   )r$   r1   r2   r   r   r   Ú_single_gpu_device_mapr9   ?   s#   € Ü"ŸZ™Z×4Ñ4×6Ò6ˆB�ˆ>ÐA¸EÐAr   c                 ó8  € \         P                  4       '       g   \        R \          24      h ^ RIp V e'   V P                  \         4      P                  RR7      pM)^ RIHp VP                  \         4      P                  4       p. pV Fz  p/ p\        V4      P                  4        FG  w  rg\        VR4      '       d-   \        V\        \         34      '       g   VP#                  4       pWuV&   KI  	  VP%                  V4       K|  	  V#   \         d    Rp  Læi ; i)z!Calibration parquet not found at NÚrecords)ÚorientÚtolist)Ú_NM_CALIBRATION_PARQUETÚexistsÚFileNotFoundErrorÚpandasÚImportErrorÚread_parquetÚto_dictÚpyarrow.parquetÚparquetÚ
read_tableÚ	to_pylistÚdictÚitemsÚhasattrr    r!   Úbytesr=   Úappend)Úpdr;   Úpqr'   ÚrecordÚitemÚkeyÚvalues           r   Ú_load_local_calibration_parquetrT   C   s÷   € Ü"×)Ñ)×+Ò+ÜÐ"CÔD[ÐC\Ð ]Ó^Ð^ðÛð 
‚~Ø—/‘/Ô"9Ó:×BÑBÈ)ÐBÓT‰å$à—-‘-Ô 7Ó8×BÑBÓDˆà€JÛˆØˆÜ˜v›,×,Ñ,Ö.‰JˆCÜ�u˜h×'Ò'´
¸5Ä3ÌÀ,×0OÒ0OØŸ™›�Ø�‹Iñ /ð 	×Ñ˜$Öñ ð Ðøô% ô ØŠðús   ®D	 Ä	DÄDc               ó    € V ^8„  d   QhRRRR/# )r   ÚrowsÚintr   úlist[dict[str, Any]]r   )r   s   "r   r   r   ^   s   € ÷ ñ ˜cð Ð&:ñ r   c           
     ór  €  ^ RI Hp  V! \        RRR7      pT ^ 8:  d   \        T4      # \        TR4      '       d/   TP                  \        \        T \        T4      4      4      4      pM\        T4      RT  p\        T4      #   \         d    \	        4       p L‚i ; i  \         d    \	        4       p L�i ; i)r   )Úload_datasetÚLLMÚtrain)ÚpathÚnameÚsplitÚselectN)ÚdatasetsrZ   Ú_NM_CALIBRATION_PATHÚ	ExceptionrT   ÚlistrK   r`   ÚrangeÚminÚlen)rV   rZ   Údatasets   &  r   Úload_nm_calibrationri   ^   s¨   € ð8Ý)ð	8Ù"Ô(<À5ÐPWÔXˆGð ˆq„yÜ�G‹}ÐÜˆw˜×!Ò!Ø—.‘.¤¤s¨4´°W³Ó'>Ó!?Ó@‰ä�w“-  Ð&ˆÜ�‹=Ðøô ô 	8Ü5Ó7ŠGð	8ûô ô 4Ü1Ó3Šð4ús"   ‚B ‰B ÂBÂBÂB6Â5B6c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[str, int]r   )r   s   "r   r   r   r   s   € ÷ ,ñ , ñ ,r   c                ó|  € V P                  4       p\        V\        \        34      '       d   V'       g   \	        R 4      hV^ ,          p\        V4      P                  4       pV'       g   \	        R4      hVP                  RR4      p\        \        V P                  RV P                  4      P                  4      pW#3# )z>Model did not expose a layers node for ParoQuant benchmarking.z.Model layers node resolved to an empty string.Ú.ú\.Úmodel)Úextract_layers_noder    rd   ÚtupleÚ
ValueErrorr!   r"   Úreplacerg   Úgetattrrn   Úlayers)rn   Úlayers_nodeÚescaped_layers_nodeÚlayer_counts   &   r   Ú_layers_node_inforx   r   s˜   € Ø×+Ñ+Ó-€KÜ�+¤¤e˜}×-Ò-ßÜÐ]Ó^Ð^Ø! !•nˆÜ�kÓ"×(Ñ(Ó*€KßÜÐIÓJÐJØ%×-Ñ-¨c°5Ó9ÐÜ”g˜eŸk™k¨7°E·K±KÓ@×GÑGÓH€KØÐ+Ð+r   c               ó    € V ^8„  d   QhRRRR/# )r   Únum_quant_layersrW   r   údict[str, dict[str, Any]]r   )r   s   "r   r   r   €   s   € ÷ ñ ¸ð Ð@Yñ r   c                óÖ   € \        V 4      w  r#\        V4      pV^ 8:  d   \        R4      hW8”  d   \        RV RV R24      h\        W4       Uu/ uF  pRV RV R2/ bK  	  up# u upi )r   z9ParoQuant benchmark: `num_quant_layers` must be positive.z)ParoQuant benchmark: `num_quant_layers` (z) exceeds model layer count (z).ú-:^rm   )rx   rW   rq   re   )rn   rz   rv   rw   Ú	layer_idxs   &&   r   Úbuild_prefix_layer_dynamicr   €   sž   € Ü'8¸Ó'?Ñ$ÐÜÐ+Ó,ÐØ˜1ÔÜÐTÓUÐUØÔ%ÜØ7Ð8HÐ7IÐIfÐgrÐfsÐsuÐvó
ð 	
ô
 Ð/Ô=óá=ˆIð Ð!Ð" # i [°Ð4°bÒ8Ù=ñð ùò s   ÁA&c               ó   € V ^8„  d   QhRR/# )r   r   r{   r   )r   s   "r   r   r   �   s   € ÷ Añ AÐ-Fñ Ar   c                ó   € \        V ^R7      # )é   ©rz   )r   ©rn   s   &r   Úbuild_first_layer_only_dynamicr…   �   s   € Ü% e¸aÔ@Ð@r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r~   rW   Úmodule_namer!   r   r{   r   )r   s   "r   r   r   “   s'   € ÷ bñ b°Sð bÀsð bÐOhñ br   c               ó   € \        WV.R 7      # )©r~   Úmodule_names)Úbuild_selected_modules_dynamic)rn   r~   r‡   s   &$$r   Úbuild_single_module_dynamicrŒ   “   s   € Ü)¨%ÐT_ÐS`ÔaÐar   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r~   rW   rŠ   úlist[str] | tuple[str, ...]r   r{   r   )r   s   "r   r   r   —   s*   € ÷ 'ñ 'ð ð'ð .ð	'ð
 ñ'r   c          
     ó†  € \        V 4      w  r4\        V4      pV^ 8  g   W8¼  d   \        RV RV^,
           R24      h\        V P                  RV P                  4      P
                  pWQ,          p. p. pV FÒ  p	Tp
\        V	4      P                  4       P                  R4       Uu. uF  q»'       g   K  VNK  	  ppV'       g   \        R4      hV F1  p\        W«4      '       g   \        RV RV	 R	24      h\        W«4      p
K3  	  RP                  V4      pVP                  V4       VP                  VP                  RR
4      4       KÔ  	  V'       g   \        R4      hRP                  \        \        V4      4      4      p/ p\        V4       F'  pVV8X  d   / VRV R
V RV R2&   K  / VRV R
V R
2&   K)  	  V# u upi )r   z"ParoQuant benchmark: `layer_idx` (z) is outside [0, z].rn   rl   zQParoQuant benchmark: `module_names` must contain non-empty relative module paths.zParoQuant benchmark: layer z does not expose module path `z`.rm   z:ParoQuant benchmark: at least one module must be selected.Ú|r}   z\.(?!(?:z)$))rx   rW   rq   rs   rn   rt   r!   r"   r_   rK   ÚjoinrM   rr   ÚsortedÚsetre   )rn   r~   rŠ   rv   rw   rt   ÚlayerÚnormalized_module_namesÚescaped_module_namesr‡   ÚcurrentÚpartÚpartsÚnormalized_module_nameÚselected_patternÚdynamicÚidxs   &$$              r   r‹   r‹   —   sÙ  € ô (9¸Ó'?Ñ$ÐÜ�I“€IØ�1„}˜	Ô0ÜÐ=¸i¸[ÐHYÐZeÐhiÕZiÐYjÐjlÐmÓnÐnä�U—[‘[ '¨5¯;©;Ó7×>Ñ>€FØÕ€EØ)+ÐØ&(ÐÛ#ˆØˆÜ"% kÓ"2×"8Ñ"8Ó":×"@Ñ"@ÀÔ"EÓNÑ"E˜$Ë—�Ñ"EˆÐNßÜÐpÓqÐqÛˆDÜ˜7×)Ò)Ü Ð#>¸y¸kÐIgÐhsÐgtÐtvÐ!wÓxÐxÜ˜gÓ,ŠGñ ð "%§¡¨%£ÐØ×&Ñ&Ð'=Ô>Ø×#Ñ#Ð$:×$BÑ$BÀ3ÈÓ$NÖOñ $÷  ÜÐUÓVÐVà—x‘x¤¤sÐ+?Ó'@Ó AÓBÐØ)+€GÜ�[Ö!ˆØ�)ÔàY[ˆG�cÐ-Ð.¨c°#°°iÐ@PÐ?QÐQTÐUÓVà>@ˆG�cÐ-Ð.¨c°#°°cÐ:Ó;ñ "ð €Nùò- Os   Â'	F>Â5F>ÚsymTÚbitsÚ
group_sizeÚkrotÚ	opt_scopeÚmoduleÚopt_rotation_epochsÚopt_finetune_epochsÚopt_train_samplesi   Úopt_validation_samplesÚopt_batch_sizeÚopt_optimizerÚadamwÚopt_weight_decayg{®Gáz„?Ú	opt_betasÚopt_epsg»½×Ùß|Û=Úopt_amsgradFÚopt_sgd_momentumç        Úopt_sgd_dampeningÚopt_sgd_nesterovÚopt_gradient_checkpointingÚoffload_to_diskc          ,     óp   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRR/# )r   rœ   r{   rž   ÚboolrŸ   rW   r    r¡   r¢   r!   r¤   r¥   r¦   r§   r¨   r©   r«   Úfloatr¬   ztuple[float, float]r­   r®   r¯   r±   r²   r³   zOptional[bool]r´   r   r   r   )r   s   "r   r   r   Á   sæ   € ÷ 4ñ 4à&ð4ð 
ð4ð ð	4ð
 ð4ð ð4ð ð4ð ð4ð ð4ð ð4ð  ð4ð ð4ð ð4ð ð4ð #ð4ð  ð!4ð" ð#4ð$ ð%4ð& ð'4ð( ð)4ð* !/ð+4ð, ð-4ð. ñ/4r   c                óP  € VR Jd   \        R4      h\        R/ R\        P                  bR\        P
                  bRVbRVbRVbRRbR	VbR
V bRVbR\        P                  P                  4       '       d   RMRbRVbRVbRVbRVbRV	bRV
bRVbRVbRVbRVbRVbRVbRVbRVbRVb # )Tú=ParoQuant benchmark: `sym=False` is disabled; use `sym=True`.Úmethodr   rŸ   r    rž   Údesc_actFr¡   rœ   r´   r4   r0   r/   r¢   r¤   r¥   r¦   r§   r¨   r©   r«   r¬   r­   r®   r¯   r±   r²   r³   r   )	rq   r   r   ÚPAROr
   Ú	PAROQUANTr$   r1   r2   )rœ   rž   rŸ   r    r¡   r¢   r¤   r¥   r¦   r§   r¨   r©   r«   r¬   r­   r®   r¯   r±   r²   r³   r´   s   $$$$$$$$$$$$$$$$$$$$$r   Úmake_paroquant_configr¾   Á   s9  € ð0 �$ƒÜÐXÓYÐYÜò Ü�{Š{ðä×Òðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ (ðô !Ÿ:™:×2Ñ2×4Ò4‰x¸%øðñ ðñ 0ðñ 0ðñ ,ðñ  6ðñ  &ð!ñ" $ð#ñ$ *ð%ñ& ð'ñ( ð)ñ*  ð+ñ, *ð-ñ. ,ð/ñ0 *ð1ñ2 $>ð3ð r   c               ó   € V ^8„  d   QhRR/# ©r   r   ÚNoner   )r   s   "r   r   r   ø   s   € ÷ !ñ !˜Tñ !r   c                ó�   € ? \         P                  P                  4       '       d!   \         P                  P                  4        R # R # ©N)r$   r1   r2   Úempty_cacher„   s   &r   Ú_cleanup_modelrÅ   ø   s-   € ØÜ‡z�z×Ñ× Ò Ü�
‰
×ÑÖ ñ !r   c               ó   € V ^8„  d   QhRR/# rÀ   r   )r   s   "r   r   r   þ   s   € ÷ 	2ñ 	2 dñ 	2r   c                ó²   € \        V R R4      pVf   R# \        VRR4      R8w  d   RVn        \        VRR4      f   \        VRR4      pVe	   W!n        R# R# R# )Ú	tokenizerNÚpadding_sideÚleftÚpad_token_idÚeos_token_id)rs   rÉ   rË   )rn   rÈ   rÌ   s   &  r   Ú_prepare_eval_tokenizerrÍ   þ   se   € Ü˜˜{¨DÓ1€IØÒÙÜˆy˜.¨$Ó/°6Ô9Ø!'ˆ	ÔÜˆy˜.¨$Ó/Ò7Ü˜y¨.¸$Ó?ˆØÒ#Ø%1Ö"ñ $ñ 8r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úmax_rowsúOptional[int]Úsuite_kwargsúOptional[dict[str, Any]]r   zdict[str, Any] | Noner   )r   s   "r   r   r   
  s&   € ÷ ñ Øðà*ðð ñr   c                óh   € \        T;'       g    / 4      pV e   \        V 4      VR&   T;'       g    R # )NrÏ   )rI   rW   )rÏ   rÑ   Úmergeds   && r   Ú_suite_kwargsrÕ   
  s6   € ô �,×$Ð$ "Ó%€FØÒÜ  ›]ˆˆzÑØ�>ˆ>�TÐr   c                 ó^   €  ^ RI Hp HpHp YT3#   \         d   p\        R4      ThRp?ii ; i)r   )ÚevaluateÚformat_eval_result_tableÚget_eval_task_resultsz�Evaluation helpers are now located in `tests/eval.py`. Import this module from a test checkout when running ParoQuant benchmarks.N)Ú
tests.evalr×   rØ   rÙ   rc   ÚModuleNotFoundError)r×   rØ   rÙ   Úexcs       r   Ú_load_eval_helpersrÝ     sE   € ðßXÑXð Ð/DÐDÐDøô ô Ü!ðYó
ð ð	ûðús   ‚
 �,›'§,r   ÚbackendÚeval_model_argsÚeval_suite_kwargsc               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )r   Úmodel_or_id_or_pathr   Úeval_batch_sizeú	int | strÚeval_max_rowsrÐ   r   rÞ   úBACKEND | str | Nonerß   rÒ   rà   r   ztuple[dict[str, Any], float]r   )r   s   "r   r   r      sZ   € ÷ 9ñ 9àð9ð ð9ð !ð	9ð
 ð9ð "ð9ð .ð9ð 0ð9ð "ñ9r   c                ó  € R R/p\        V4      pVe   W‡R&   V'       d   VP                  V4       \        4       w  p	 p
\        P                  ! 4       pV	! V R.VVVR\        W&4      R7      pV\        P                  ! 4       V,
          3# )rÉ   rÊ   ÚdtypeÚgsm8k_platinum_cotT)râ   ÚtasksrÞ   Ú
batch_sizeÚ
model_argsÚapply_chat_templaterÑ   )r)   ÚupdaterÝ   ÚtimeÚperf_counterrÕ   )râ   rã   rå   r   rÞ   rß   rà   rì   Únormalized_dtyper×   Ú_Ú
wall_startÚeval_results   $$$$$$$      r   Ú_run_evalution_path_evalrõ      s–   € ð ! &Ð)€JÜ-¨kÓ:ÐØÒ#Ø.�7ÑßØ×Ñ˜/Ô*Ü'Ó)�N€Hˆa�Ü×"Ò"Ó$€JÙØ/Ø#Ð$ØØ"ØØ Ü" =ÓDô€Kð œ×)Ò)Ó+¨jÕ8Ð8Ð8r   Ú
model_pathrã   rå   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rö   r!   rã   rW   rå   rÐ   r   údict[str, Any]r   )r   s   "r   r   r   >  s2   € ÷ ñ àðð ðð !ð	ð
 ñr   c                ó<   € \        V \        P                  VVR 7      # ))rö   r   rã   rå   )Úrun_dense_evalr$   r   )rö   rã   rå   s   $$$r   Úrun_fp16_evalrû   >  s!   € ô ØÜ—M‘MØ'Ø#ô	ð r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   rö   r!   r   r   rã   rW   rå   rÐ   r   rø   r   )r   s   "r   r   r   L  s<   € ÷ ñ àðð ðð ð	ð
 !ðð ñr   c           
     ó¶   € \        V4      p\        V VVVR 7      w  rV\        4       w  rxp	V	! V4      p
V! V4      pRR\        V4       2R\        V4      RVRV
RV/# ))râ   rã   rå   r   ÚmodeÚdense_rè   Úeval_wall_sÚmetricsÚ
eval_table)r)   rõ   rÝ   r,   )rö   r   rã   rå   rñ   rô   Úwall_srò   rØ   rÙ   r  Ú	formatteds   $$$$        r   rú   rú   L  s„   € ô .¨kÓ:ÐÜ2Ø&Ø'Ø#Ø$ô	Ñ€Kô :LÓ9MÑ6€AÐ!6Ù# KÓ0€GÙ(¨Ó5€Ià�&œÐ&6Ó7Ð8Ð9Ø”Ð.Ó/Ø�vØ�7Ø�iðð r   é   c               ó    € V ^8„  d   QhRRRR/# )r   rŠ   zset[str]rÏ   rW   r   )r   s   "r   r   r   f  s   € ÷ &ñ &¨(ð &¸cñ &r   c                ó*   aa€ / o. pR  VV3R llpSW#3# )c               ó   € V ^8„  d   QhRR/# )r   r^   r!   r   )r   s   "r   r   Ú-_prehook_capture_inputs.<locals>.__annotate__j  s   € ÷ ñ ˜ñ r   c                ó   <a € VVV 3R  lpV# )c                óÊ   <€ SS9   g	   V'       g   R # V^ ,          P                  4       pVP                  RVP                  R,          4      R S P                  4       pVSS&   R # )Néÿÿÿÿ)ÚdetachÚreshapeÚshapeÚ
contiguous)Ú_moduleÚinputsÚxÚcapturedrÏ   r^   s   && €€€r   ÚhookÚ8_prehook_capture_inputs.<locals>.make_hook.<locals>.hookk  sS   ø€ Ø�xÔ§vÙØ�q•	× Ñ Ó"ˆAØ—	‘	˜"˜aŸg™g b�kÓ*¨9¨HÐ5×@Ñ@ÓBˆAØˆH�T‹Nr   r   )r^   r  r  rÏ   s   f €€r   Ú	make_hookÚ*_prehook_capture_inputs.<locals>.make_hookj  s   ù€ ÷	ð ˆr   r   )rŠ   rÏ   Úhooksr  r  s   &f  @r   Ú_prehook_capture_inputsr  f  s$   ù€ Ø(*€HØ€E÷ñ ð �UÐ%Ð%r   c               ó    € V ^8„  d   QhRRRR/# )r   Úsamplerø   r   zdict[str, torch.Tensor]r   )r   s   "r   r   r   w  s   € ÷ %uñ %u°ð %uÐCZñ %ur   c           
     ó€  € R V9   dÚ   \         P                  ! VR ,          \         P                  R7      pVP                  ^8X  d   VP	                  ^ 4      pVP                  R4      pVf(   \         P                  ! V\         P                  R7      pMH\         P                  ! V\         P                  R7      pVP                  ^8X  d   VP	                  ^ 4      pR VRV/# V P                  pRV9   d›   VP                  VR,          RRR7      pV! VRRR7      pR VR ,          P                  \         P                  R7      RVP                  R\         P                  ! VR ,          4      4      P                  \         P                  R7      /# R	V9   d‡   V! VR	,          RRR7      pR VR ,          P                  \         P                  R7      RVP                  R\         P                  ! VR ,          4      4      P                  \         P                  R7      /# \        R
\        VP                  4       4       24      h)Ú	input_ids)rè   Úattention_maskÚmessagesF)ÚtokenizeÚadd_generation_promptTÚpt)Úadd_special_tokensÚreturn_tensorsÚtextzDUnsupported calibration sample keys for ParoQuant kernel benchmark: )r$   Ú	as_tensorÚlongÚndimÚ	unsqueezer%   Ú	ones_likerÈ   rí   Útorq   r’   Úkeys)rn   r  r  r  rÈ   ÚrenderedÚ	tokenizeds   &&     r   Ú_tokenize_calibration_sampler0  w  sî  € Ø�fÔÜ—O’O F¨;Õ$7¼u¿z¹zÔJˆ	Ø�>‰>˜QÔØ!×+Ñ+¨AÓ.ˆIØŸ™Ð$4Ó5ˆØÒ!Ü"Ÿ_š_¨Y¼e¿j¹jÔI‰Nä"Ÿ_š_¨^Ä5Ç:Á:ÔNˆNØ×"Ñ" aÔ'Ø!/×!9Ñ!9¸!Ó!<�à˜Ø˜nð
ð 	
ð
 —‘€IØ�VÔØ×0Ñ0Ø�:ÕØØ"'ð 1ó 
ˆñ
 ˜h¸4ÐPTÔUˆ	à˜ ;Õ/×2Ñ2¼¿¹Ð2ÓDØ˜iŸm™mÐ,<¼e¿oºoÈiÐXcÕNdÓ>eÓf×iÑiÔpu×pzÑpzÐiÓ{ð
ð 	
ð
 �ÔÙ˜f V�nÀÐVZÔ[ˆ	à˜ ;Õ/×2Ñ2¼¿¹Ð2ÓDØ˜iŸm™mÐ,<¼e¿oºoÈiÐXcÕNdÓ>eÓf×iÑiÔpu×pzÑpzÐiÓ{ð
ð 	
ô
 Ð[Ô\bÐci×cnÑcnÓcpÓ\qÐ[rÐsÓ
tÐtr   c               ó    € V ^8„  d   QhRRRR/# )r   r£   r   r   r	   r   )r   s   "r   r   r   Ÿ  s   € ÷ ñ  ð Ð0Eñ r   c                ó’  € \        V P                  V P                  V P                  V P                  V P
                  V P                  V P                  R JRV P                  V P                  R7
      P                  V P                  P                  R7      pVP                  P                  V P                  4       VP                  P                  V P                  4       VP                  P                  V P                  4       V P                  e&   VP                  P                  V P                  4       VP                   P                  V P                   4       VP"                  P                  V P"                  4       VP$                  P                  V P$                  4       VP'                  4        VP)                  4        V# )NT)
rŸ   r    rž   r»   Úin_featuresÚout_featuresÚbiasÚregister_buffersr¡   Ú
fp32_accum©r4   )r	   rŸ   r    rž   r»   r3  r4  r5  r¡   r7  r,  Úqweightr4   Úcopy_ÚqzerosÚscalesÚpairsÚthetaÚchannel_scalesÚ	post_initÚeval)r£   Úcloneds   & r   Ú_clone_triton_modulerC  Ÿ  s:  € Ü"Ø�[‰[Ø×$Ñ$Ø�J‰JØ—‘Ø×&Ñ&Ø×(Ñ(Ø�[‰[ Ð$ØØ�[‰[Ø×$Ñ$ô÷ 	�b�—‘×%Ñ%€bÓ&ð ð ‡N�N×Ñ˜Ÿ™Ô(Ø
‡M�M×Ñ˜Ÿ™Ô&Ø
‡M�M×Ñ˜Ÿ™Ô&Ø‡{�{ÒØ�‰×Ñ˜&Ÿ+™+Ô&Ø
‡L�L×Ñ�v—|‘|Ô$Ø
‡L�L×Ñ�v—|‘|Ô$Ø
×Ñ×Ñ × 5Ñ 5Ô6Ø
×ÑÔØ
‡K�K„MØ€Mr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r£   r   r  útorch.Tensorr   r   )r   s   "r   r   r   ¹  s!   € ÷ .ñ .˜:ð .¨,ð .¸<ñ .r   c                ó  € \         P                  ! 4       ;_uu_ 4        VP                  RVP                  R,          4      pV P	                  V4      pV P                  V4      uuRRR4       #   + '       g   i     R# ; i)r‚   Nr  )r$   Úinference_moder  r  Ú_rotate_inputsÚ_forward_dense)r£   r  Úx_flatÚrotateds   &&  r   Ú_dense_forwardrL  ¹  sV   € Ü	×	Ò	×	Õ	Ø—‘˜2˜qŸw™w r�{Ó+ˆØ×'Ñ'¨Ó/ˆØ×$Ñ$ WÓ-÷ 
 ×	×	Ó	ús   žAA.Á.A?	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r  rE  ÚwarmuprW   Úitersr   r·   r   )r   s   "r   r   r   À  s)   € ÷ 7ñ 7 Lð 7¸#ð 7È#ð 7ÐW\ñ 7r   c                ój  € \         P                  ! 4       ;_uu_ 4        \        V4       F  pV ! V4       K  	  VP                  P                  R 8X  d*   \         P
                  P                  VP                  4       \        P                  ! 4       p\        V4       F  pV ! V4       K  	  VP                  P                  R 8X  d*   \         P
                  P                  VP                  4       RRR4       \        P                  ! 4       X,
          R,          V,          #   + '       g   i     L:; i)r1   Ng     @�@)	r$   rG  re   r4   Útyper1   Úsynchronizerï   rð   )r£   r  rN  rO  rò   Ústarts   &&&&  r   Ú_benchmark_module_msrT  À  sÃ   € Ü	×	Ò	×	Õ	Ü�v–ˆAÙ�1ŽIñ à�8‰8�=‰=˜FÔ"Ü�J‰J×"Ñ" 1§8¡8Ô,Ü×!Ò!Ó#ˆÜ�u–ˆAÙ�1ŽIñ à�8‰8�=‰=˜FÔ"Ü�J‰J×"Ñ" 1§8¡8Ô,÷ 
 ô ×ÒÓ %Õ'¨3Õ.°Õ6Ð6÷ 
 ×	ús   žCD"Ä"D2	Úcapture_rowsrN  rO  c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   Úcalibration_datasetrX   rU  rW   rN  rO  r   úlist[list[str]]r   )r   s   "r   r   r   Î  sC   € ÷ Eñ Eà-ðEð ð	Eð
 ðEð ðEð ñEr   c               óº  a€ V P                  4        UUu/ uF  w  rV\        V\        4      '       g   K  WVbK!  	  pppV'       g   . # \        \	        V4      VR 7      w  r‰p
VP                  4        F,  w  poV	P                  SP                  V
! V4      4      4       K.  	   V^ ,          p\        W4      p\        V P                  P                  4       4      P                  p\        P                  ! 4       ;_uu_ 4        V P                  VR,          P                  VR7      VR,          P                  VR7      R7       RRR4       V	 F  pVP!                  4        K  	  . pVP                  4        EF  w  poVP#                  V4      pVe   VP%                  4       ^ 8X  d   K3  VP                  SP&                  P                  VP(                  R7      p\+        S4      p\        P                  ! 4       ;_uu_ 4        \-        SV4      pS! V4      P/                  V4      pV! V4      P/                  V4      pRRR4       XX,
          P1                  4       pXV,
          P1                  4       pVV,
          P1                  4       p\3        V3R lVW4R7      p\3        SVW4R7      p\3        VVW4R7      pVP                  V\5        \7        VP8                  4      4      VP;                  4       P=                  4       R	 VP?                  4       P=                  4       R	 VP;                  4       P=                  4       R	 VP?                  4       P=                  4       R	 VP;                  4       P=                  4       R	 VR
 VR
 VR
 .
4       ?EK  	  V# u uppi   + '       g   i     EL_; i  T	 F  pTP!                  4        K  	  i ; i  + '       g   i     EL—; i))rÏ   r  r8  r  )r  r  N)r4   rè   c                ó   <€ \        SV 4      # rÃ   )rL  )Úinpr£   s   &€r   Ú<lambda>Ú9benchmark_quantized_first_layer_kernels.<locals>.<lambda>ÿ  s   ø€ ´NÀ6È3Ô4Or   )rN  rO  ú.6fú.3f) Únamed_modulesr    r   r  r“   rJ   rM   Úregister_forward_pre_hookr0  Únextrn   Ú
parametersr4   r$   rG  r,  Úremover%   Únumelr9  rè   rC  rL  Ú
reshape_asÚabsrT  r!   rp   r  ÚmaxrQ   Úmean)rn   rW  rU  rN  rO  r^   r£   Úqmodulesr  r  r  r  r/  Úmodel_devicer  rV   r  Útriton_moduleÚdenseÚcuda_outÚ
triton_outÚ	cuda_diffÚtriton_diffÚcuda_vs_tritonÚdense_msÚcuda_msÚ	triton_mss   &&$$$ `                    r   Ú'benchmark_quantized_first_layer_kernelsrv  Î  s:  ø€ ð "×/Ñ/Ô1ôá1‰LˆDÜ�fœj×)ô 	ˆŠÙ1ð ñ ÷
 Øˆ	ä!8¼¸X»ÐQ]Ô!^Ñ€H�YØ Ÿ™Ö(‰ˆˆfØ�‰�V×5Ñ5±iÀ³oÓFÖGñ )ðØ$ QÕ'ˆÜ0°Ó?ˆ	Ü˜EŸK™K×2Ñ2Ó4Ó5×<Ñ<ˆÜ×!Ò!×#Õ#Ø�K‰KØ# KÕ0×3Ñ3¸<Ð3ÓHØ(Ð)9Õ:×=Ñ=À\Ð=ÓRð ô ÷ $ó ˆDØ�K‰KŽMñ ð €DØ Ÿ™×(‰ˆˆfØ�L‰L˜ÓˆØŠ9˜Ÿ™›	 QœÙØ�D‰D˜Ÿ™×-Ñ-°Q·W±WˆDÓ=ˆÜ,¨VÓ4ˆÜ×!Ò!×#Õ#Ü" 6¨1Ó-ˆEÙ˜a“y×+Ñ+¨EÓ2ˆHÙ& qÓ)×4Ñ4°UÓ;ˆJ÷ $ð
  Õ%×*Ñ*Ó,ˆ	Ø! EÕ)×.Ñ.Ó0ˆØ" ZÕ/×4Ñ4Ó6ˆä'Ô(OÐQRÐ[aÔoˆÜ& v¨q¸ÔMˆÜ(¨¸À&ÔVˆ	à�‰àÜ”E˜!Ÿ'™'“NÓ#Ø—=‘=“?×'Ñ'Ó)¨#Ð.Ø—>‘>Ó#×(Ñ(Ó*¨3Ð/Ø—?‘?Ó$×)Ñ)Ó+¨CÐ0Ø×#Ñ#Ó%×*Ñ*Ó,¨SÐ1Ø!×%Ñ%Ó'×,Ñ,Ó.¨sÐ3Ø˜C�.Ø˜3�-Ø˜S�/ðô	
ó ñC )ðF €Kùó{÷  $×#Ð#ûó ˆDØ�K‰KŽMò ú÷ $×#Ð#ús<   •N´NÂ!AN+ Ã?ANÅN+ È ;O	ÎN(	Î"	N+ Î+OÏ	Oc               ó    € V ^8„  d   QhRRRR/# )r   Úsnapshotr{   r   rX  r   )r   s   "r   r   r     s   € ÷ ñ Ð4ð ¸ñ r   c                ó  € V P                  4        UUu. uF+  w  r\        VP                  R ^ 4      4      '       g   K(  W3NK-  	  ppp\        R V 4       4      ;'       g    RpVP	                  R RR7       V UUu. uFø  w  rT\        \        VP                  R ^ 4      4      4      \        VP                  RR4      4      R \        VP                  R	R4      4      \        \        VP                  R ^ 4      4      ^4      ,          R \        VP                  R	R4      4      R R
\        VP                  R	R4      4      ,          V,          R R2\        VP                  R4      ;'       g    R4      .NKú  	  upp# u uppi u uppi )Úcountc              3  ó\   "  € T F"  w  r\        VP                  R R4      4      x € K$  	  R# 5i)Útotalr°   N©r·   r%   )Ú.0rò   Ústats   &  r   Ú	<genexpr>Ú_region_rows.<locals>.<genexpr>  s%   é € ÐG¹Y±'°!”�d—h‘h˜w¨Ó,×-Ð-»Yùs   ‚*,g      ð?c                óF   € \        V ^,          P                  RR4      4      # )r‚   r|  r°   r}  ©rQ   s   &r   r\  Ú_region_rows.<locals>.<lambda>  s   € ¤E¨$¨q­'¯+©+°g¸sÓ*CÔ$Dr   T©rR   ÚreverseÚlastr°   r_  r|  g      Y@z.1fÚ%Úsourcer8   )rJ   rW   r%   ÚsumÚsortr!   r·   rh  )rx  r^   r  Ú	populatedr|  s   &    r   Ú_region_rowsr�    sc  € ð #Ÿ.™.Ô*ôá*‰JˆDÜˆt�x‰x˜ Ó#×$ô 	ˆ‹Ù*ð ñ ô
 ÑG¹YÓGÓG×NÐNÈ3€EØ‡N�NÑDÈd€NÔSñ $ôñ $‰JˆDð Ü”�D—H‘H˜W aÓ(Ó)Ó*Ü�T—X‘X˜f cÓ*Ó+¨CÐ0Ü�T—X‘X˜g sÓ+Ó,¬s´3°t·x±xÀÈÓ7KÓ3LÈaÓ/PÕPÐQTÐUÜ�T—X‘X˜g sÓ+Ó,¨SÐ1Ø”u˜TŸX™X g¨sÓ3Ó4Õ4°uÕ<¸SÐAÀÐCÜ�—‘˜Ó"×(Ð( bÓ)ó	
ñ $òð ùóùós   ”%E?¾E?Á=C>Fc               ó    € V ^8„  d   QhRRRR/# )r   Ú
quant_logszdict[str, list[dict[str, Any]]]r   rX  r   )r   s   "r   r   r   ,  s   € ÷ ñ Ð"Að Àoñ r   c                ó¾  € . pV P                  R . 4       F°  pVP                  \        VP                  RR4      4      \        VP                  RR4      4      \        VP                  RR4      4      \        VP                  RR4      4      \        VP                  RR4      4      \        VP                  RR4      4      .4       K²  	  VP                  R R	R
7       V# )Ú	paroquantr”   r8   r£   zfeat: in, outÚsamplesÚlossrï   c                ó:   € \        V R,          ;'       g    R4      # )r‚   r°   r  )r·   rƒ  s   &r   r\  Ú#_module_time_rows.<locals>.<lambda>9  s   € œu T¨"¥X§_ _°Ô5r   Tr…  )r%   rM   r!   r‹  )r�  rV   Úentrys   &  r   Ú_module_time_rowsr—  ,  s·   € Ø€DØ—‘ ¨RÖ0ˆØ�‰ä�E—I‘I˜g rÓ*Ó+Ü�E—I‘I˜h¨Ó+Ó,Ü�E—I‘I˜o¨rÓ2Ó3Ü�E—I‘I˜i¨Ó,Ó-Ü�E—I‘I˜f bÓ)Ó*Ü�E—I‘I˜f bÓ)Ó*ðö		
ñ 1ð 	‡I�IÑ5¸t€IÔDØ€Kr   Úresult_metaÚeval_backendÚrun_kernel_benchc          ,     óp   € V ^8„  d   QhRRRRRRRRR	RR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR /# )!r   rö   r!   rœ   r{   r   r   Úcalibration_rowsrW   Úcalibration_concat_sizeÚquant_batch_sizerã   rä   rå   rÐ   rß   rÒ   rà   rž   r¶   Úfused_opt_rotationr¢   r¤   r¥   r¦   r§   r¨   r˜  r™  ræ   rš  r   rø   r   )r   s   "r   r   r   =  sþ   € ÷ fñ fàðfð 'ðfð ð	fð
 ðfð !ðfð ðfð ðfð !ðfð .ðfð 0ðfð 
ðfð ðfð ðfð ðfð  ð!fð" ð#fð$  ð%fð& ð'fð( *ð)fð* 'ð+fð, ð-fð. ñ/fr   c                ó„  € V
R Jd   \        R4      hV'       d   RMR\        P                  R&   \        V4      p\	        V4      p\
        P                  P                  4       '       d   \
        P                  P                  4        \        VV
VVVVVVR7      p\        P                  ! V VRVR7      p\        V4        \        P                  ! 4       pVP                  VVRVR	7      p\        P                  ! 4       V,
          p\
        P                  P                  4       '       d   VP                   P#                  R
4       V'       d   \%        VV4      M. p\&        P(                  ! RR7      ;_uu_ 4       p\        P                  ! 4       pVP+                  V4       \        P                  ! 4       V,
          p\-        VVVVVVV	R7      w  p p!\/        4       w  p"p#p$RRR4       / RRbR\1        4       bR\3        V4      bRVbRVbRV
bRVbRXbRX!bRVbRVP4                  P7                  4       bR\9        V4      bR\;        VP4                  P7                  4       4      bRX$! X 4      bRX#! V 4      bRVbp%V'       d   V%P=                  V4       V%\?        V4       #   + '       g   i     LÇ; i  \?        T4       i ; i) Tr¹   Ú1Ú0Ú&GPTQMODEL_PAROQUANT_OPT_FUSED_ROTATION)rœ   rž   r¢   r¤   r¥   r¦   r§   r¨   F)Úquantize_configÚtrust_remote_coderè   Údesc)r�  Úcalibration_sortrë   r0   Úparoquant_evalution_)Úprefix)râ   rã   rå   r   rÞ   rß   rà   Nrþ   Úparoquant_prefix_layersr4   rè   rŸ  r¢   rž   Úquant_wall_sÚsave_wall_sr   r�  Úquant_region_snapshotÚmodule_time_rowsÚregion_rowsÚeval_metricsr  Úkernel_rows) rq   ÚosÚenvironr)   ri   r$   r1   r2   rÄ   r¾   r   ÚloadrÍ   rï   rð   Úquantizern   r,  rv  ÚtempfileÚTemporaryDirectoryÚsaverõ   rÝ   r5   r,   Úquant_region_timerrx  r—  r�  rî   rÅ   )&rö   rœ   r   rœ  r�  rž  rã   rå   rß   rà   rž   rŸ  r¢   r¤   r¥   r¦   r§   r¨   r˜  r™  rš  rñ   rW  Úqcfgrn   Úquant_startr�  r«  r±  Útemp_dirÚ
save_startr¬  rô   r   rò   rØ   rÙ   Úresults&   $$$$$$$$$$$$$$$$$$$$$                 r   Ú_run_paroquant_caser¿  =  sá  € ð0 �$ƒÜÐXÓYÐYßBT¹3ÐZ]„B‡J�JÐ7Ñ8Ü-¨kÓ:Ðä-Ð.>Ó?Ðä‡z�z×Ñ× Ò Ü�
‰
×ÑÔ ä ØØØØ/Ø/Ø+Ø5Ø%ô	€Dô �NŠNØØØØô	€Eô ˜EÔ"ð3Ü×'Ò'Ó)ˆØ—^‘^ØØ$;Ø#Ø'ð	 $ó 
ˆ
ô ×(Ò(Ó*¨[Õ8ˆä�:‰:×"Ñ"×$Ò$Ø�K‰K�N‰N˜8Ô$ç]mÔ=¸eÐEXÔYÐsuˆÜ×(Ò(Ð0F×GÕGÈ8Ü×*Ò*Ó,ˆJØ�J‰J�xÔ Ü×+Ò+Ó-°
Õ:ˆKÜ'?Ø$,Ø /Ø+Ø,Ø$Ø /Ø"3ô(Ñ$ˆK˜ô BTÓAUÑ>ˆAÐ'Ð)>÷ Hð
ØÐ-ð
àÔ/Ó1ð
ð ”\Ð"2Ó3ð
ð !Ð"4ð	
ð
 ˜ð
ð �3ð
ð ˜Lð
ð ˜;ð
ð ˜;ð
ð ˜*ð
ð $ U×%=Ñ%=×%FÑ%FÓ%Hð
ð Ô 1°*Ó =ð
ð œ<¨×(@Ñ(@×(IÑ(IÓ(KÓLð
ð Ñ1°+Ó>ð
ð Ñ2°;Ó?ð
ð  ˜;ð!
ˆ÷$ Ø�M‰M˜+Ô&Øä�uÕ÷K H×GûôJ 	�uÕús-   Ã BJ2 Å-J2 Å:A&JÇ B3J2 ÊJ/	Ê*J2 Ê2J?rz   rœ  r�  rž  rŸ  c          &     ód   € V ^8„  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRRRRRRRRRRRR/# )r   rö   r!   rz   rW   r   r   rœ  r�  rž  rã   rä   rå   rÐ   rß   rÒ   rà   rž   r¶   rŸ  r¢   r¤   r¥   r¦   r§   r¨   r   rø   r   )r   s   "r   r   r   ¦  sÈ   € ÷ :ñ :àð:ð ð:ð ð	:ð
 ð:ð !ð:ð ð:ð ð:ð !ð:ð .ð:ð 0ð:ð 
ð:ð ð:ð ð:ð ð:ð  ð!:ð" ð#:ð$  ð%:ð& ð':ð( ñ):r   c                óö  € \        V4      p\        P                  ! V \        \        P
                  \        P                  R 7      RV\        4       R7      p\        VVR7      p\        V4       \        R/ RV bRVbRVbRVbRVbR	VbR
VbRVbRVbRV	bRV
bRVbRVbRVbRVbRVbRVbRVbRV\        P                  8X  d   \        P                  MRbRV\        P                  8g  bRRRR\!        V4      RV/b # )©rº   r   F©r¤  r¥  rè   Ú
device_maprƒ   rö   rœ   r   rœ  r�  rž  rã   rå   rß   rà   rž   rŸ  r¢   r¤   r¥   r¦   r§   r¨   r™  Nrš  r˜  rþ   rª  rz   r   )r)   r   r´  r   r   r¼   r
   r½   r9   r   rÅ   r¿  r$   r   r   ÚPAROQUANT_TRITONrW   )rö   rz   r   rœ  r�  rž  rã   rå   rß   rà   rž   rŸ  r¢   r¤   r¥   r¦   r§   r¨   rñ   Úprobe_modelrœ   s   $$$$$$$$$$$$$$$$$$   r   Úrun_paroquant_first_layer_caserÇ  ¦  si  € ô* .¨kÓ:ÐÜ—.’.ØÜ&¬f¯k©kÄ&×BRÑBRÔSØØÜ)Ó+ô€Kô )¨ÐGWÔX€GÜ�;Ôäò Ùðáðñ %ðñ *ð	ñ
 !8ðñ *ðñ (ðñ $ðñ (ðñ ,ðñ ðñ .ðñ ðñ 0ðñ 0ðñ  ,ð!ñ"  6ð#ñ$ &ð%ð& 2BÄUÇ^Á^Ô1S”W×-Ò-ÐY]øð'ð( *¬U¯^©^Ò;ð)ð, Ð-Ø¤Ð$4Ó 5Ø˜ñ
ð+ð r   c          (     óh   € V ^8„  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRRRRRRRRRRRRRR/# )r   rö   r!   r~   rW   r‡   r   r   rœ  r�  rž  rã   rä   rå   rÐ   rß   rÒ   rà   rž   r¶   rŸ  r¢   r¤   r¥   r¦   r§   r¨   r   rø   r   )r   s   "r   r   r   ã  sÒ   € ÷ *ñ *àð*ð ð*ð ð	*ð
 ð*ð ð*ð !ð*ð ð*ð ð*ð !ð*ð .ð*ð 0ð*ð 
ð*ð ð*ð ð*ð  ð!*ð" ð#*ð$ ð%*ð&  ð'*ð( ð)*ð* ñ+*r   c                óˆ   € \        R/ R V bRVbRV.bRVbRVbRVbRVbRVbRVbR	V	bR
V
bRVbRVbRVbRVbRVbRVbRVbRVb # )rö   r~   rŠ   r   rœ  r�  rž  rã   rå   rß   rà   rž   rŸ  r¢   r¤   r¥   r¦   r§   r¨   r   )Ú#run_paroquant_selected_modules_case)rö   r~   r‡   r   rœ  r�  rž  rã   rå   rß   rà   rž   rŸ  r¢   r¤   r¥   r¦   r§   r¨   s   $$$$$$$$$$$$$$$$$$$r   Ú run_paroquant_single_module_caserË  ã  sÍ   € ô, /ò Ùðáðð "‘]ðñ  ð	ñ
 *ðñ !8ðñ *ðñ (ðñ $ðñ (ðñ ,ðñ ðñ .ðñ ðñ 0ðñ  0ð!ñ" ,ð#ñ$  6ð%ñ& &ð'ð r   c          (     óh   € V ^8„  d   QhRRRRRRRRR	RR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRR/# )r   rö   r!   r~   rW   rŠ   rŽ   r   r   rœ  r�  rž  rã   rä   rå   rÐ   rß   rÒ   rà   rž   r¶   rŸ  r¢   r¤   r¥   r¦   r§   r¨   r   rø   r   )r   s   "r   r   r     sÒ   € ÷ =ñ =àð=ð ð=ð .ð	=ð
 ð=ð ð=ð !ð=ð ð=ð ð=ð !ð=ð .ð=ð 0ð=ð 
ð=ð ð=ð ð=ð  ð!=ð" ð#=ð$ ð%=ð&  ð'=ð( ð)=ð* ñ+=r   c                óf  € \        V4      p\        P                  ! V \        \        P
                  \        P                  R 7      RV\        4       R7      p\        VWR7      p\        V4       \        R!/ RV bRVbRVbRVbRVbR	VbR
VbRVbRV	bRV
bRVbRVbRVbRVbRVbRVbRVbRVbRV\        P                  8X  d   \        P                  MRbRV\        P                  8g  bRRRR\!        V4      RRP#                  R V 4       4      R V Uu. uF  p\%        V4      NK  	  upRV/b # u upi )"rÂ  FrÃ  r‰   rö   rœ   r   rœ  r�  rž  rã   rå   rß   rà   rž   rŸ  r¢   r¤   r¥   r¦   r§   r¨   r™  Nrš  r˜  rþ   Úparoquant_selected_modulesr~   r‡   Ú,c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irÃ   )r!   )r~  r^   s   & r   r€  Ú6run_paroquant_selected_modules_case.<locals>.<genexpr>I  s   é € Ð#G¹,°$¤C¨§I I»,ùs   ‚rŠ   r   )r)   r   r´  r   r   r¼   r
   r½   r9   r‹   rÅ   r¿  r$   r   r   rÅ  rW   r‘   r!   )rö   r~   rŠ   r   rœ  r�  rž  rã   rå   rß   rà   rž   rŸ  r¢   r¤   r¥   r¦   r§   r¨   rñ   rÆ  rœ   r^   s   $$$$$$$$$$$$$$$$$$$    r   rÊ  rÊ    s˜  € ô, .¨kÓ:ÐÜ—.’.ØÜ&¬f¯k©kÄ&×BRÑBRÔSØØÜ)Ó+ô€Kô -¨[ÀIÔi€GÜ�;Ôäò Ùðáðñ %ðñ *ð	ñ
 !8ðñ *ðñ (ðñ $ðñ (ðñ ,ðñ ðñ .ðñ ðñ 0ðñ 0ðñ  ,ð!ñ"  6ð#ñ$ &ð%ð& 2BÄUÇ^Á^Ô1S”W×-Ò-ÐY]øð'ð( *¬U¯^©^Ò;ð)ð, Ð0Øœ˜Y›Ø˜3Ÿ8™8Ñ#G¹,Ó#GÓGØ±<Ó@±<¨4œS žY±<Ñ@Ø˜ñ
ð+ð ùò2 As   ÄD.c               ó    € V ^8„  d   QhRRRR/# )r   Úcasesrø   r   rX  r   )r   s   "r   r   r   P  s   € ÷ ñ ˜Nð ¨ñ r   c                 óx  € . pV  EF0  pVP                  R 4      ;'       g    VP                  R4      ;'       g    / pVP                  R/ 4      pVP                  R4      pVP                  R4      ;'       g    VP                  RR4      pTP                  T\        VP                  RR4      4      \        VP                  RR4      4      \        VP                  R	R4      4      Vf   RM\        V4      R
 RV9  d   RM\        VR,          4      R RV9  d   RM\        VR,          4      R .4       EK3  	  V# )r  r°  ré   zacc,numÚlabelrþ   r8   r¢   rž   rŸ  r^  r«  r_  r   )r%   rM   r!   r·   )rÓ  rV   ÚcaseÚmetricÚgsm8kÚscorerÕ  s   *      r   Úcomparison_rowsrÚ  P  s  € Ø€DÜˆØ—‘˜)Ó$×FÐF¨¯©°Ó(@×FÐFÀBˆØ—
‘
Ð/°Ó4ˆØ—	‘	˜)Ó$ˆØ—‘˜Ó!×9Ð9 T§X¡X¨f°bÓ%9ˆØ�‰àÜ�D—H‘H˜[¨"Ó-Ó.Ü�D—H‘H˜U BÓ'Ó(Ü�D—H‘HÐ1°2Ó6Ó7Ø’m‘¬E°%«L¸Ð+=Ø$¨DÔ0‘¼¸tÀNÕ?SÓ9TÐUXÐ8YØ#¨4Ô/‘¼¸dÀ=Õ>QÓ8RÐSVÐ7Wð÷
	
ñ ð  €Kr   c               ó    € V ^8„  d   QhRRRR/# )r   rÖ  rø   r   zdict[str, str]r   )r   s   "r   r   r   e  s   € ÷ "ñ "˜^ð "°ñ "r   c                ó  € R \        \        V 4      . RORR7      R\        V P                  R. 4      . RORR7      R\        V P                  R. 4      . RORR7      R\        V P                  R. 4      . RORR7      R	V P                  R
R4      /# )Ú
comparisonÚgrid)ÚheadersÚtablefmtÚmodule_timesr®  Úregionsr¯  Úkernelsr±  rA  r  r8   )rÖ  r¢   rž   Ú	fused_optré   r«  r   )r”   r£   Úfeatr’  r“  Útime_s)Úregionrz  Úlast_sÚavg_sÚtotal_sÚpctr‰  )
r£   Úinput_shapeÚcuda_max_absÚcuda_mean_absÚtriton_max_absÚtriton_mean_absÚcuda_vs_triton_max_absrs  rt  ru  )r   rÚ  r%   )rÖ  s   &r   Úrender_case_tablesrò  e  sœ   € à”lÜ˜DÓ!ÚrØô
ð
 	œØ�H‰HÐ'¨Ó,ÚLØô
ð
 	”<Ø�H‰H�] BÓ'ÚVØô
ð
 	”<Ø�H‰H�] BÓ'òð ô
ð  	�—‘˜ rÓ*ðA!ð !r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rÖ  rø   Úoutput_pathzstr | os.PathLike[str]r   rÁ   r   )r   s   "r   r   r   Š  s#   € ÷ :ñ :˜.ð :Ð7Mð :ÐRVñ :r   c           	     óø   € \        V4      pVP                  P                  R R R7       VP                  RRR7      ;_uu_ 4       p\        P
                  ! W^R R7       RRR4       R#   + '       g   i     R# ; i)T)ÚparentsÚexist_okÚwzutf-8)Úencoding)ÚindentÚ	sort_keysN)r   ÚparentÚmkdirÚopenÚjsonÚdump)rÖ  rô  r]   Úhandles   &&  r   Úwrite_case_jsonr  Š  sW   € Ü�Ó€DØ‡K�K×Ñ˜d¨TÐÔ2Ø	�‰�3 ˆ×	)Ô	)¨VÜ�	Š	�$ q°DÕ9÷ 
*×	)×	)Ò	)ús   ÁA(Á(A9	)gÍÌÌÌÌÌì?gffffffî?rÃ   )r  )é   é   )AÚ
__future__r   rÿ  r²  r¶  rï   Úpathlibr   Útypingr   r   r$   Ú	gptqmodelr   Ú&gptqmodel.nn_modules.qlinear.paroquantr   Ú-gptqmodel.nn_modules.qlinear.paroquant_tritonr	   Úgptqmodel.quantizationr
   r   Úgptqmodel.quantization.configr   Úgptqmodel.utils.backendr   Úgptqmodel.utils.loggerr   rb   r>   Ú_DEFAULT_MODELr)   r,   r5   r9   rT   ri   rx   r   r…   rŒ   r‹   r¾   rÅ   rÍ   rÕ   rÝ   rõ   rû   r   rú   r  r0  rC  rL  rT  rv  r�  r—  r¿  rÇ  rË  rÊ  rÚ  rò  r  r   r   r   Ú<module>r     s�  ðõ #ã Û 	Û Û Ý ß  ã å Ý =Ý Oß 1Ý 8Ý +Ý /ð DÐ ÙÐWÓXÐ Ø<€õõ$4õ>õBòõ6õ(,õõAõbõ'ðT4ð ð4ð ð	4ð
 ð4ð ð4ð ð4ð  "ð4ð  "ð4ð "ð4ð #%ð4ð ð4ð !ð4ð #ð4ð &1ð4ð  ð!4ð" ð#4ð$ "ð%4ð&  #ð'4ð( #ð)4ð* 26ð+4ð, "÷-4õn!õ	2÷ò	Eð9ð
 ð9ð %)ð9ð 15ð9ð 37÷9ð<à$ðð ðð $(÷	ðà$ðð —}‘}ðð ð	ð
 $(÷÷4&õ"%uõPõ4.÷7ðEð ð	Eð
 ðEð ÷EõPõ,ð"fð —}‘}ð	fð( -1ð)fð* *.ð+fð, "÷-fðR:à$ð:ð ð:ð —}‘}ð	:ð
 ð:ð $(ð:ð ð:ð "$ð:ð $(ð:ð 15ð:ð 37ð:ð ð:ð  $ð:ð ð:ð  "ð:ð   "ð!:ð" "ð#:ð$ #%ð%:ð& ÷':ðz*à$ð*ð
 —}‘}ð*ð ð*ð $(ð*ð ð*ð "$ð*ð $(ð*ð 15ð*ð 37ð*ð ð*ð  $ð*ð ð*ð   "ð!*ð"  "ð#*ð$ "ð%*ð& #%ð'*ð( ÷)*ðZ=à$ð=ð
 —}‘}ð=ð ð=ð $(ð=ð ð=ð "$ð=ð $(ð=ð 15ð=ð 37ð=ð ð=ð  $ð=ð ð=ð   "ð!=ð"  "ð#=ð$ "ð%=ð& #%ð'=ð( ÷)=õ@õ*"÷J:r   