+
    TV-jI&  ã                   óŽ  € ^ 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Ht ^RIHt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ÚListÚOptionalN)Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚcreate_ssm_maskÚscaled_dot_product_attention)ÚArraysCacheÚKVCachec                   óB   a € ] tR t^t o RtRtRtRtR tV 3R lt	Rt
V tR# )Ú	ModelArgsg    €„.ANc                óL  € V P                   e*   RV P                   9   d   V P                   R,          V n        V P                  f   V P                  V n        V P                  f:   \        V P                  4       UUu. uF  w  rVR8X  g   K  VNK  	  uppV n        R # R # u uppi )NÚ
rope_thetaÚfull_attention)Úrope_parametersr   Únum_key_value_headsÚnum_attention_headsÚfull_attn_idxsÚ	enumerateÚlayer_types)ÚselfÚiÚ
layer_types   &  Úc/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_lm/models/lfm2.pyÚ__post_init__ÚModelArgs.__post_init__(   s—   € Ø×ÑÒ+°À×@TÑ@TÔ0TØ"×2Ñ2°<Õ@ˆDŒOØ×#Ñ#Ò+Ø'+×'?Ñ'?ˆDÔ$Ø×ÑÒ&ô &/¨t×/?Ñ/?Ô%@ô#á%@‘M�AØÐ!1Ñ1÷ �Ù%@ò#ˆDÖñ 'ùó#s   Á=B ÂB c                óN  <€ 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[;R&   S[;R&   S[;R&   S[;R&   S[;R&   S[S[,          ;R&   S[S[S[,          ,          ;R&   S[S[S[ ,          ,          ;R&   # )é   Ú
model_typeÚ
vocab_sizeÚhidden_sizeÚnum_hidden_layersr   r   Úmax_position_embeddingsÚnorm_epsÚ	conv_biasÚconv_L_cacheÚ	block_dimÚblock_ff_dimÚblock_multiple_ofÚblock_ffn_dim_multiplierÚblock_auto_adjust_ff_dimr   r   r   r   )ÚstrÚintÚfloatÚboolr   Údictr   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚModelArgs.__annotate__   s  ø‡ ‚ á�Oñ ñ �Oñ ñ Ññ	 ñ
 Ññ ñ Ññ ñ Ññ ñ !Ñ ñ ñ �Oñ ñ �Oñ ñ Ññ ñ �Nñ ñ Ññ ñ Ññ ñ $Ñ#ñ ñ  #Ñ"ñ! ñ" Ñ!ñ# ñ$ ™d•^Ñ*ñ% ñ& ™T¡#�YÕ'Ñ.ñ' ñ( ™$™s�)Õ$Ñ+ò) ó    )r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r4   s   @r   r   r      s'   ø‡ € ð" "€JØ&*€OØ*.€NØ'+€Kò
