+
    TV-j„E  ã                   ód  € ^ 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IHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHt ] ! R R4      4       t ] ! R R4      4       t!R t"]!! RRRR.] ! RR. RPOR.R7      ] ! RR.R7      ] ! RRRR.R 7      .R!7      t#]!! RRRR.] ! RR. RPOR.R7      ] ! RR.R7      ] ! RR"RR.R 7      .R!7      t$]"! ]$R#R$7      t%]!! RR. RQO] ! RRRR%.R.R7      ] ! R&R'.R7      ] ! RR.R( R)7      ] ! R*R+.R, R)7      ] ! R-R..R/ R0.R17      ] ! RRRR.R2 R37      ] ! RR. RROR4 R37      .R!7      t&R5]#R6]#R7]#R8]#R9]$R:]"! ]$R#R$7      R;]&/t'R< t(R= t)RSR> R? llt*R@ RA lt+RB RC lt,RD t-RE RF lt.RTRG RH llt/RURI RJ llt0RVRK RL llt1RM RN lt2RO t3R# )Wé    N)Ú	dataclassÚfield)ÚPath)ÚAnyÚCallableÚDict)Úrequest)Útree_flattenÚtree_mapÚtree_map_with_path)Útqdm)Úcreate_attention_mask)ÚSwitchLinear)Ú	load_data)ÚloadÚsavec                   óF   a € ] tR t^t o Rt]! ]R7      tRtV 3R lt	Rt
V tR# )ÚScaleConfigN)Údefault_factoryc                óê   <€ V ^8„  d   Qh/ S[ P                  ;R&   S[S[ P                  ,          ;R&   S[ P                  R,          ;R&   S[;R&   S[S[ P                  .S[3,          R,          ;R&   # )é   ÚprevÚlayersNÚblockÚkwargsÚ
use_config)ÚnnÚModuleÚlistr   Úbool)ÚformatÚ__classdict__s   "€Úa/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_lm/quant/awq.pyÚ__annotate__ÚScaleConfig.__annotate__   sm   ø‡ ‚ á
�)‰)�Oñ ñ ‘—‘�OÑñ ñ �9‰9�tÕÑ"ñ	 ñ
 Ñ.ñ ñ ™"Ÿ)™)˜¡dÐ*Õ+¨dÕ2Ñ9ò ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r"   s   @r#   r   r      s"   ø‡ € ð #€EÙ¨Ô.€FØ59€J÷ ƒ r&   r   c                   ó0   a € ] tR t^!t o RtV 3R ltRtV tR# )Ú	AWQConfigNc                ó„   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[S[ ,          ;R&   S[S[,          ;R&   S[ R,          ;R&   # )r   ÚembedÚlm_headÚno_clipÚscale_configsNÚlm_key)Ústrr   r   )r!   r"   s   "€r#   r$   ÚAWQConfig.__annotate__!   sO   ø‡ ‚ á�Jñ ñ �Lñ ñ ‘#�YÑñ	 ñ
 ™Õ$Ñ$ñ ñ �$�JÑò r&   r'   )r(   r)   r*   r+   r7   r,   r-   r.   r/   s   @r#   r1   r1   !   s   ø‡ € ð €F÷ ƒ r&   r1   c                 ó|   € \         P                  ! V 4      p VP                  4        F  w  r#\        WV4       K  	  V # ©N)ÚcopyÚdeepcopyÚitemsÚsetattr)Úcfgr   ÚkÚvs   &,  r#   ÚupdaterC   *   s1   € Ü
