+
    "Ý³jx  ã                  ó¬   € ^ RI Ht ^ RIt^ RIHtHt ^ RIt^RIHtH	t	H
t
HtHtHtHtHtHt RtR R ltR R	 ltR
RRR/R R lltR tR
R/R R lltR# )é    )ÚannotationsN)ÚOptionalÚTuple)	ÚFallbackÚQuantizeConfigÚ	SmoothLogÚ	SmoothMADÚSmoothOutlierÚSmoothPercentileÚSmoothPercentileAsymmetricÚSmoothRowColÚSmoothSoftNormg)ËÇº¸÷?c               ó$   € V ^8„  d   QhRRRRRR/# )é   Úblockútorch.TensorÚ
percentileÚfloatÚreturn© )Úformats   "Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/quantization/fallback_smooth.pyÚ__annotate__r      s!   € ÷ >ñ >�\ð >¨uð >¸ñ >ó    c                ód  € VR 8:  d   V P                  ^RR7      P                  # VR8¼  d   V P                  ^RR7      P                  # \        R \        VR,          R4      4      pW P                  ^,          ^,
          ,          p\	        \
        P                  ! V4      4      p\	        \
        P                  ! V4      4      pV P                  V^,           ^RR7      P                  pWT8X  d   V# V P                  V^,           ^RR7      P                  pWgV,
          W4,
          ,          ,           # )ç        T©ÚdimÚkeepdimç      Y@ç      ð?)	ÚminÚvaluesÚmaxÚshapeÚintÚmathÚfloorÚceilÚkthvalue)r   r   ÚqÚpositionÚlower_indexÚupper_indexÚlowerÚuppers   &&      r   Ú	_quantiler1      só   € Ø�SÔØ�y‰y˜Q¨ˆyÓ-×4Ñ4Ð4Ø�UÔØ�y‰y˜Q¨ˆyÓ-×4Ñ4Ð4äˆC”�Z %Õ'¨Ó-Ó.€AØ—K‘K •N QÕ&Õ'€HÜ”d—j’j Ó*Ó+€KÜ”d—i’i Ó)Ó*€KØ�N‰N˜;¨�?°¸4ˆNÓ@×GÑG€EàÔ!Øˆà�N‰N˜;¨�?°¸4ˆNÓ@×GÑG€EØ˜E•M hÕ&<Õ=Õ=Ð=r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   ÚloÚhir   r   )r   s   "r   r   r   2   s(   € ÷ /ñ /˜ð /¨,ð /¸Lð /È\ñ /r   c                óX   € \         P                  ! \         P                  ! W4      V4      # )N)Útorchr$   r"   )r   r3   r4   s   &&&r   Ú_clamp_blockr7   2   s   € Ü�9Š9”U—Y’Y˜uÓ)¨2Ó.Ð.r   Úepsg:Œ0âŽyE>Ú
group_sizec          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   r   r   Úfallbackr   r8   r   r9   zOptional[int]r   z+Tuple[torch.Tensor, Optional[torch.Tensor]]r   )r   s   "r   r   r   6   sA   € ÷ Iñ IØðIàðIð 
ð	Ið
 ðIð 1ñIr   c               óÀ  € \        VR R4      pVf   V R3# Ve   V^ 8  d   V P                  ^,          pVe   V\        VR^ 4      8  d   V R3# \        V\        4      '       d×   VP                  ;'       g    RP                  4       pVR8X  db   V P                  ^4      P                  ^ RR7      P                  4       P                  VR7      pVP                  4       P                  ^^4      pM@V P                  ^4      P                  ^RR7      P                  4       P                  VR7      pW,          V3# V P                  4       p\        V\        4      '       dÀ   VP                  ^RR7      p	W‰,
          P                  ^4      P                  ^RR7      P                  4       P                  VR7      p
\        VP                  4      pW‰,
          V
,          p\        P                  ! WË) V4      pWÊ,          V	,           P                  V P                   4      R3# \        V\"        4      '       dc   VP%                  4       p\'        V\        VP(                  4      4      p\        P                  ! WŽ) V4      P                  V P                   4      R3# \        V\*        4      '       dj   \        VP,                  4      p\        VP.                  4      p\'        W�4      p\'        VV4      p\1        VVV4      P                  V P                   4      R3# \        V\2        4      '       d¸   VP5                  ^RR7      P6                  pVV,
          P%                  4       P5                  ^RR7      P6                  \8        ,          p\        VP                  4      pVVV,          ,
          pVVV,          ,           p\1        VVV4      P                  V P                   4      R3# \        V\:        4      '       dç   \        VP<                  4      pVR8:  d   V R3# VP%                  4       p\?        ^\A        \C        VP                  ^,          R	VR