÷- ƒ r7   r   c                   óT   a a€ ] tR t^5t 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   )r3   r4   s   "€r   r5   ÚAttention.__annotate__6   s   ø€ ÷ 
ñ 
™Yñ 
r7   c                óô  <€ \         SV `  4        VP                  pVP                  ;V n        pVP
                  ;V n        pVP                  V,          ;V n        pVR,          V n        \        P                  ! WQP                  R7      V n        \        P                  ! WQP                  R7      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 P                  VP(                  RR7      V n        R# )g      à?©ÚepsF©Úbias)ÚbaseÚtraditionalNg      à¿)ÚsuperÚ__init__r#   r   Ún_headsr   Ú
n_kv_headsÚhead_dimÚscaleÚnnÚRMSNormr&   Úq_layernormÚk_layernormÚLinearÚq_projÚk_projÚv_projÚout_projÚRoPEr   Úrope)r   rC   ÚdimrO   rP   rQ   Ú	__class__s   &&    €r   rN   ÚAttention.__init__6   s  ø€ Ü‰ÑÔà×ÑˆØ!%×!9Ñ!9Ð9ˆŒ�wØ'+×'?Ñ'?Ð?ˆŒ˜*à#'×#3Ñ#3°wÕ#>Ð>ˆŒ˜à˜t•^ˆŒ
äŸ:š: h·M±MÔBˆÔÜŸ:š: h·M±MÔBˆÔä—i’i ¨xÕ%7¸eÔDˆŒÜ—i’i °(Õ%:ÀÔGˆŒÜ—i’i °(Õ%:ÀÔGˆŒÜŸ	š	 'Õ"4°cÀÔFˆŒä—G’GØ�M‰MØ—‘Øô
ˆŽ	r7   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   )r3   r4   s   "€r   r5   rE   O   sH   ø€ ÷ %ñ %á�8‰8ð%ñ ‘r—x‘xÕ ð%ñ ™�}ð	%ñ
 
�‰ñ%r7   c           	     óX  € VP                   w  rEpV P                  V4      V P                  V4      V P                  V4      r˜pV P	                  VP                  WEV P                  R4      4      P                  ^ ^^^4      pV P                  VP                  WEV P                  R4      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“W P                  R7      p
V
P                  ^ ^^^4      P                  WER4      p
V P                  V
4      # )é   )Úoffset)re   rd   rR   éÿÿÿÿ)ÚshaperX   rY   rZ   rU   ÚreshaperO   Ú	transposerV   rP   r]   rl   Úupdate_and_fetchr   rR   r[   )r   rc   rd   re   ÚBÚLÚDÚqueriesÚkeysÚvaluesÚoutputs   &&&&       r   Ú__call__ÚAttention.__call__O   so  € ð —'‘'‰ˆˆaà $§¡¨A£°·±¸A³ÀÇÁÈAÃ�vˆà×"Ñ" 7§?¡?°1¸¿¹ÀrÓ#JÓK×UÑUØˆq�!�Qó
ˆð ×Ñ §¡¨Q°4·?±?ÀBÓ GÓH×RÑRØˆq�!�Qó
ˆð —‘  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°TÇÁô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆØ�}‰}˜VÓ$Ð$r7   )rQ   rV   rY   rO   rP   r[   rU   rX   r]   rR   rZ   ©NN©	r8   r9   r:   r;   rN   ry   r=   r>   Ú__classcell__©r_   r4   s   @@r   r@   r@   5   s   ù‡ € ÷
ó 
÷2%÷ %ò %r7   r@   c                   óT   a a€ ] tR t^pt 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# )Ú	ShortConvc                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r    rC   Ú	layer_idx©r   r/   )r3   r4   s   "€r   r5   ÚShortConv.__annotate__q   s#   ø€ ÷ Vñ VáðVñ ñVr7   c                ó"  <€ \         SV `  4        Wn        W n        VP                  V n        VP                  V n        \        P                  ! VP                  VP                  V P
                  VP                  V P                  R 7      V n        \        P                  ! VP                  ^VP                  ,          V P                  R7      V n        \        P                  ! VP                  VP                  V P                  R7      V n        R# ))Úin_channelsÚout_channelsÚkernel_sizeÚgroupsrJ   rI   N)rM   rN   rC   rƒ   r(   ÚL_cacher'   rJ   rS   ÚConv1dr#   ÚconvrW   Úin_projr[   ©r   rC   rƒ   r_   s   &&&€r   rN   ÚShortConv.__init__q   sº   ø€ ô
 	‰ÑÔØŒ	Ø"ŒØ×(Ñ(ˆŒØ—N‘NˆŒ	ä—I’IØ×(Ñ(Ø×)Ñ)ØŸ™Ø×#Ñ#Ø—‘ô
ˆŒ	ô —y’y ×!1Ñ!1°1°t×7GÑ7GÕ3GÈdÏiÉiÔXˆŒÜŸ	š	 $×"2Ñ"2°D×4DÑ4DÈ4Ï9É9ÔUˆŽr7   c                ót   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          /# )r    rc   rd   re   rg   )r3   r4   s   "€r   r5   r…   †   s:   ø€ ÷ $ ñ $ á�8‰8ð$ ñ ‘r—x‘xÕ ð$ ñ ™�}ñ	$ r7   c                óþ  € V P                  V4      p\        P                  ! V^RR7      w  rVpWQ,          pVe    \        P                  ! VR,          V^ 4      pVEeK   V^ ,          f]   \        P                  ! VP
                  ^ ,          V P                  ^,
          V P                  P                  3VP                  R7      pM	V^ ,          p\        P                  ! W‡.^R7      pV P                  ^,
          p	VP
                  ^,          p