�-Š-˜Ó
€CØ—‘–‰ˆÜ�˜Öñ à€Jr&   Úembed_tokensr4   Úq_projÚk_projÚ	self_attnÚinput_layernormÚmask)r   r   r   r   zmlp.up_projzmlp.down_proj)r   r   ÚmlpÚpost_attention_layernormÚ	gate_projÚup_proj)r   r   r   )r3   r4   r5   r6   Úpre_feedforward_layernormÚlanguage_model)r7   Úkv_a_proj_with_mqazself_attn.kv_a_layernormzself_attn.kv_b_projc                 ó    € R V P                   9  # ©Ú
switch_mlp©rJ   ©r   s   &r#   Ú<lambda>rV   m   ó   € ¨¸¿¹Ò%Br&   )r   r   r   zmlp.shared_experts.up_projzmlp.shared_experts.down_projc                 ó    € R V P                   9   # rR   rT   rU   s   &r#   rV   rV   r   ó   €  \°U·Y±YÒ%>r&   zmlp.switch_mlp.up_projzmlp.switch_mlp.down_projc                 ó    € R V P                   9   # rR   rT   rU   s   &r#   rV   rV   w   rY   r&   Úindices)r   r   r   r   c                 ó    € R V P                   9  # rR   rT   rU   s   &r#   rV   rV   ~   rW   r&   )r   r   r   r   c                 ó    € R V P                   9   # rR   rT   rU   s   &r#   rV   rV   Š   rY   r&   ÚllamaÚmistralÚqwen2Úqwen3Úgemma3_textÚgemma3Údeepseek_v2c                 óZ   € W,
          P                  \        P                  4      ^,          # )r   )ÚastypeÚmxÚfloat32)ÚxÚys   &&r#   Úmserk   š   s   € Ø�U�N‰Nœ2Ÿ:™:Ó&¨1Õ,Ð,r&   c                 óJ   € VP                  R 4      pV F  pW,          p K  	  V # )Ú.)Úsplit)ÚmoduleÚkeyÚkeysrA   s   &&  r#   Úsubmodule_from_keyrr   ž   s%   € Ø�9‰9�S‹>€DÛˆØ•Šñ à€Mr&   c                ó’   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R,          R\        /# )r   Úlayerri   r[   NÚ
batch_size)r   r   rg   ÚarrayÚint)r!   s   "r#   r$   r$   ¥   s@   € ÷ ñ Ü�9‰9ðä	‡x�xðô �X‰X˜�_ðô ñ	r&   c           
      óL  € . p\        ^ VP                  ^ ,          V4       Fg  pVe+   VP                  V ! WWc,            W&Wc,            3/ VB 4       M VP                  V ! WWc,            3/ VB 4       \        P                  ! V4       Ki  	  \        P
                  ! V^ R7      pV# )r   ©Úaxis)ÚrangeÚshapeÚappendrg   ÚevalÚconcatenate)rt   ri   r[   ru   r   rj   Úis   &&&&,  r#   Ú	run_layerr�   ¥   s”   € ð 	€AÜ�1�a—g‘g˜a•j *Ö-ˆØÒØ�H‰HÙ�a˜A�NÐ+¨W¸½Ð-HÑSÈFÑSõð �H‰H‘U˜1 ¥Ð0Ñ;°FÑ;Ô<Ü
�Š�Ž
ñ .ô 	�Š�q˜qÔ!€AØ€Hr&   c                ól   € V ^8„  d   QhR\         P                  R\         P                  P                  /# )r   ri   Úgroup)rg   rv   ÚdistributedÚGroup)r!   s   "r#   r$   r$   ¹   s(   € ÷ .ñ .”"—(‘(ð .¤2§>¡>×#7Ñ#7ñ .r&   c                 óö   € VP                  4       pV^8X  d   V # V P                  ^ ,          pW2,          ^ 8X  g   Q hVP                  4       pW2,           ^,
          V,          pWV,          V^,           V,           # )é   )Úsizer|   Úrank)ri   rƒ   ÚNÚBÚrÚlocal_Bs   &&    r#   Ú