,          ,
          ,          4      4      4      p\E        W½P                  ^,          4      p\        PF                  ! WÛ^RR7      P6                  p\        P                  ! WŽ) V4      P                  V P                   4      R3# \        V\H        4      '       dè   \?        \        VPJ                  4      V4      pVP%                  4       p\L        PN                  ! V4      p\        PN                  ! VV,          4      V,          p\'        V\        VP(                  4      4      p\        PP                  ! VV,          4      R	,
          V,          p\        P                  ! VV) V4      P                  V P                   4      R3# V R3# )ÚsmoothNÚgroup_size_thresholdÚrowÚcolTr   ©r"   r   r!   r    ))Úgetattrr%   Ú
isinstancer   Úaxisr/   ÚpowÚmeanÚsqrtÚclampÚviewr   r   Úkr6   ÚtoÚdtyper   Úabsr1   r   r   ÚlowÚhighr7   r	   Úmedianr#   ÚMAD_TO_STD_SCALEr
   Úpctr$   r&   Úroundr"   r*   r   Úmur'   Úlog1pÚexp)r   r;   r8   r9   ÚmethodrD   Úcol_rmsÚscale_factorÚblock_frF   ÚrmsrJ   Ú
block_normÚ	abs_blockÚ	thresholdrN   rO   r3   r4   rP   ÚmadrR   rT   Úlog_muÚlog_valsÚlin_thresholds   &&$$                      r   Úsmooth_blockrc   6   s“  € ô �X˜x¨Ó.€FØ‚~Ø�dˆ{ÐØÒ *¨q¤.Ø—[‘[ •^ˆ
ØÒ *¬w°vÐ?UÐWXÓ/YÔ"YØ�dˆ{Ðä�&œ,×'Ò'Ø—‘×$Ð$˜u×+Ñ+Ó-ˆØ�5Œ=Ø—i‘i “l×'Ñ'¨A°tÐ'Ó<×AÑAÓC×IÑIÈcÐIÓRˆGØ"Ÿ<™<›>×.Ñ.¨q°!Ó4‰Là Ÿ9™9 Q›<×,Ñ,°¸DÐ,ÓA×FÑFÓH×NÑNÐSVÐNÓWˆLØÕ# \Ð1Ð1à�k‰k‹m€Gä�&œ.×)Ò)Ø�|‰| ¨4ˆ|Ó0ˆØ�~×"Ñ" 1Ó%×*Ñ*¨q¸$Ð*Ó?×DÑDÓF×LÑLÐQTÐLÓUˆÜ�&—(‘(‹OˆØ•n¨Õ+ˆ
Ü—[’[ ¨R°Ó3ˆ
ØÕ  4Õ'×+Ñ+¨E¯K©KÓ8¸$Ð>Ð>ä�&Ô*×+Ò+Ø—K‘K“Mˆ	Ü˜i¬¨v×/@Ñ/@Ó)AÓBˆ	Ü�{Š{˜7 J°	Ó:×=Ñ=¸e¿k¹kÓJÈDÐPÐPä�&Ô4×5Ò5Ü�F—J‘JÓˆÜ�V—[‘[Ó!ˆÜ�wÓ$ˆÜ�w Ó%ˆÜ˜G R¨Ó,×/Ñ/°·±Ó<¸dÐBÐBä�&œ)×$Ò$Ø—‘ A¨t�Ó4×;Ñ;ˆØ˜Õ×$Ñ$Ó&×-Ñ-°!¸TÐ-ÓB×IÑIÔL\Õ\ˆÜ�&—(‘(‹OˆØ�a˜#•gÕˆØ�a˜#•gÕˆÜ˜G R¨Ó,×/Ñ/°·±Ó<¸dÐBÐBä�&œ-×(Ò(Ü�F—J‘JÓˆØ�#Œ:Ø˜$�;ÐØ—K‘K“Mˆ	Ü�”3”u˜YŸ_™_¨QÕ/°3¸¸u½Õ3DÕEÓFÓGÓHˆÜ�—?‘? 1Õ%Ó&ˆÜ—N’N 9°QÀÔE×LÑLˆ	Ü�{Š{˜7 J°	Ó:×=Ñ=¸e¿k¹kÓJÈDÐPÐPä�&œ)×$Ò$Ü”�v—y‘yÓ! 3Ó'ˆØ—K‘K“Mˆ	Ü—’˜B“ˆÜ—;’;˜y¨2�~Ó.°Õ7ˆÜ˜h¬¨f×.?Ñ.?Ó(@ÓAˆ	ÜŸš 9¨vÕ#5Ó6¸Õ<ÀÕBˆÜ�{Š{˜7 ] N°MÓB×EÑEÀeÇkÁkÓRÐTXÐXÐXà�$ˆ;Ðr   c                óŒ  € \         P                  ! VP                  ^4      V,          VP                  ^4      V,          ,
          V,          VR7      pVP                  '       d!   VP                  ^4      P	                  V4      M3\         P
                  ! VP                  ^4      ) V,          V,          4      p	\         P                  ! \         P
                  ! V P                  ^4      V,          V	,           4      ^ V4      p
W©,
          V,          V P                  ^4      ,
          P                  ^4      P                  ^R7      # )z/Compute MSE for shrinkage factors [rows, n, 1].rA   ©r   )r6   rH   Ú	unsqueezeÚsymÚ	expand_asrS   rE   rF   )rZ   Úmin_valÚmax_valÚ	base_zeroÚqcfgÚmaxqÚshrinkr8   ÚscaleÚzeror+   s   &&&&&&&&   r   Ú	_eval_mserq   ‚   sï   € ä�KŠK˜×*Ñ*¨1Ó-°Õ6¸×9JÑ9JÈ1Ó9MÐPVÕ9VÕVÐZ^Õ^ÐdgÔh€EØ6:·h·h°hˆ9×Ñ˜qÓ!×+Ñ+¨EÔ2ÄEÇKÂKÐQX×QbÑQbÐcdÓQeÐPeÐhnÕPnÐqvÕPvÓDw€DÜ�Š”E—K’K × 1Ñ 1°!Ó 4°uÕ <¸tÕ CÓDÀaÈÓN€Aà�X˜Õ ×!2Ñ!2°1Ó!5Õ5×:Ñ:¸1Ó=×BÑBÀqÐBÓIÐIr   c               ó4   € V ^8„  d   QhRRRRRRRRRR	R
R	RR/# )r   r   r   rl   r   rm   r&   ÚstepsÚ	maxshrinkr   r8   r   z/Tuple[torch.Tensor, torch.Tensor, torch.Tensor]r   )r   s   "r   r   r   ‹   sN   € ÷ 4/ñ 4/Øð4/à
ð4/ð ð4/ð
 ð4/ð ð4/ð 
ð4/ð 5ñ4/r   c               ó	  € V P                  4       pVP                  ^ ,          pVP                  '       dV   VP                  4       P	                  ^RR7      P
                  pV) p	Tp
\        P                  ! W‚^,           R,          4      pM<VP                  ^RR7      P
                  p	VP	                  ^RR7      P
                  p
Rp\	        \        \        P                  ! \	        V^4      4      \        P                  ! R4      ,          4      ^,           ^4      p\	        \        VR4      R4      p\        P                  ! V^3WÆP                  VP                  R7      \        P                  ! V^3VP                  VP                  R7      rí\        P                  ! V3\        R	4      VP                  R
7      VP!                  4       pp\#        V4       EF5  pWÞV,
          R,          ,           WîV,
          R,          ,
          pp\%        WiW«W\        P&                  ! VV.^R7      P)                  V^^4      V4      p\+        VV.4       F\  w  ppVRV3,          V8  p\        P,                  ! VVRV3,          V4      \        P,                  ! VP/                  ^4      VV4      ppK^  	  VR,          VR,          8  p\        P,                  ! VP/                  ^4      VV4      \        P,                  ! VP/                  ^4      VV4      rÞEK8  	  Wí,
          R,          p\        P&                  ! \        P0                  ! VV,
          VR4      V\        P0                  ! VV,           VR4      .^R7      P)                  V^^4      p\        P2                  ! VP5                  ^4      ^\%        WiW«WVV4      P7                  ^R7      P/                  ^4      4      p\        P0                  ! W©,
          V,          V,          VR7      pVP                  '       d   TM$\        P8                  ! V	) V,          V,          4      p\        P0                  ! \        P8                  ! VV,          V,           4      ^ V4      pVV,
          V,          pVVV3# )zTernary search: O(log steps)Tr   g       @Ng      ø?r!   gü©ñÒMbP?)ÚdevicerL   Úinf)rv   g      @re   ºNNNgš™™™™™¹?rA   )rx   r   )rx   é   )r   r%   rg   rM   r$   r#   r6   Ú	full_liker"   r&   r'   ÚlogÚfullrv   rL   ÚonesÚcloneÚrangerq   ÚstackrI   Ú	enumerateÚwhererf   rH   ÚgatherÚsqueezeÚargminrS   )r   rl   rm   rs   rt   r8   rZ   ÚrowsÚmax_absri   rj   rk   rn   ÚlÚrÚbest_errÚbest_pÚ_Úmid1Úmid2ÚerrÚiÚpÚbetterÚmove_rÚdeltaÚ
refinementÚ
scale_bestÚ	zero_bestr+   Údequant_bests   &&&$$$                         r   Úmse_optimal_quantr™   ‹   sø  € ð �k‰k‹m€GØ�=‰=˜Õ€Dà‡x‡x€xØ—+‘+“-×#Ñ#¨°4Ð#Ó8×?Ñ?ˆØ�(ˆØˆÜ—O’O G°Q­h¸#Õ-=Ó>‰	à—+‘+ !¨T�+Ó2×9Ñ9ˆØ—+‘+ !¨T�+Ó2×9Ñ9ˆØˆ	ä””D—H’HœS ¨›]Ó+¬d¯hªh°s«mÕ;Ó<¸qÕ@À!ÓD€EÜ”�Y Ó$ dÓ+€Fô �:Š:�t˜Q�i ·±ÀgÇmÁmÔTÔV[×V`ÒV`ÐbfÐhiÐajÐsz÷  tBñ  tBð  JQ÷  JWñ  JWô  WX€qÜ—z’z 4 '¬5°«<ÀÇÁÔOÐQR×QXÑQXÓQZˆf€Hä�5�\ˆØ˜a�% 3�Õ&¨°­U°c­MÕ(9ˆdˆÜ˜¨'¸dÌ%Ï+Ê+ÐW[Ð]aÐVbÐhiÔJj×JoÑJoÐptÐvwÐyzÓJ{ð  ~Aó  Bˆä˜t T˜lÖ+‰DˆAˆqØ˜˜A˜•Y Ñ)ˆFÜ$Ÿ{š{¨6°3°q¸!°tµ9¸hÓGÌÏÊÐU[×UeÑUeÐfgÓUhÐjkÐmsÓIt�fˆH‘fñ ,ð �T•˜S �YÑ&ˆÜ�{Š{˜6×+Ñ+¨AÓ.°°aÓ8¼%¿+º+Àf×FVÑFVÐWXÓFYÐ[\Ð^bÓ:c‹1ñ ð �U�c�M€EÜ—’œeŸkšk¨&°5­.¸&À#ÓFÈÔPU×P[ÒP[Ð\bÐejÕ\jÐlrÐtwÓPxÐyð  @Aô  B÷  Gñ  Gð  HLð  NOð  QRó  S€JÜ�\Š\˜*×,Ñ,¨QÓ/°´I¸gÐPWÐdhÐpzÐ|ó  5A÷  5Hñ  5Hð  MNð  5Hó  5O÷  5Yñ  5Yð  Z[ó  5\ó  ]€Fô —’˜gÕ/°6Õ9¸DÕ@ÀcÔJ€JØ!ŸXŸX˜X‘	¬5¯;ª;¸°xÀ&Õ7HÈ:Õ7UÓ+V€IÜ�Š”E—K’K ¨*Õ 4°yÕ @ÓAÀ1ÀdÓK€AØ˜	•M ZÕ/€Là˜ YÐ.Ð.r   )Ú
__future__r   r'   Útypingr   r   r6   Úconfigr   r   r   r	   r
   r   r   r   r   rQ   r1   r7   rc   rq   r™   r   r   r   Ú<module>r�      sk   ðõ
 #ã ß "ã ÷
÷ 
õ 
ð  Ð õ>õ&/ðIð ð	Ið
 !%÷IòXJð4/ð ÷4/ñ 4/r   