+
    TV-jÎ  ã                   óŠ  € ^ RI Ht ^ RIHt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 R]4      4       t ! R	 R
]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      tR# )é    )Ú	dataclass)ÚAnyÚDictÚOptionalÚUnionN)Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚscaled_dot_product_attention)Ú	SwitchGLUc                   óF   a € ] tR t^t o RtRtRtRtRtR t	V 3R lt
RtV tR# )Ú	ModelArgsNi@B Fc                óX  a € S P                   f   S P                  S n         S P                  '       dx   RR0p\        ;QJ d    V 3R lV 4       F  '       d   K   RM	  RM! V 3R lV 4       4      '       g   \	        RV 24      hS P                  R,          R8w  d   \	        R4      hR # R # )	NÚfactorÚtypec              3   ó@   <"  € T F  qSP                   9   x € K  	  R # 5i©N)Úrope_scaling)Ú.0ÚkeyÚselfs   & €Úh/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_lm/models/qwen2_moe.pyÚ	<genexpr>Ú*ModelArgs.__post_init__.<locals>.<genexpr>'   s   øé € ÐI¹=°C˜d×/Ñ/Ö/»=ùs   ƒFTzrope_scaling must contain keys Úlinearz4rope_scaling 'type' currently only supports 'linear')Únum_key_value_headsÚnum_attention_headsr   ÚallÚ
ValueError)r   Úrequired_keyss   f r   Ú__post_init__ÚModelArgs.__post_init__!   s�   ø€ Ø×#Ñ#Ò+Ø'+×'?Ñ'?ˆDÔ$à××ÐØ% vÐ.ˆMß“3ÔI¹=ÓI—3—3’3ÔI¹=ÓI×IÒIÜ Ð#BÀ=À/Ð!RÓSÐSà× Ñ  Õ(¨HÔ4Ü Ð!WÓXÐXñ 5ñ ó    c                ó&  <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[;R	&   S[;R
&   S[;R&   S[S[,          ;R&   S[;R&   S[;R&   S[S[S[ S[S[S[ 3,          3,          ,          ;R&   S[;R&   # )é   Ú
model_typeÚhidden_sizeÚnum_hidden_layersÚintermediate_sizer   Únum_experts_per_tokÚnum_expertsÚmoe_intermediate_sizeÚshared_expert_intermediate_sizeÚrms_norm_epsÚ
vocab_sizer   Ú
rope_thetaÚrope_traditionalr   Útie_word_embeddings)ÚstrÚintÚfloatr   Úboolr   r   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚModelArgs.__annotate__   sí   ø‡ ‚ á�Oñ ñ Ññ ñ Ññ	 ñ
 Ññ ñ Ññ ñ Ññ ñ Ññ ñ Ññ ñ &)Ñ(ñ ñ Ññ ñ �Oñ ñ "¡#�Ñ-ñ ñ Ññ ñ Ñ"ñ ñ  ™4¡¡U©5±#¨:Õ%6Ð 6Õ7Õ8Ñ?ñ! ñ" Ñ%ò# r#   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r0   r1   r   r2   r!   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r8   s   @r   r   r      s0   ø‡ € ð *.ÐØ€JØ"ÐØ;?€LØ %Ðò
Y÷' ƒ r#   r   c                   óT   a a€ ] tR t^.t oV3R lV 3R lltRV3R lR lltRtVtV ;t# )Ú	Attentionc                ó    <€ V ^8„  d   QhRS[ /# ©r%   Úargs©r   )r7   r8   s   "€r   r9   ÚAttention.__annotate__/   s   ø€ ÷ 
ñ 
™Yñ 
r#   c                ón  <€ \         SV `  4        VP                  pVP                  ;V n        pVP
                  f   Q hVP
                  ;V n        pVP                  V,          pVR,          V n        \        P                  ! W#V,          RR7      V n
        \        P                  ! W$V,          RR7      V n        \        P                  ! W$V,          RR7      V n        \        P                  ! W5,          VRR7      V n        \        P                  ! VVP                  VP                   R7      V n        R # )NT©ÚbiasF)ÚtraditionalÚbaseg      à¿)ÚsuperÚ__init__r'   r   Ún_headsr   Ú
n_kv_headsÚscaleÚnnÚLinearÚq_projÚk_projÚv_projÚo_projÚRoPEr1   r0   Úrope)r   rF   ÚdimrP   rQ   Úhead_dimÚ	__class__s   &&    €r   rO   ÚAttention.__init__/   sé   ø€ Ü‰ÑÔà×ÑˆØ!%×!9Ñ!9Ð9ˆŒ�wØ×'Ñ'Ò3Ð3Ð3Ø'+×'?Ñ'?Ð?ˆŒ˜*à×#Ñ# wÕ.ˆØ˜t•^ˆŒ
ä—i’i ¨xÕ%7¸dÔCˆŒÜ—i’i °(Õ%:ÀÔFˆŒÜ—i’i °(Õ%:ÀÔFˆŒÜ—i’i Õ 2°C¸eÔDˆŒä—G’GØØ×-Ñ-Ø—‘ô
ˆŽ	r#   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# ©r%   ÚxÚmaskÚcacheÚreturn©ÚmxÚarrayr   r   )r7   r8   s   "€r   r9   rH   E   sH   ø€ ÷ #ñ #á�8‰8ð#ñ ‘r—x‘xÕ ð#ñ ™�}ð	#ñ
 
�‰ñ#r#   c           	     ó  € VP                   w  rEpV P                  V4      V P                  V4      V P                  V4      r˜pVP	                  WEV P
                  R4      P                  ^ ^^^4      pVP	                  WEV P                  R4      P                  ^ ^^^4      pV	P	                  WEV P                  R4      P                  ^ ^^^4      p	VeM   V P                  WsP                  R7      pV P                  WƒP                  R7      pVP                  W‰4      w  r‰M"V P                  V4      pV P                  V4      p\        WxW“V P                  VR7      p
V
P                  ^ ^^^4      P	                  WER4      p
V P                  V
4      # )é   )Úoffset)rc   rR   rb   éÿÿÿÿ)ÚshaperU   rV   rW   ÚreshaperP   Ú	transposerQ   rZ   rj   Úupdate_and_fetchr   rR   rX   )r   ra   rb   rc   ÚBÚLÚDÚqueriesÚkeysÚvaluesÚoutputs   &&&&       r   Ú__call__ÚAttention.__call__E   sS  € ð —'‘'‰ˆˆaà $§¡¨A£°·±¸A³ÀÇÁÈAÃ�vˆð —/‘/ !¨¯©°bÓ9×CÑCÀAÀqÈ!ÈQÓOˆØ�|‰|˜A $§/¡/°2Ó6×@Ñ@ÀÀAÀqÈ!ÓLˆØ—‘  d§o¡o°rÓ:×DÑDÀQÈÈ1ÈaÓPˆàÒØ—i‘i ·±�iÓ=ˆGØ—9‘9˜T¯,©,�9Ó7ˆDØ ×1Ñ1°$Ó?‰LˆD�&à—i‘i Ó(ˆGØ—9‘9˜T“?ˆDä-Ø˜6°d·j±jÀtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆØ�{‰{˜6Ó"Ð"r#   )rV   rP   rQ   rX   rU   rZ   rR   rW   ©NN©	r;   r<   r=   r>   rO   rw   r@   rA   Ú__classcell__©r]   r8   s   @@r   rC   rC   .   s   ù‡ € ÷
ó 
÷,#÷ #ò #r#   rC   c                   óD   a a€ ] tR t^ct oV 3R ltV3R lR ltRtVtV ;t# )ÚMLPc                óÒ   <€ \         SV `  4        \        P                  ! WR R7      V n        \        P                  ! W!R R7      V n        \        P                  ! WR R7      V n        R# ©FrJ   N)rN   rO   rS   rT   Ú	gate_projÚ	down_projÚup_proj)r   r[   Ú
hidden_dimr]   s   &&&€r   rO   ÚMLP.__init__d   sD   ø€ Ü‰ÑÔÜŸš 3¸Ô?ˆŒÜŸš :¸Ô?ˆŒÜ—y’y °uÔ=ˆŽr#   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r%   rd   ©rf   rg   )r7   r8   s   "€r   r9   ÚMLP.__annotate__j   s   ø€ ÷ Jñ J™RŸX™Xñ Jr#   c                ót   € V P                  \        V P                  V4      V P                  V4      4      4      # r   )r‚   r   r�   rƒ   )r   ra   s   &&r   rw   ÚMLP.__call__j   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr#   )r‚   r�   rƒ   rz   r|   s   @@r   r~   r~   c   s   ù‡ € õ>÷J÷ Jð Jr#   r~   c                   óP   a a€ ] tR t^nt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚQwen2MoeSparseMoeBlockc                ó    <€ V ^8„  d   QhRS[ /# rE   rG   )r7   r8   s   "€r   r9   Ú#Qwen2MoeSparseMoeBlock.__annotate__o   s   ø€ ÷ @ñ @™Yñ @r#   c                ól  <€ \         SV `  4        VP                  pVP                  pVP                  pVP
                  ;V n        pVP                  V n        \        P                  ! W%R R7      V n
        \        W#V4      V n        \        W$4      V n        \        P                  ! V^R R7      V n        R# r€   )rN   rO   r'   r,   r-   r+   r*   Útop_krS   rT   Úgater   Ú
switch_mlpr~   Úshared_expertÚshared_expert_gate)r   rF   r[   r)   r-   r+   r]   s   &&    €r   rO   ÚQwen2MoeSparseMoeBlock.__init__o   s“   ø€ Ü‰ÑÔØ×ÑˆØ ×6Ñ6ÐØ*.×*NÑ*NÐ'à)-×)9Ñ)9Ð9ˆÔ˜;Ø×-Ñ-ˆŒ
ä—I’I˜c°UÔ;ˆŒ	Ü# C¸KÓHˆŒä  ÓFˆÔÜ"$§)¢)¨C°¸Ô"?ˆÖr#   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r%   ra   r‡   )r7   r8   s   "€r   r9   rŽ   ~   s   ø€ ÷ (ñ (á�8‰8ñ(r#   c                ó  € V P                  V4      p\        P                  ! VRRR7      pV P                  p\        P                  ! \        P
                  ! V) V^,
          RR7      RRV13,          4      p\        P                  ! W$RR7      pV P                  W4      pWeR,          ,          P                  R	R7      pV P                  V4      p\        P                  ! V P                  V4      4      V,          pWg,           # )
ri   T)ÚaxisÚprecise)Úkthr˜   .N)r˜   rk   ).Néþÿÿÿ)r‘   rf   Úsoftmaxr�   Ústop_gradientÚargpartitionÚtake_along_axisr’   Úsumr“   Úsigmoidr”   )r   ra   ÚgatesÚkÚindsÚscoresÚyÚshared_expert_outputs   &&      r   rw   ÚQwen2MoeSparseMoeBlock.__call__~   sØ   € ð —	‘	˜!“ˆÜ—
’
˜5 r°4Ô8ˆà�J‰JˆÜ×Ò¤§¢°°¸AÀ½EÈÔ KÈCÐQSÐRSÐQSÈGÕ TÓUˆÜ×#Ò# E°bÔ9ˆà�O‰O˜AÓ$ˆØ˜	Õ"Õ"×'Ñ'¨RÐ'Ó0ˆà#×1Ñ1°!Ó4Ðä�JŠJ�t×.Ñ.¨qÓ1Ó2Ð5IÕIð 	ð Õ'Ð'r#   )r‘   r+   r“   r”   r’   r�   rz   r|   s   @@r   rŒ   rŒ   n   s    ù‡ € ÷@ó @÷(÷ (ð (r#   rŒ   c                   óT   a a€ ] tR t^”t oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚQwen2MoeDecoderLayerc                ó    <€ V ^8„  d   QhRS[ /# rE   rG   )r7   r8   s   "€r   r9   Ú!Qwen2MoeDecoderLayer.__annotate__•   s   ø€ ÷ 
ñ 
™Yñ 
r#   c                óV  <€ \         SV `  4        VP                  V n        \        V4      V n        \        V4      V n        \        P                  ! VP                  VP                  R 7      V n
        \        P                  ! VP                  VP                  R 7      V n        Wn        R# )©ÚepsN)rN   rO   r'   rC   Ú	self_attnrŒ   ÚmlprS   ÚRMSNormr.   Úinput_layernormÚpost_attention_layernormrF   ©r   rF   r]   s   &&€r   rO   ÚQwen2MoeDecoderLayer.__init__•   s{   ø€ Ü‰ÑÔØ×+Ñ+ˆÔÜ" 4›ˆŒÜ)¨$Ó/ˆŒä!Ÿzšz¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
ª
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ð Ž	r#   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# r`   re   )r7   r8   s   "€r   r9   r¬   ¡   sH   ø€ ÷ 
ñ 
á�8‰8ð
ñ ‘r—x‘xÕ ð
ñ ™�}ð	
ñ
 
�‰ñ
r#   c                ó¨   € V P                  V P                  V4      W#4      pW,           pV P                  V P                  V4      4      pWT,           pV# r   )r°   r³   r±   r´   )r   ra   rb   rc   ÚrÚhÚouts   &&&&   r   rw   ÚQwen2MoeDecoderLayer.__call__¡   sK   € ð �N‰N˜4×/Ñ/°Ó2°DÓ@ˆØ�EˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�eˆØˆ
r#   )rF   r'   r³   r±   r´   r°   ry   rz   r|   s   @@r   rª   rª   ”   s   ù‡ € ÷
ó 
÷
÷ 
ò 
r#   rª   c                   óT   a a€ ] tR t^®t oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚQwen2MoeModelc                ó    <€ V ^8„  d   QhRS[ /# rE   rG   )r7   r8   s   "€r   r9   ÚQwen2MoeModel.__annotate__¯   s   ø€ ÷ 
Hñ 
H™Yñ 
Hr#   c                óÎ  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        V P                  ^ 8”  g   Q h\
        P                  ! VP                  VP                  4      V n        \        VP                  4       Uu. uF  p\        VR7      NK  	  upV n        \
        P                  ! VP                  VP                  R7      V n        R# u upi )r   )rF   r®   N)rN   rO   rF   r/   r(   rS   Ú	Embeddingr'   Úembed_tokensÚrangerª   Úlayersr²   r.   Únorm)r   rF   Ú_r]   s   && €r   rO   ÚQwen2MoeModel.__init__¯   s­   ø€ Ü‰ÑÔØŒ	ØŸ/™/ˆŒØ!%×!7Ñ!7ˆÔØ�‰ Ô"Ð"Ð"ÜŸLšL¨¯©¸$×:JÑ:JÓKˆÔä5:¸4×;QÑ;QÔ5Ró
Ù5R°Ô  d×+Ñ5Rñ
ˆŒô —J’J˜t×/Ñ/°T×5FÑ5FÔGˆŽ	ùò
s   ÂC"c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r%   Úinputsr‡   )r7   r8   s   "€r   r9   rÀ   »   s   ø€ ÷ ñ á—‘ñr#   c                óü   € V P                  V4      pVf   R .\        V P                  4      ,          p\        W2^ ,          4      p\	        V P                  V4       F  w  rVV! W4V4      pK  	  V P                  V4      # r   )rÃ   ÚlenrÅ   r
   ÚziprÆ   )r   rË   rc   rº   rb   ÚlayerÚcs   &&&    r   rw   ÚQwen2MoeModel.__call__»   so   € ð
 ×Ñ˜fÓ%ˆàŠ=Ø�FœS §¡Ó-Õ-ˆEä$ Q¨a­Ó1ˆä˜DŸK™K¨Ö/‰HˆEÙ�a˜qÓ!ŠAñ 0ð �y‰y˜‹|Ðr#   )rF   rÃ   rÅ   rÆ   r(   r/   r   rz   r|   s   @@r   r¾   r¾   ®   s    ù‡ € ÷