dist_splitrŽ   ¹   sg   € Ø�
‰
‹€AØˆA„vØˆØ	�‰��
€AØ�5�AŒ:Ðˆ:Ø�
‰
‹€AØ�u�q�y˜QÕ€GØ��[˜A �E WÕ,Ð-Ð-r&   c          
      ó    € V ^8„  d   QhR\         \        P                  ,          R\        R\        P                  R,          R\        R\
        /# )r   r   Úquantize_funcr   NÚlayer_kwargsÚn_grid)r   r   r   r   Údictrw   )r!   s   "r#   r$   r$   Ä   sK   € ÷ 0ñ 0Ü”—‘�Oð0äð0ô �9‰9�tÕð0ô ð	0ô
 ñ0r&   c                 ó¼  € \         P                  P                  4       pT;'       g    / pV ^ ,          P                  pT;'       g
    V ^ ,          pV! V3/ VB pVP	                  4       P                  RR7      p\        R4      p	Rp
\        VP                  4       4      p\        V4       EF…  pWÄ,          p\         P                  ! WŒ,          R4      P                  R4      pWÝP                  4       VP                  4       ,          P                  4       ,          pV  FP  p\        V\         P"                  \$        34      '       g   K+  V! VP&                  V,          4      V,          Vn        KR  	  \)        W&3/ VB p\+        W4      P-                  4       pVe5   \         P                  P/                  V4      VP1                  4       ,          pVVP0                  ,          p\         P2                  ! V4       VP5                  4       V	8  d   VP5                  4       p	Tp
VP7                  V4       EKˆ  	  V
P                  R4      p
\         P2                  ! V
4       V
# )r   ry   ÚinfNg-Cëâ6?)r   r‡   éÿÿÿÿ)rg   r„   ÚinitÚ
input_featÚabsÚmeanÚfloatr
   Ú
parametersr{   ÚmaximumÚreshapeÚmaxÚminÚsqrtÚ
isinstancer   ÚLinearr   Úweightr�   rk   ÚsumÚall_sumrˆ   r~   ÚitemÚload_weights)r   r�   r   r‘   r’   rƒ   ri   ÚoutÚx_maxÚ
best_errorÚbest_scalesÚweightsÚratioÚscalesrt   Úout_qÚlosss   &&&&&            r#   Úsearch_best_scaler²   Ä   sÌ  € ô �N‰N×ÑÓ!€Eà×%Ð% 2€Làˆq�	×Ñ€Aà×Ð�V˜A•Y€EÙ
�Ñ
"�\Ñ
"€Cà�E‰E‹G�L‰L˜fˆLÓ%€Eä�u“€JØ€Kä˜5×+Ñ+Ó-Ó.€Gô �v—ˆØ•ˆÜ—’˜E�L¨$Ó/×7Ñ7¸Ó;ˆØŸ:™:›<¨&¯*©*«,Õ6×<Ñ<Ó>Õ>ˆÛˆEÜ˜%¤"§)¡)¬\Ð!:×;Ô;Ù,¨U¯\©\¸FÕ-BÓCÀfÕL�–ñ ô ˜%Ñ3 lÑ3ˆÜ�3‹×"Ñ"Ó$ˆØÒÜ—>‘>×)Ñ)¨$Ó/°%·*±*³,Õ>ˆDØ�—‘ÕˆÜ
�Š�ŒØ�9‰9‹;˜Ô#ØŸ™›ˆJØ ˆKð 	×Ñ˜7×#ñ' ð* ×%Ñ% bÓ)€KÜ‡G‚GˆKÔØÐr&   c                 óp  € \        V \        P                  \        34      '       d”   \	        V4      ^8X  g   Q hV P
                  VR\        P                  3,          ,          V n        \        V R4      '       d   V P                  V,          V n	        V^ ,          P
                  V,          V^ ,          n        EMG\        V \        P                  \        P                  34      '       de   V P
                  V,          V n        \        V R4      '       d   V P                  V,          V n	        V F  pVP
                  V,          Vn        K  	  M³V P                  P                  R8X  d‹   V P
                  P                  pRV P
                  P                  \        P                   4      ,           V,          R,
          P                  V4      V n        V F  pVP
                  V,          Vn        K  	  M\#        RV  24      hV F/  p\        VR4      '       g   K  VP$                  V,          Vn        K1  	  R# )r‡   :NNNÚbiasÚRMSNormg      ð?z"Could not apply scale to prev_op: r˜   N)r¢   r   r£   r   Úlenr¤   rg   ÚnewaxisÚhasattrr´   Ú	LayerNormrµ   Ú	__class__r(   Údtyperf   rh   ÚNotImplementedErrorr˜   )Úprev_opr   r¯   rt   Údts   &&&  r#   Úapply_scaler¿   ÷   s“  € ä�'œBŸI™I¤|Ð4×5Ò5Ü�6‹{˜aÔÐÐØ Ÿ™¨&°´B·J±J°Õ*?Õ?ˆŒÜ�7˜F×#Ò#Ø"Ÿ<™<¨&Õ0ˆGŒLØ! !�9×+Ñ+¨fÕ4ˆˆq�	ÖÜ	�GœbŸl™l¬B¯J©JÐ7×	8Ò	8Ø Ÿ™¨&Õ0ˆŒÜ�7˜F×#Ò#Ø"Ÿ<™<¨&Õ0ˆGŒLÛˆEØ Ÿ<™<¨&Õ0ˆEŽLò à	×	Ñ	×	#Ñ	# yÔ	0Ø�^‰^×!Ñ!ˆà�7—>‘>×(Ñ(¬¯©Ó4Õ4¸Õ>ÀÕDß