VP                  ej   \        P                  ! VP                  ^ V
4      pVR,          \        P                  ! V	4      ,           R,          p\        P                  ! W|^R7      V^ &   MVRV	) R1R3,          V^ &   VP                  V
4       M-\        P                   ! VRV P                  ^,
          ^ 3R.4      pV P#                  V4      pWm,          pV P%                  V4      # )	é   )ÚaxisN)ÚdtypeºNNNrm   ).N)r–   N)r   r   )rŽ   rh   ÚsplitÚwhereÚzerosrn   r‹   rC   r#   r•   ÚconcatenateÚlengthsÚclipÚarangeÚtake_along_axisÚadvanceÚpadr�   r[   )r   rc   rd   re   ÚBCxrr   ÚCÚBxÚstateÚn_keepÚtÚendsÚ	positionsÚconv_outÚys   &&&&           r   ry   ÚShortConv.__call__†   sŠ  € ð �l‰l˜1‹oˆÜ—(’(˜3 ¨Ô+‰ˆˆaØ�UˆØÒÜ—’˜$˜y�/¨2¨qÓ1ˆBàÓØ�Q�xÒÜŸšØ—X‘X˜a•[ $§,¡,°Õ"2°D·I±I×4IÑ4IÐJØŸ(™(ô‘ð
 ˜a��Ü—’  °!Ô4ˆBØ—\‘\ AÕ%ˆFØ—‘˜•
ˆAØ�}‰}Ò(Ü—w’w˜uŸ}™}¨a°Ó3�Ø! '�]¬R¯YªY°vÓ->Õ>À	ÕJ�	Ü×-Ò-¨bÀ!ÔD��a’à˜a & ¡¨1˜nÕ-��a‘Ø�M‰M˜!Õä—’˜˜V d§l¡l°QÕ&6¸Ð%:¸FÐCÓDˆBà—9‘9˜R“=ˆà�LˆØ�}‰}˜QÓÐr7   )r‹   rC   rJ   r�   rŽ   rƒ   r[   r{   r|   r~   s   @@r   r€   r€   p   s    ù‡ € ÷Vó V÷*$ ÷ $ ò $ r7   r€   c                   óP   a a€ ] tR t^­t oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚMLPc                óH   <€ V ^8„  d   QhRS[ RS[ RS[ RS[RS[S[,          /# )r    r^   Úff_dimÚmultiple_ofÚauto_adjust_ff_dimÚffn_dim_multiplier)r/   r1   r   r0   )r3   r4   s   "€r   r5   ÚMLP.__annotate__®   sA   ø€ ÷ 5ñ 5áð5ñ ð5ñ ð	5ñ
 !ð5ñ %¡U�Oñ5r7   c                óx  <€ \         SV `  4        V'       dL   \        ^V,          ^,          4      pVe   \        WR,          4      pW2V,           ^,
          V,          ,          p\        P                  ! WRR7      V n        \        P                  ! WRR7      V n        \        P                  ! W!RR7      V n        R# )r    NFrI   )rM   rN   r/   rS   rW   Úw1Úw3Úw2)r   r^   r¯   r°   r±   r²   r_   s   &&&&&&€r   rN   ÚMLP.__init__®   s†   ø€ ô 	‰ÑÔßÜ˜˜V� a�Ó(ˆFØ!Ò-ÜÐ/Õ8Ó9�Ø ¨kÕ%9¸AÕ%=À+Õ$MÕNˆFä—)’)˜C¨eÔ4ˆŒÜ—)’)˜C¨eÔ4ˆŒÜ—)’)˜F¨eÔ4ˆŽr7   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r    rf   )rh   ri   )r3   r4   s   "€r   r5   r³   Á   s   ø€ ÷ 7ñ 7™RŸX™Xñ 7r7   c                ót   € V P                  \        V P                  V4      V P                  V4      4      4      # ©N)r·   r   rµ   r¶   )r   rc   s   &&r   ry   ÚMLP.__call__Á   s(   € Ø�w‰w”v˜dŸg™g a›j¨$¯'©'°!«*Ó5Ó6Ð6r7   )rµ   r·   r¶   r|   r~   s   @@r   r­   r­   ­   s   ù‡ € ÷5ó 5÷&7÷ 7ð 7r7   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# )ÚLfm2DecoderLayerc                ó&   <€ V ^8„  d   QhRS[ RS[/# r‚   r„   )r3   r4   s   "€r   r5   ÚLfm2DecoderLayer.__annotate__Æ   s   ø€ ÷ Hñ H™Yð H±3ñ Hr7   c                ó  <€ \         SV `  4        W!P                  9   V n        V P                  '       d   \	        V4      V n        M\        W4      V n        \        VP                  VP                  VP                  VP                  VP                  R 7      V n        \        P                   ! VP"                  VP$                  R7      V n        \        P                   ! VP"                  VP$                  R7      V n        R# ))r^   r¯   r°   r±   r²   rG   N)rM   rN   r   Úis_attention_layerr@   Ú	self_attnr€   r�   r­   r)   r*   r+   r-   r,   Úfeed_forwardrS   rT   r#   r&   Úoperator_normÚffn_normr�   s   &&&€r   rN   ÚLfm2DecoderLayer.__init__Æ   sµ   ø€ Ü‰ÑÔØ"+×/BÑ/BÑ"BˆÔà×"×"Ð"Ü& t›_ˆD�Nä! $Ó2ˆDŒIÜØ—‘Ø×$Ñ$Ø×.Ñ.Ø#×<Ñ<Ø#×<Ñ<ô