Hó 
H÷÷ ò r#   r¾   c                   ój   a a€ ] tR t^Ít oV3R lV 3R lltRV3R lR lltR t]R 4       tRt	Vt
V ;t# )	ÚModelc                ó    <€ V ^8„  d   QhRS[ /# rE   rG   )r7   r8   s   "€r   r9   ÚModel.__annotate__Î   s   ø€ ÷ Pñ P™Yñ Pr#   c                óÖ   <€ \         SV `  4        Wn        VP                  V n        \	        V4      V n        \        P                  ! VP                  VP                  R R7      V n
        R# r€   )rN   rO   rF   r&   r¾   ÚmodelrS   rT   r'   r/   Úlm_headrµ   s   &&€r   rO   ÚModel.__init__Î   sH   ø€ Ü‰ÑÔØŒ	ØŸ/™/ˆŒÜ" 4Ó(ˆŒ
Ü—y’y ×!1Ñ!1°4·?±?ÈÔOˆŽr#   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rÊ   r‡   )r7   r8   s   "€r   r9   rÕ   Õ   s   ø€ ÷ !ñ !á—‘ñ!r#   c                óF   € V P                  W4      pV P                  V4      # r   )r×   rØ   )r   rË   rc   r»   s   &&& r   rw   ÚModel.__call__Õ   s!   € ð
 �j‰j˜Ó'ˆØ�|‰|˜CÓ Ð r#   c                óŽ  € R V9  d   V# \        V P                  P                  4       F“  pRV 2pR F…  pR F|  pV RV RV 2V9   g   K  \        V P                  P                  4       Uu. uF  pVP	                  V RV RV RV 24      NK!  	  pp\
        P                  ! V4      W RV RV 2&   K~  	  K‡  	  K•  	  V# u upi )z+model.layers.0.mlp.experts.0.up_proj.weightzmodel.layers.z.mlp.experts.0.Ú.z.mlp.experts.z.mlp.switch_mlp.)rƒ   r‚   r�   )ÚweightÚscalesÚbiases)rÄ   rF   r(   r+   Úpoprf   Ústack)r   ÚweightsÚlÚprefixÚnr£   ÚeÚto_joins   &&      r   ÚsanitizeÚModel.sanitizeÝ   så   € Ø8ÀÔGØˆNÜ�t—y‘y×2Ñ2Ö3ˆAØ$ Q CÐ(ˆFÛ:�Û7�AØ ˜ °°°1°Q°CÐ8¸GÖCô &+¨4¯9©9×+@Ñ+@Ô%Aó#á%A ð $ŸK™K¨6¨(°-À¸sÀ!ÀAÀ3ÀaÈÀsÐ(KÖLÙ%Að  ð #ô GIÇhÂhÈwÓFW˜ (Ð*:¸1¸#¸Q¸q¸cÐ BÓCó 8ó ;ñ 4ð ˆùò#s   Á-%C
c                ó.   € V P                   P                  # r   )r×   rÅ   )r   s   &r   rÅ   ÚModel.layersì   s   € à�z‰z× Ñ Ð r#   )rF   rØ   r×   r&   r   )r;   r<   r=   r>   rO   rw   rê   ÚpropertyrÅ   r@   rA   r{   r|   s   @@r   rÓ   rÓ   Í   s9   ù‡ € ÷Pó P÷!ò !òð ñ!ó ÷!ð !r#   rÓ   )Údataclassesr   Útypingr   r   r   r   Úmlx.coreÚcorerf   Úmlx.nnrS   Úactivationsr   rM   r	   r
   r   Úswitch_layersr   r   ÚModulerC   r~   rŒ   rª   r¾   rÓ   © r#   r   Ú<module>rø      s¤   ðõ "ß -Ó -å Ý å ß TÑ TÝ $ð ôY�ó Yó ðYô>2#�—	‘	ô 2#ôjJˆ"�)‰)ô Jô#(˜RŸY™Yô #(ôL˜2Ÿ9™9ô ô4�B—I‘Iô ô>!!ˆB�I‰Iö !!r#   