‰&�‹*ð 	Œó ˆEØ Ÿ<™<¨&Õ0ˆEŽLò ô "Ð$FÀwÀiÐ"PÓQÐQãˆÜ�5˜,×'Ô'Ø$×/Ñ/°&Õ8ˆEÖó r&   c          
      ó~   € V ^8„  d   QhR\         P                  R\        \        ,          R\        R\
        R\        /# )r   r   Úconfigsr�   r‘   r’   )r   r   r   r   r   r“   rw   )r!   s   "r#   r$   r$     sJ   € ÷ Jñ JÜ�9‰9ðJä”+ÕðJô ðJô ð	Jô
 ñJr&   c           	      ó–  € V EF2  pVP                   e   VP                  V 4      '       g   K+  VP                  e8   WP                  ,          pVP                   Uu. uF  p\        Wg4      NK  	  ppM&R pVP                   Uu. uF  p\        W4      NK  	  ppVP                   U	u/ uF  q™V9   g   K  W“V	,          bK  	  p
p	VP                   F3  p	\        V^ ,          V	4      '       g   K  \        V^ ,          V	4      W©&   K5  	  \        VVV
VVR7      p\        \        WP                  4      W‹4       EK5  	  R # u upi u upi u up	i )N)r   r   r‘   r�   r’   )
r   r   r   rr   r   r¸   Úgetattrr²   r¿   r   )r   rÁ   r�   r‘   r’   ÚconfÚlocal_blockÚlr   rA   Úlocal_kwargsr¯   s   &&&&&       r#   Úscale_blockrÈ     s  € ô ˆØ�?‰?Ò&¨t¯©¸u×/EÒ/EÙØ�:‰:Ò!Ø§
¡
Õ+ˆKØBFÇ+Â+ÓNÁ+¸QÔ(¨Ö8Á+ˆFÐNˆFàˆKØ<@¿KºKÓH¹K°qÔ(¨Ö2¹KˆFÐHØ48·K²KÓU±K¨qÈÑCTÔ*˜¨�?Ò*±KˆÐUØ—”ˆAÜ�v˜a•y !×$Ô$Ü")¨&°­)°QÓ"7�“ñ ô #ØØØ%Ø'Øô
ˆô 	Ô& u¯i©iÓ8¸&×Ió+ ùò
 Oùò IùÚUs   ÁD<ÂEÂ'EÂ4Ec                ó€   € V ^8„  d   QhR\         P                  R\        R\        R\        R\        R\        R\        /# )r   ro   r�   Ú
group_sizer’   Ú
max_shrinkru   Ún_frames)r   r   r   rw   r›   )r!   s   "r#   r$   r$   3  s[   € ÷ Cñ CÜ�I‰IðCäðCô ðCô ð	Cô
 ðCô ðCô ñCr&   c                 óÖ  € \         P                  P                  4       pV P                  P	                  ^ ^4      pVP
                  ^ ,          V,           ^,
          V,          p	VRRV	1,          pV P                  p
VP                  VP
                  ^ ,          R	V4      pV
P
                  p\         P                  ! V
^ V
P                  ^,
          4      p. p\        ^ VP
                  ^ ,          V4       EFt  pWÎWå,            p
V
P
                  ^ ,          V
P
                  R	,          V,          3p\         P                  ! V\        R4      4      p\         P                  ! . VO^N5VP                  R7      pV
P
                  pV
P                  ! . V
P
                  RR	 OR	NVN5!  p
\         P                  ! RWŠ4      pV
P                  4       P!                  R	RR7      p\        \#        WC,          4      4       EFZ  p^VV,          ,
          pVV,          p\         P$                  ! V
V) V4      P                  V4      pV! V4      pVP                  ! . VP
                  RR	 OR	NVN5!  p\         P                  ! RVV4      p\'        VV4      P)                  ^ R7      pVe5   \         P                  P+                  V4      VP-                  4       ,          pVVP
                  ^ ,          ,          pVV8  p\         P.                  ! VVV4      p\         P.                  ! VR\         P0                  3,          VV4      p\         P2                  ! VV4       EK]  	  VP5                  V4       EKw  	  \         P6                  ! V^ R7      pVP                  ! . VP
                  RR	 OR	NVN5!  p\         P$                  ! VV) V4      pVP                  V4      p\         P2                  ! V4       V# )