ˆÔô  ŸZšZ¨×(8Ñ(8¸d¿m¹mÔLˆÔÜŸ
š
 4×#3Ñ#3¸¿¹ÔGˆŽr7   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# rb   rg   )r3   r4   s   "€r   r5   rÀ   Ù   sH   ø€ ÷ ñ á�8‰8ðñ ‘r—x‘xÕ ðñ ™�}ð	ñ
 
�‰ñr7   c                ó  € V P                   '       d$   V P                  V P                  V4      W#R 7      pM#V P                  V P                  V4      VVR 7      pW,           pWPP	                  V P                  V4      4      ,           pV# ))rd   re   )rÂ   rÃ   rÅ   r�   rÄ   rÆ   )r   rc   rd   re   ÚrÚhÚouts   &&&&   r   ry   ÚLfm2DecoderLayer.__call__Ù   s~   € ð ×"×"Ð"Ø—‘˜t×1Ñ1°!Ó4¸4�ÓM‰Aà—	‘	Ø×"Ñ" 1Ó%ØØð ó ˆAð
 �EˆØ×#Ñ# D§M¡M°!Ó$4Ó5Õ5ˆØˆ
r7   )r�   rÄ   rÆ   rÂ   rÅ   rÃ   r{   r|   r~   s   @@r   r¾   r¾   Å   s    ù‡ € ÷Hó H÷&÷ ò r7   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# )Ú	Lfm2Modelc                ó    <€ V ^8„  d   QhRS[ /# rB   rD   )r3   r4   s   "€r   r5   ÚLfm2Model.__annotate__î   s   ø€ ÷ ñ ™Yñ r7   c                óv  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! VP                  VP                  4      V n        \        VP                  4       Uu. uF  p\        WR 7      NK  	  upV n        \
        P                  ! VP                  VP                  R7      V n        VP                  ^ ,          V n        ^ V n        \        VP                  4       F/  pW!P                  9   d   V ;P"                  ^,          un        K.   R# 	  R# u upi ))rƒ   rG   N)rM   rN   rC   r"   r$   rS   Ú	Embeddingr#   Úembed_tokensÚranger¾   ÚlayersrT   r&   Úembedding_normr   Úfa_idxÚconv_idx)r   rC   r   r_   s   && €r   rN   ÚLfm2Model.__init__î   så   ø€ Ü‰ÑÔØŒ	ØŸ/™/ˆŒØ!%×!7Ñ!7ˆÔÜŸLšL¨¯©¸$×:JÑ:JÓKˆÔä9>¸t×?UÑ?UÔ9Vó
Ù9V°AÔ˜T×/Ñ9Vñ
ˆŒô !Ÿjšj¨×)9Ñ)9¸t¿}¹}ÔMˆÔà×)Ñ)¨!Õ,ˆŒØˆŒÜ�t×-Ñ-Ö.ˆAØ×'Ñ'Ô'Ø—’ Õ"—âó	 /ùò
s   Á?D6c                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# ©r    ÚinputsÚinput_embeddings©rh   ri   r   )r3   r4   s   "€r   r5   rÑ     s,   ø€ ÷ &ñ &á—‘ð&ñ #¡2§8¡8Õ,ñ	&r7   c                ó„  € Ve   TpMV P                  V4      pVf   R .\        V P                  4      ,          p\        WBV P                  ,          4      p\        WBV P                  ,          4      p\        V P                  V4       F%  w  rxVP                  '       d   TMTp	V! WIVR7      pK'  	  V P                  V4      # )N)re   )
rÔ   ÚlenrÖ   r	   rØ   r
   rÙ   ÚziprÂ   r×   )