r   Nr•   )r»   zbdg,odg->bodT)rz   Úkeepdimsry   .r–   )rg   r„   r—   r˜   Úflattenr|   r¤   rž   Úndimr{   Úfullr›   Úzerosr»   Úeinsumr™   rŸ   rw   Úcliprk   r¥   r¦   rˆ   Úwherer·   r~   r}   r   )ro   r�   rÊ   r’   rË   ru   rÌ   rƒ   ri   ÚstrideÚwÚw_init_shapeÚw_allÚ	w_max_allÚbÚgroup_shaper«   Ú
best_w_maxÚw_shaper©   Úinit_maxr€   ÚpÚw_maxÚw_mÚw_qr°   r±   Úbest_indicesÚw_rÚbest_ws   &&&&&&&                        r#   Úsearch_best_cliprç   3  s  € ô �N‰N×ÑÓ!€Eð 	×Ñ×!Ñ! ! QÓ'€AØ�g‰g�a�j˜8Õ# aÕ'¨HÕ4€FØ	‰(ˆFˆ(�€Aà�‰€AØ	�	‰	�!—'‘'˜!•*˜b *Ó-€Aà—7‘7€LÜ�JŠJ�q˜!˜QŸV™V a�ZÓ(€EØ€Iô �1�e—k‘k !•n j×1ˆØ�a•nÐ%ˆà—w‘w˜q•z 1§7¡7¨2¥;°*Õ#<Ð=ˆÜ—W’W˜[¬%°«,Ó7ˆ
Ü—X’XÐ/ Ð/¨QÑ/°q·w±wÔ?ˆ
à—'‘'ˆà�IŠIÐ4�q—w‘w˜s �|Ð4 RÐ4¨Ó4ˆÜ�iŠi˜¨Ó-ˆØ—5‘5“7—;‘; B°�;Ó6ˆô ”s˜:Õ.Ó/×0ˆAØ�A˜•J•ˆAØ˜•LˆEÜ—'’'˜!˜e˜V UÓ+×3Ñ3°GÓ<ˆCá Ó$ˆCà—+’+Ð>˜sŸy™y¨¨"˜~Ð>¨rÐ>°:Ó>ˆCÜ—I’I˜n¨a°Ó5ˆEô �s˜E“?×&Ñ&¨AÐ&Ó.ˆDØÒ Ü—~‘~×-Ñ-¨dÓ3°e·j±j³lÕB�Ø�C—I‘I˜a•LÕ ˆDØ *Ñ,ˆLÜŸš ,°°jÓAˆJÜŸš ,¨s´B·J±J¨Õ"?ÀÈ
ÓSˆJÜ�GŠG�J 
×+ñ% 1ð( 	×Ñ˜×$ñE 2ôH —’ 	°Ô2€Jà
�-Š-Ð
:˜Ÿ™ S bÐ)Ð
:¨2Ð
:¨zÓ
:€CÜ�WŠW�S˜:˜+ zÓ2€FØ�^‰^˜LÓ)€Fä‡G‚GˆF„OØ€Mr&   c          
      ó~   € V ^8„  d   QhR\         P                  R\        \        ,          R\        R\
        R\
        /# )r   r   Úno_clip_keysr�   rÊ   r’   )r   r   r   r8   r   rw   )r!   s   "r#   r$   r$   y  sI   € ÷ Vñ VÜ�9‰9ðVä”s•)ðVô ðVô ð	Vô
 ñVr&   c                 ó†   aaaa€ VVVV3R  lp\        WPP                  4       \        P                  P                  R7       R# )c                 ó  <a € \        V\        P                  \        34      '       dZ   \        ;QJ d    V 3R  lS 4       F  '       d   K   RM	  RM! V 3R  lS 4       4      '       d   \        VSSSR7      pW!n        R# R# R# )c              3   ó,   <"  € T F	  qS9  x € K  	  R # 5ir;   r'   )Ú.0rA   Úpaths   & €r#   Ú	<genexpr>Ú1clip_block.<locals>.apply_clip.<locals>.<genexpr>�  s   øé € ð A
Ù#/˜a�TŽM£<ùs   ƒFT)r�   rÊ   r’   N)r¢   r   r£   r   Úallrç   r¤   )rî   ro   Úbest_weightrÊ   r’   ré   r�   s   f& €€€€r#   Ú
apply_clipÚclip_block.<locals>.apply_clip€  sr   ù€ Ü�fœrŸy™y¬,Ð7×8Ò8¿S»Sô A
Ù#/óA
¿S¿SºSô A
Ù#/óA
÷ >
ò >
ô +ØØ+Ø%Øô	ˆKð (ŽMñ>
Ñ8r&   ©Úis_leafN©r   Úleaf_modulesr   r   Ú	is_module)r   ré   r�   rÊ   r’   ró   s   &ffff r#   Ú
clip_blockrú   y  s,   û€ ÷
(ð 
(ô �z×#5Ñ#5Ó#7ÄÇÁ×ATÑAT×Ur&   c                ó€   € V ^8„  d   QhR\         P                  R\        R\        R\        R\        R\        R\        /# )r   ÚinputsÚ
awq_configrÊ   ÚbitsÚembed_group_sizeÚ
embed_bitsr’   )rg   rv   r1   rw   )r!   s   "r#   r$   r$   �  s]   € ÷ o
ñ o
ä�H‰Hðo
ô ðo
ô ð	o
ô
 ðo
ô ðo
ô ðo
ô ño
r&   c           	      óü  aa€ VP                   e   WP                   ,          p \        P                  P                  4       pVV3R lp	\	        V4      p
VP
                  pV P                  V,          P                  WVR7      V P                  V&   V P                  V,          ! V4      pR p\        \        V P                  4      4       EF}  w  rÞVP                  4       p\        WÏ\        P                  P                  R7      pVP!                  V4       \#        WáV
R7      pVP!                  V4       ?\        P$                  ! VSSR7       \#        WáV
R7      p\'        VV4      P)                  4       pVe5   \        P                  P+                  V4      VP-                  4       ,          pVVP,                  ,          pVP!                  V4       VP/                  4       p\1        VVP2                  V	VRV
/R7       \5        VVP6                  V	SVR7       \        P$                  ! VSSR7       \#        WáV
R7      p\'        VV4      P)                  4       pVe5   \        P                  P+                  V4      VP-                  4       ,          pVVP,                  ,          p\        P8                  ! R	VV,           24       VV8”  dR   VP!                  V4       VP;                  V4       \        P$                  ! VSSR7       \        P8                  ! R
4       Tp\        P<                  ! V4       \        P>                  ! 4        EK€  	  VP@                  ;pV 9   d   V V,          P                  WVR7      V V&   R # R # )Nc                 óf   <€ \         P                  ! V SSR 7      p\         P                  ! VRSRS/ # ))rþ   rÊ   rþ   rÊ   )rg   ÚquantizeÚ
dequantize)r×   Úwqrþ   rÊ   s   & €€r#   r�   Ú#awq_quantize.<locals>.quantize_funcž  s.   ø€ Ü�[Š[˜ °*Ô=ˆÜ�}Š}˜bÐC tÐC¸
ÑCÐCr&   )rÊ   rþ   c                 óš   a € \        S \        P                  \        34      '       g   S #  ! V 3R  lR\        P                  4      pV! 4       # )c                   ó:   <a € ] tR tRt o V 3R lV3R lltRtV tR# )Ú.awq_quantize.<locals>.capture.<locals>.Catcheri®  c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   ri   )rg   rv   )r!   r"   s   "€r#   r$   Ú;awq_quantize.<locals>.capture.<locals>.Catcher.__annotate__¯  s   ø€ ÷ 2ñ 2¡"§(¡(ñ 2r&   c                óf  <€ \        SR 4      '       d+   \        P                  ! SP                  V.^ R7      Sn        MVSn        \	        S\
        4      '       dM   V^ ,          p\        SR4      '       d+   \        P                  ! SP                  V.^ R7      Sn        MVSn        S! V.VO5/ VB # )r˜   ry   r[   )r¸   rg   r   r˜   r¢   r   r[   )Úselfri   Úargsr   r[   ro   s   &&*, €r#   Ú__call__Ú7awq_quantize.<locals>.capture.<locals>.Catcher.__call__¯  s˜   ø€ ä˜6 <×0Ò0Ü(*¯ª¸×8IÑ8IÈ1Ð7MÐTUÔ(V�FÕ%à()�FÔ%ô ˜f¤l×3Ò3Ø" 1�g�GÜ˜v y×1Ò1Ü)+¯ªØ#Ÿ^™^¨WÐ5¸Aô*˜�ð *1˜œá˜aÐ1 $Ò1¨&Ñ1Ð1r&   r'   N)r(   r)   r*   r+   r  r-   r.   )r"   ro   s   @€r#   ÚCatcherr	  ®  s   ù‡ € ÷2÷ 2ñ 2r&   r  )r¢   r   r£   r   r   )ro   r  s   f r#   ÚcaptureÚawq_quantize.<locals>.captureª  s8   ø€ Ü˜&¤2§9¡9¬lÐ";×<Ò<ØˆM÷	2”b—i‘iô 	2ñ( ‹yÐr&   rõ   )rI   rI   )r   rÁ   r�   r’   r‘   )r   ré   r�   rÊ   r’   zLoss reduction: z6Loss is not reduced, falling back to original weights.)!r7   rg   r„   r—   r   r3   ÚmodelÚto_quantizedÚ	enumerater   r   rø   r   r   r   rù   Úupdate_modulesr�   r  rk   r¥   r¦   rˆ   rœ   rÈ   r6   rú   r5   ÚwriterC   r~   Úclear_cacher4   )r  rü   rý   rÊ   rþ   rÿ   r   r’   rƒ   r�   rI   Ú	embed_keyr  Úer   Úorig_leavesÚcapture_leavesÚoutputsÚ	outputs_qÚbefore_lossÚorig_paramsÚ