r   rÝ   re   rÞ   rË   Ú	attn_maskÚ	conv_maskÚlayerÚcrd   s
   &&&&      r   ry   ÚLfm2Model.__call__  s§   € ð Ò'Ø ‰Aà×!Ñ! &Ó)ˆAàŠ=Ø�FœS §¡Ó-Õ-ˆEä)¨!°4·;±;Õ-?Ó@ˆ	Ü# A¨T¯]©]Õ';Ó<ˆ	ä˜DŸK™K¨Ö/‰HˆEØ %× 8× 8Ð 8‘9¸iˆDÙ�a QÔ'ŠAñ 0ð ×"Ñ" 1Ó%Ð%r7   )rC   rÙ   rÔ   r×   rØ   rÖ   r$   r"   r{   r|   r~   s   @@r   rÏ   rÏ   í   s   ù‡ € ÷ó ÷(&÷ &ò &r7   rÏ   c                   óp   a a€ ] tR tR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	R	t
VtV ;t# )ÚModeli  c                ó    <€ V ^8„  d   QhRS[ /# rB   rD   )r3   r4   s   "€r   r5   ÚModel.__annotate__  s   ø€ ÷ %ñ %™Yñ %r7   c                ór   <€ \         SV `  4        Wn        VP                  V n        \	        V4      V n        R # r»   )rM   rN   rC   r!   rÏ   Úmodel)r   rC   r_   s   &&€r   rN   ÚModel.__init__  s)   ø€ Ü‰ÑÔØŒ	ØŸ/™/ˆŒÜ˜t“_ˆŽ
r7   c                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# rÜ   rß   )r3   r4   s   "€r   r5   rë   !  s,   ø€ ÷ 6ñ 6á—‘ð6ñ #¡2§8¡8Õ,ñ	6r7   c                óp   € V P                  WV4      pV P                   P                  P                  V4      # r»   )rí   rÔ   Ú	as_linear)r   rÝ   re   rÞ   rÌ   s   &&&& r   ry   ÚModel.__call__!  s0   € ð �j‰j˜Ð(8Ó9ˆØ�z‰z×&Ñ&×0Ñ0°Ó5Ð5r7   c                óÊ   € / pVP                  4        FL  w  r4R V9   d=   VP                  R,          VP                  ^,          8”  d   VP                  ^ ^^4      pWBV&   KN  	  V# )zconv.weightrm   )Úitemsrn   rp   )r   ÚweightsÚsanitized_weightsÚnameÚparams   &&   r   ÚsanitizeÚModel.sanitize*  s\   € ØÐØ"Ÿ=™=ž?‰KˆDØ Ô$Ø—;‘;˜r•? U§[¡[°¥^Ô3Ø!ŸO™O¨A¨q°!Ó4�Eà&+˜dÓ#ñ +ð !Ð r7   c                ó.   € V P                   P                  # r»   )rí   rÖ   )r   s   &r   rÖ   ÚModel.layers4  s   € à�z‰z× Ñ Ð r7   c                ó�   € V P                    Uu. uF+  pVP                  '       d   \        4       M\        ^R7      NK-  	  up# u upi )rk   )Úsize)rÖ   rÂ   r   r   )r   Úls   & r   Ú
make_cacheÚModel.make_cache8  sD   € ð —[’[ó
á �ð ×-×-Ð-ŒGŒI´;ÀAÔ3FÒFÙ ñ
ð 	
ùò 
s
   �A¦A)rC   rí   r!   r{   )r8   r9   r:   r;   rN   ry   rù   ÚpropertyrÖ   r   r=   r>   r}   r~   s   @@r   ré   ré     s<   ù‡ € ÷%ó %÷6ò 6ò!ð ñ!ó ð!÷
ò 
r7   ré   )Údataclassesr   Útypingr   r   r   Úmlx.coreÚcorerh   Úmlx.nnrS   Úactivationsr   rK   r   r	   r
   r   re   r   r   r   ÚModuler@   r€   r­   r¾   rÏ   ré   © r7   r   Ú<module>r     s¦   ðå !ß &Ñ &å Ý å ÷ó ÷ (ð ô�ó ó ðôD8%�—	‘	ô 8%ôv: �—	‘	ô : ôz7ˆ"�)‰)ô 7ô0%�r—y‘yô %ôP*&�—	‘	ô *&ôZ"
ˆB�I‰Iö "
r7   