after_lossr4   s   &&&ff&&&               r#   Úawq_quantizer#  �  sÕ  ù€ ð ×ÑÒ$Ø×'Ñ'Õ(ˆä�N‰N×ÑÓ!€EöDô ! Ó(€Dà× Ñ €IØ"Ÿ[™[¨Õ3×@Ñ@Ø#ð Aó €E‡K�K�	Ñð �[‰[˜Ö# FÓ+€Fòô4 œd 5§<¡<Ó0×1‰ˆà×(Ñ(Ó*ˆÜ! 'ÄÇ	Á	×@SÑ@SÔTˆØ×Ñ˜^Ô,Ü˜E°Ô5ˆØ×Ñ˜[Ô)Øô 	�Š�E j°tÕ<Ü˜e°$Ô7ˆ	Ü˜' 9Ó-×1Ñ1Ó3ˆØÒÜŸ.™.×0Ñ0°Ó=ÀÇ
Á
ÃÕLˆKØ�w—|‘|Õ#ˆØ×Ñ˜[Ô)Ø×&Ñ&Ó(ˆäØØ×,Ñ,Ø'ØØ  $˜õ	
ô 	ØØ#×+Ñ+Ø'Ø!Øõ	
ô 	�Š�E j°tÕ<Ü˜e°$Ô7ˆ	Ü˜ )Ó,×0Ñ0Ó2ˆ
ØÒÜŸ™×/Ñ/°
Ó;¸e¿j¹j»lÕJˆJØ�g—l‘lÕ"ˆ
Ü�
Š
Ð% j°;Õ&>Ð%?Ð@ÔAØ˜Ô#à× Ñ  Ô-Ø�L‰L˜Ô%Ü�KŠK˜¨*¸4Õ@Ü�JŠJÐOÔPàˆä
�Š�ŒÜ
�Š×ñk 2ðn ×%Ñ%Ð%ˆ¨%Ô/Ø˜w�×4Ñ4Ø'ð 5ó 
ˆˆg‹ñ 0r&   c                óf   € V ^8„  d   QhR\         P                  R\        \        \        3,          /# )r   r  Úconfig)r   r   r   r8   r   )r!   s   "r#   r$   r$     s(   € ÷ ñ Ü�9‰9ðä””c��Nñr&   c                 óŒ   a€ R ^@R^/SR&   V3R lp\        W P                  4       \        P                  P                  R7       S# )rÊ   rþ   Úquantizationc                 ó�   <€ \        VR 4      '       d'   RVP                  R VP                  /SR,          V &   R# RSR,          V &   R# )rþ   rÊ   r'  FN)r¸   rÊ   rþ   )rî   ro   r%  s   &&€r#   Úupdate_configÚ$update_config.<locals>.update_config  sF   ø€ Ü�6˜6×"Ò"à˜f×/Ñ/Ø˜Ÿ™ð,ˆF�>Õ" 4Ó(ð
 ,1ˆF�>Õ" 4Ó(r&   rõ   r÷   )r  r%  r)  s   &f r#   r)  r)    sA   ø€ ð
 +¨B°¸Ð:€Fˆ>Ñõ1ô �}×&8Ñ&8Ó&:ÄBÇIÁI×DWÑDWÕXØ€Mr&   c                  ó:  € \         P                  ! 4       p V P                  R RRR7       V P                  RRR7       V P                  R\        ^R7       V P                  R\        ^@R7       V P                  R	\        ^R7       V P                  R
\        ^ R7       V P                  R\        ^€R7       V P                  R\        RR7       V P                  R\        ^R7       V P                  R\        ^{R7       V P	                  4       p\
        P                  P                  4       pVP                  pVeM   W2P                  4       ,          ^ 8”  d2   W2P                  4       W2P                  4       ,          ,
          ,          p\
        P                  P                  VP                  4       \        VP                  RRR7      w  rEpVR,          p\        P                  VR4      ;pf   \!        RV R24      h\#        WQP                  VP$                  4      p	\'        W’4      p	\)        VV	VVP*                  VP,                  VP.                  VP0                  VP2                  R7       \5        WF4      p\7        VP8                  VP                  VVV4       R# )z--modelz-mz&mlx-community/Qwen2.5-7B-Instruct-bf16)Údefaultz
--mlx-pathÚ	mlx_modelz--bits)Útyper,  z--group-sizez--embed-bitsz--embed-group-sizez--num-samplesz--sequence-lengthé   z--n-gridz--seedNT)ÚlazyÚreturn_configÚ
model_typezAWQ support for z models NYI.)rþ   rÊ   r   rÿ   r’   )ÚargparseÚArgumentParserÚadd_argumentrw   Ú
parse_argsrg   r„   r—   Únum_samplesrˆ   ÚrandomÚseedr   r  ÚAWQ_MODEL_CONFIGSÚgetr¼   r   Úsequence_lengthrŽ   r#  rþ   rÊ   r   rÿ   r’   r)  r   Úmlx_path)
Úparserr  rƒ   r7  r  Ú	tokenizerr%  r2  rý   Úcalibration_datas
             r#   ÚmainrA    s/  € Ü×$Ò$Ó&€FØ
×ÑØ�4Ð!Ið ô ð ×Ñ˜¨kÐÔ:Ø
×Ñ˜¤s°AÐÔ6Ø
×Ñ˜¬S¸"ÐÔ=Ø
×Ñ˜¬S¸!ÐÔ<Ø
×ÑÐ,´3ÀÐÔCØ
×Ñ˜¬c¸3ÐÔ?Ø
×ÑÐ+´#¸sÐÔCØ
×Ñ˜
¬°bÐÔ9Ø
×Ñ˜¤s°CÐÔ8Ø×ÑÓ€Dä�N‰N×ÑÓ!€Eà×"Ñ"€KØÒ˜[¯:©:«<Õ7¸!Ô;Ø—z‘z“| k·J±J³LÕ&@Õ@Õ@ˆä‡I�I‡N�N�4—9‘9Ôä# D§J¡J°TÈÔNÑ€E�fà˜Õ%€JÜ'×+Ñ+¨J¸Ó=Ð=ˆ
ÒFÜ!Ð$4°Z°LÀÐ"MÓNÐNä  ×,<Ñ,<¸d×>RÑ>RÓSÐä!Ð"2Ó:ÐäØØØØ�Y‰YØ—?‘?Ø—?‘?Ø×.Ñ.Ø�{‰{õ	ô ˜5Ó)€FÜØ�‰Ø�
‰
ØØØör&   )rE   rF   Úv_proj)rE   Úq_a_projÚq_b_projrP   Ú	kv_b_proj)zswitch_mlp.gate_projzswitch_mlp.up_projzshared_experts.gate_projzshared_experts.up_projÚgate)Né    )g      à?é@   r/  )é   )rH  é   rG  é   rI  )4r3  r<   Údataclassesr   r   Úpathlibr   Útypingr   r   r   Úurllibr	   Úmlx.coreÚcorerg   Úmlx.nnr   Ú	mlx.utilsr
   r   r   r   Úmlx_lm.models.baser   Úmlx_lm.models.switch_layersr   Úmlx_lm.quant.utilsr   Úmlx_lm.utilsr   r   r   r1   rC   Ú	llama_awqÚgemma3_text_awqÚ
gemma3_awqÚdeepseek_v2_awqr:  rk   rr   r�   rŽ   r²   r¿   rÈ   rç   rú   r#  r)  rA  r'   r&   r#   Ú<module>r\     sp  ðó Û ß (Ý ß &Ñ &Ý å Ý ß @Ñ @Ý å 4Ý 4Ý (÷ð ÷:ð :ó ð:ð ÷ð ó ðòñ Ø
ØØ�xÐ áØØ"Ú1Ø�8ô		
ñ 	˜°Ð/@ÔAÙØØ+Ø Ð+ô	
ðô	€	ñ( Ø
ØØ�xÐ áØØ"Ú1Ø�8ô		
ñ 	˜°Ð/@ÔAÙØØ,Ø Ð+ô	
ðô	€ñ( �OÐ,<Ô=€
áØ
ØÚQáØØ"ØÐ2Ð3Ø�8ô		
ñ 	Ø+Ø)Ð*ô	
ñ 	ØØ#Ð$ÙBô	
ñ
 	Ø-Ø2Ð3Ù>ô	
ñ
 	Ø)Ø.Ð/Ù>Ø�;ô		
ñ 	ØØ+Ø Ð+ÙBô		
ñ 	ØØ+òñ ?ô	
ðC-ô	2€ðj ˆYØˆyØˆYØˆYØ�?Ø‰f�_Ð-=Ô>Ø�?ðÐ ò-ò÷õ(.õ0òf9õ:J÷>C÷LV÷,o
õdô(4r&   