Ë
    îÿæiT  ã                   ó¶  — d dl mZ d dlmZmZmZmZmZ d dlm	Z
 d dlmZ ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ e G d„ de«      «       Z G d„ dej<                  «      Ze
j@                  de
jB                  dee
jB                     de"de"de"de#de$de%dee
jB                  e
jB                  f   fd„«       Z& G d„ dej<                  «      Z' G d„ dej<                  «      Z( G d„ dej<                  «      Z) G d„ d ej<                  «      Z* G d!„ d"ej<                  «      Z+ G d#„ d$ej<                  «      Z, G d%„ d&ej<                  «      Z-y)'é    )Ú	dataclass)ÚAnyÚDictÚListÚOptionalÚTupleNé   )Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚcreate_ssm_maskÚscaled_dot_product_attention)ÚArraysCacheÚKVCache)Úgated_delta_update)ÚMultiLinear)Ú	SwitchGLUc                   ó°  — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   eeef   ed<   eed<   eed<   eed<   eed<   dZ	e
eeef      ed<   dZeed<   dZe
e   ed<   dZe
e   ed<   dZe
e   ed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   d Zeed!<   dZeed"<   dZeed#<   dZeed$<   dZeed%<   dZeed&<   y)'Ú	ModelArgsÚ
model_typeÚ
vocab_sizeÚhidden_sizeÚnum_hidden_layersÚnum_attention_headsÚnum_key_value_headsÚintermediate_sizeÚhead_dimÚ
rope_thetaÚrms_norm_epsÚlinear_attn_configÚmodel_max_lengthÚnum_expertsÚmoe_intermediate_sizeÚkv_lora_rankNÚrope_scalingFÚtie_word_embeddingsÚqk_nope_head_dimÚqk_rope_head_dimÚ
v_head_dimÚmla_use_noper	   Únum_experts_per_tokenr   Únum_shared_expertsÚsigmoidÚmoe_router_activation_funcTÚmoe_renormalizeç      ð?Úrouted_scaling_factorÚfirst_k_dense_replaceÚmoe_layer_freqÚuse_grouped_topkÚnum_expert_groupÚ
topk_group)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚfloatr   r   r%   r   r&   Úboolr'   r(   r)   r*   r+   r,   r.   r/   r1   r2   r3   r4   r5   r6   © ó    ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/kimi_linear.pyr   r      s$  … àƒOØƒOØÓØÓØÓØÓØÓØƒMØÓØÓØ˜S #˜X™Ó&ØÓØÓØÓØÓØ-1€L�(˜4  S ™>Ñ*Ó1Ø %Ð˜Ó%Ø&*Ð�h˜s‘mÓ*Ø&*Ð�h˜s‘mÓ*Ø $€J�˜‘Ó$Ø€L�$ÓØ!"Ð˜3Ó"ØÐ˜ÓØ&/Ð Ó/Ø €O�TÓ Ø#&Ð˜5Ó&Ø!"Ð˜3Ó"Ø€N�CÓØ!Ð�dÓ!ØÐ�cÓØ€J�Ôr@   r   c                   óv   ‡ — e Zd Z	 	 ddedee   dee   fˆ fd„Zdej                  dej                  fd„Z	ˆ xZ
S )	ÚKimiMLPÚargsr   r   c                 ó  •— t         ‰| �  «        |xs |j                  }|xs |j                  }t	        j
                  ||d¬«      | _        t	        j
                  ||d¬«      | _        t	        j
                  ||d¬«      | _        y ©NF©Úbias)	ÚsuperÚ__init__r   r   ÚnnÚLinearÚ	gate_projÚup_projÚ	down_proj)ÚselfrD   r   r   ÚdimÚhiddenÚ	__class__s         €rA   rJ   zKimiMLP.__init__:   sl   ø€ ô 	‰ÑÔØÒ-˜T×-Ñ-ˆØ"Ò< d×&<Ñ&<ˆÜŸ™ 3¨°UÔ;ˆŒÜ—y‘y  f°5Ô9ˆŒÜŸ™ 6¨3°UÔ;ˆ�r@   ÚxÚreturnc                 ót   — | j                  t        | j                  |«      | j                  |«      «      «      S ©N)rO   r
   rM   rN   )rP   rT   s     rA   Ú__call__zKimiMLP.__call__G   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr@   ©NN)r7   r8   r9   r   r   r<   rJ   ÚmxÚarrayrX   Ú__classcell__©rS   s   @rA   rC   rC   9   sR   ø„ ð &*Ø+/ñ	<àð<ð ˜c‘]ð<ð $ C™=õ	<ðJ˜"Ÿ(™(ð J r§x¡x÷ Jr@   rC   ÚgatesrH   Útop_kÚn_groupr6   r1   ÚrenormalizeÚscore_functionrU   c                 óF  — |dk(  rt        j                  | «      }n-|dk(  rt        j                  | dd¬«      }nt        d|› d�«      ‚|}	|�||j	                  |j
                  «      z   }|dkD  rÏt        j                  |d|df¬	«      }t        j                  |d
d¬«      j                  dd¬«      }
||z
  }t        j                  |
|dz
  d¬«      dd |…d d …f   }t        j                  |t        j                  |«      t        j                  d|j
                  ¬«      d¬«      }t        j                  |dd«      }t        j                  | |dz
  d¬«      dd |…f   }t        j                  |	|d¬«      }|dkD  r|r|j                  dd¬«      dz   }||z  }|||z  fS )Nr-   ÚsoftmaxéÿÿÿÿT)ÚaxisÚprecisez#Unsupported MoE router activation 'Ú'r	   )rf   Úshapeé   ©rf   )rf   Úkeepdimséþÿÿÿ)Úkthrf   .g        ©Údtypeg#B’¡œÇ;)rZ   r-   rd   Ú
ValueErrorÚastyperp   Ú	unflattenÚtopkÚsumÚargpartitionÚput_along_axisÚstop_gradientr[   ÚflattenÚtake_along_axis)r^   rH   r_   r`   r6   r1   ra   rb   ÚscoresÚorig_scoresÚgroup_scoresÚkÚ	group_idxÚindsÚdenominators                  rA   Ú_group_expert_selectr‚   K   s˜  € ð ˜Ò"Ü—‘˜EÓ"‰Ø	˜9Ò	$Ü—‘˜E¨°DÔ9‰äÐ>¸~Ð>NÈaÐPÓQÐQà€KØÐØ˜$Ÿ+™+ f§l¡lÓ3Ñ3ˆà�‚{Ü—‘˜f¨2°g¸r°]ÔCˆÜ—w‘w˜v q¨rÔ2×6Ñ6¸BÈÐ6ÓNˆØ�jÑ ˆÜ—O‘O L°a¸!±eÀ"ÔEÀcÈ2ÈAÈ2ÊqÀjÑQˆ	Ü×"Ñ"ØÜ×Ñ˜YÓ'Ü�H‰H�S §¡Ô-Øô	
ˆô —‘˜F B¨Ó+ˆä�?‰?˜F˜7¨°©	¸Ô;¸CÀÀ%À¸KÑH€DÜ×Ñ ¨T¸Ô;€Fàˆq‚y‘[Ø—j‘j b°4�jÓ8¸5Ñ@ˆØ˜+Ñ%ˆà�Ð/Ñ/Ð/Ð/r@   c                   ó\   ‡ — e Zd Zdefˆ fd„Zdej                  dej                  fd„Zˆ xZS )ÚKimiSparseMoErD   c                 óÀ  •— t         ‰| �  «        || _        |j                  }|j                  }|€t        d«      ‚t        j                  ||d¬«      | _        t        ||j                  |«      | _        t        j                  |ft        j                  ¬«      | _        |j                   r,|j                  |j                   z  }t#        ||¬«      | _        y d | _        y )Nz,num_experts must be specified for MoE layersFrG   ro   )r   )rI   rJ   rD   r   r"   rq   rK   rL   Úgater   r#   Ú
switch_mlprZ   ÚzerosÚfloat32Úe_score_correction_biasr,   rC   Úshared_experts)rP   rD   rR   ÚexpertsÚshared_hiddenrS   s        €rA   rJ   zKimiSparseMoE.__init__y   sµ   ø€ Ü‰ÑÔØˆŒ	Ø×!Ñ!ˆØ×"Ñ"ˆØˆ?ÜÐKÓLÐLä—I‘I˜f g°EÔ:ˆŒ	Ü# F¨D×,FÑ,FÈÓPˆŒÜ')§x¡x°°
Ä"Ç*Á*Ô'MˆÔ$à×"Ò"Ø ×6Ñ6¸×9PÑ9PÑPˆMÜ")¨$À-Ô"PˆDÕà"&ˆDÕr@   rT   rU   c           
      óê  — | j                  |«      }t        || j                  | j                  j                  | j                  j
                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  «      \  }}| j                  ||«      }||d   z  j                  d¬«      }| j                  �|| j                  |«      z   }|S )N©.Nrm   rk   )r†   r‚   rŠ   rD   r+   r5   r6   r1   r/   r.   r‡   ru   r‹   )rP   rT   r{   r€   ÚweightsÚouts         rA   rX   zKimiSparseMoE.__call__‹   sÌ   € Ø—‘˜1“ˆÜ,ØØ×(Ñ(Ø�I‰I×+Ñ+Ø�I‰I×&Ñ&Ø�I‰I× Ñ Ø�I‰I×+Ñ+Ø�I‰I×%Ñ%Ø�I‰I×0Ñ0ó	
‰ˆˆgð �o‰o˜a Ó&ˆØ�W˜YÑ'Ñ'×,Ñ,°"Ð,Ó5ˆØ×ÑÐ*Ø˜×+Ñ+¨AÓ.Ñ.ˆCØˆ
r@   )	r7   r8   r9   r   rJ   rZ   r[   rX   r\   r]   s   @rA   r„   r„   x   s*   ø„ ð'˜Yõ 'ð$˜"Ÿ(™(ð  r§x¡x÷ r@   r„   c            	       óŠ   ‡ — e Zd Zdefˆ fd„Z	 	 ddej                  deej                     dee   dej                  fd„Z	ˆ xZ
S )	ÚKimiMLAAttentionrD   c                 ó  •— t         ‰| �  «        || _        |j                  | _        |j
                  | _        |j                  xs |j                  | _        |j                  xs d| _        | j                  | j                  z   | _	        |j                  xs |j                  | _
        |j                  | _        | j                  dz  | _        |j                  }t        j                  || j                  | j                  z  d¬«      | _        t        j                  ||j                  | j                  z   d¬«      | _        t        j$                  |j                  |j&                  ¬«      | _        t+        | j                  |j                  | j                  «      | _        t+        |j                  | j                  | j                  «      | _        t        j                  | j                  | j                  z  |d¬«      | _        y )Nr   ç      à¿FrG   ©Úeps)rI   rJ   rD   r   Ú	num_headsr   r'   r   r(   Ú
q_head_dimr)   r$   Úscaler   rK   rL   Úq_projÚkv_a_proj_with_mqaÚRMSNormr   Úkv_a_layernormr   Úembed_qÚunembed_outÚo_proj)rP   rD   rR   rS   s      €rA   rJ   zKimiMLAAttention.__init__Ÿ   s†  ø€ Ü‰ÑÔØˆŒ	Ø×1Ñ1ˆŒØ#'×#;Ñ#;ˆÔ Ø $× 5Ñ 5Ò F¸¿¹ˆÔØ $× 5Ñ 5Ò :¸ˆÔØ×/Ñ/°$×2GÑ2GÑGˆŒØŸ/™/Ò:¨T¯]©]ˆŒØ ×-Ñ-ˆÔØ—_‘_ dÑ*ˆŒ
à×!Ñ!ˆÜ—i‘i ¨¯©¸¿¹Ñ(HÈuÔUˆŒÜ"$§)¡)ØØ×Ñ × 5Ñ 5Ñ5Øô#
ˆÔô
 !Ÿj™j¨×):Ñ):À×@QÑ@QÔRˆÔÜ"Ø×!Ñ! 4×#4Ñ#4°d·n±nó
ˆŒô 'Ø×Ñ˜tŸ™°·±ó
ˆÔô —i‘i §¡°·±Ñ @À&ÈuÔUˆ�r@   rT   ÚmaskÚcacherU   c           	      óœ  — |j                   \  }}}| j                  |«      j                  ||| j                  | j                  «      }|j                  dddd«      }t        j                  || j                  gd¬«      \  }}	| j                  |«      }
t        j                  |
| j                  gd¬«      \  }
}|j                  ||d| j                  «      j                  dddd«      }| j                  |
«      }t        j                  |d¬«      }|�|j                  ||«      \  }}|	| j                  z  |j!                  dd«      z  }|�\t        j"                  ||t        j$                  t        j&                  |j(                  «      j*                  |j(                  «      «      }|dk(  r| j-                  |«      }|x}}n$| j-                  |d¬	«      }| j/                  |«      }t1        ||||| j                  |¬
«      }|dk(  r| j/                  |«      }|j                  dddd«      j                  ||d«      }| j3                  |«      S )Nr   rj   r	   é   re   rk   rm   F)Ú	transpose)r£   rš   r¢   )ri   r›   Úreshaper˜   r™   r¦   rZ   Úsplitr'   rœ   r$   r(   rž   Úexpand_dimsÚupdate_and_fetchrš   ÚswapaxesÚwherer[   Úfinforp   ÚminrŸ   r    r   r¡   )rP   rT   r¢   r£   ÚBÚLÚ_ÚqÚq_nopeÚq_peÚcompressed_kvÚk_peÚ	kv_latentÚ	pe_scoresr~   ÚvÚoutputs                    rA   rX   zKimiMLAAttention.__call__»   s  € ð —'‘'‰ˆˆ1ˆaà�K‰K˜‹N×"Ñ" 1 a¨¯©¸¿¹ÓIˆØ�K‰K˜˜1˜a Ó#ˆÜ—x‘x  D×$9Ñ$9Ð#:ÀÔD‰ˆ�à×/Ñ/°Ó2ˆÜ Ÿh™h }°t×7HÑ7HÐ6IÐPRÔSÑˆ�tØ�|‰|˜A˜q ! T×%:Ñ%:Ó;×EÑEÀaÈÈAÈqÓQˆØ×'Ñ'¨Ó6ˆ	ä—N‘N 9°1Ô5ˆ	àÐØ#×4Ñ4°YÀÓE‰OˆI�tà˜DŸJ™JÑ&¨$¯-©-¸¸BÓ*?Ñ?ˆ	ØÐÜŸ™ØØÜ—‘œŸ™ )§/¡/Ó2×6Ñ6¸	¿¹ÓHóˆIð �Š6Ø—\‘\ &Ó)ˆFØÐˆA‘à—‘˜Y°%�Ó8ˆAØ× Ñ  Ó+ˆAä-Ø�A�q ¨T¯Z©Z¸iô
ˆð �Š6Ø×%Ñ% fÓ-ˆFà×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸¸BÓ?ˆØ�{‰{˜6Ó"Ð"r@   rY   )r7   r8   r9   r   rJ   rZ   r[   r   r   rX   r\   r]   s   @rA   r“   r“   ž   sZ   ø„ ðV˜Yõ Vð> $(Ø#'ñ	-#à�8‰8ð-#ð �r—x‘xÑ ð-#ð ˜Ñ ð	-#ð
 
�‰÷-#r@   r“   c                   óØ   ‡ — e Zd Zdedefˆ fd„Zdej                  deej                     deej                     deej                     deej                  ej                  f   f
d	„Z	ˆ xZ
S )
ÚShortConv1dÚchannelsÚkernel_sizec                 óp   •— t         ‰| �  «        || _        t        j                  |||d|d¬«      | _        y )NFr   )Úin_channelsÚout_channelsr¾   rH   ÚgroupsÚpadding)rI   rJ   r¾   rK   ÚConv1dÚconv)rP   r½   r¾   rS   s      €rA   rJ   zShortConv1d.__init__ì   s8   ø€ Ü‰ÑÔØ&ˆÔÜ—I‘IØ Ø!Ø#ØØØô
ˆ�	r@   rT   Ústater¢   ÚlengthsrU   c                 óZ  — |�t        j                  |d   |d«      }|€Kt        j                  |j                  d   | j                  dz
  |j                  d   f|j
                  ¬«      }t        j                  ||gd¬«      }t        j                  | j                  |«      «      }| j                  dz
  }|�bt        j                  |d|j                  d   «      }|d d …d f   t        j                  |«      z   d   }	t        j                  ||	d¬«      }
||
fS |d d …| d …d d …f   }
||
fS )Nr�   r   r	   re   ro   rk   )rZ   r¬   rˆ   ri   r¾   rp   ÚconcatenaterK   ÚsilurÅ   ÚclipÚarangerz   )rP   rT   rÆ   r¢   rÇ   Ú
conv_inputr‘   Ún_keepÚendsÚ	positionsÚ	new_states              rA   rX   zShortConv1d.__call__ø   s  € ð ÐÜ—‘˜˜i™¨!¨QÓ/ˆAàˆ=Ü—H‘HØ—‘˜‘˜T×-Ñ-°Ñ1°1·7±7¸2±;Ð?ÀqÇwÁwôˆEô —^‘^ U¨A J°QÔ7ˆ
Ü�g‰g�d—i‘i 
Ó+Ó,ˆØ×!Ñ! AÑ%ˆØÐÜ—7‘7˜7 A q§w¡w¨q¡zÓ2ˆDØša ˜g™¬¯©°6Ó):Ñ:¸IÑFˆIÜ×*Ñ*¨:°yÀqÔIˆIð �Iˆ~Ðð #¢1 v g¡h² >Ñ2ˆIà�Iˆ~Ðr@   )r7   r8   r9   r<   rJ   rZ   r[   r   r   rX   r\   r]   s   @rA   r¼   r¼   ë   s|   ø„ ð

 ð 

°3õ 

ðà�8‰8ðð ˜Ÿ™Ñ!ðð �r—x‘xÑ ð	ð
 ˜"Ÿ(™(Ñ#ðð 
ˆr�x‰x˜Ÿ™Ð!Ñ	"÷r@   r¼   c            	       óŽ   ‡ — e Zd Zdedefˆ fd„Z	 	 d	dej                  deej                     dee	   dej                  fd„Z
ˆ xZS )
ÚKimiDeltaAttentionrD   Ú	layer_idxc           	      óL  •— t         ‰| �  «        |j                  }|| _        |d   | _        |d   | _        |j                  dd«      | _        | j                  | j
                  z  | _        |j                  }t        | j
                  «      dz  | _        t        j                  || j                  d¬«      | _        t        j                  || j                  d¬«      | _        t        j                  || j                  d¬«      | _        t#        | j                  | j                  «      | _        t#        | j                  | j                  «      | _        t#        | j                  | j                  «      | _        t        j                  || j
                  d¬«      | _        t        j                  | j
                  | j                  d¬«      | _        t        j                  || j                  d¬«      | _        t        j                  || j
                  d¬«      | _        t        j                  | j
                  | j                  d¬«      | _        t5        j6                  t5        j8                  t4        j:                  j=                  dd	| j                  f¬
«      «      d«      | _        t5        j@                  | j                  f«      | _!        t        jD                  | j
                  |jF                  ¬«      | _$        t        j                  | j                  |d¬«      | _%        y )Nr˜   r   Úshort_conv_kernel_sizeé   r•   FrG   r0   g      0@)ÚlowÚhighri   )r   r	   r¥   r–   )&rI   rJ   r    rÔ   r˜   r   ÚgetÚconv_kernelÚprojection_dimr   r=   rš   rK   rL   r›   Úk_projÚv_projr¼   Úq_convÚk_convÚv_convÚf_a_projÚf_b_projÚb_projÚg_a_projÚg_b_projrZ   r©   ÚlogÚrandomÚuniformÚA_logrˆ   Údt_biasr�   r   Úo_normr¡   )rP   rD   rÔ   ÚcfgrR   rS   s        €rA   rJ   zKimiDeltaAttention.__init__  s-  ø€ Ü‰ÑÔØ×%Ñ%ˆà"ˆŒØ˜[Ñ)ˆŒØ˜J™ˆŒØŸ7™7Ð#;¸QÓ?ˆÔà"Ÿn™n¨t¯}©}Ñ<ˆÔØ×!Ñ!ˆä˜4Ÿ=™=Ó)¨TÑ1ˆŒ
ä—i‘i ¨×(;Ñ(;À%ÔHˆŒÜ—i‘i ¨×(;Ñ(;À%ÔHˆŒÜ—i‘i ¨×(;Ñ(;À%ÔHˆŒä! $×"5Ñ"5°t×7GÑ7GÓHˆŒÜ! $×"5Ñ"5°t×7GÑ7GÓHˆŒÜ! $×"5Ñ"5°t×7GÑ7GÓHˆŒäŸ	™	 &¨$¯-©-¸eÔDˆŒÜŸ	™	 $§-¡-°×1DÑ1DÈ5ÔQˆŒÜ—i‘i ¨¯©¸UÔCˆŒäŸ	™	 &¨$¯-©-¸eÔDˆŒÜŸ	™	 $§-¡-°×1DÑ1DÈ5ÔQˆŒä—^‘^Ü�F‰F”2—9‘9×$Ñ$¨°4ÀÇÁÐ?PÐ$ÓQÓRØó
ˆŒ
ô —x‘x ×!4Ñ!4Ð 6Ó7ˆŒä—j‘j §¡°D×4EÑ4EÔFˆŒÜ—i‘i × 3Ñ 3°VÀ%ÔHˆ�r@   rT   r¢   r£   rU   c                 óø  — |j                   \  }}}|j                  }|�|\  }}	}
}|j                  }n
d }d }	d }
d }d }|€7t        j                  || j
                  dz
  | j                  f|¬«      }|}|}	|}
| j                  | j                  |«      |||«      \  }}| j                  | j                  |«      |	||«      \  }}	| j                  | j                  |«      |
||«      \  }}
|�||d<   |	|d<   |
|d<   |j                  ||| j                  | j                  «      }|j                  ||| j                  | j                  «      }|j                  ||| j                  | j                  «      }| j                   }|dz  t        j"                  j%                  |d d«      z  }|t        j"                  j%                  |d d«      z  }| j'                  | j)                  |«      «      j                  ||| j                  | j                  «      }| j+                  |«      j                  ||| j                  «      }t-        |||||| j.                  j                  | j                  d«      | j0                  j                  | j                  | j                  «      ||| j2                   ¬«
      \  }}|�||d<   |j5                  |«       | j7                  | j9                  |«      «      j                  ||| j                  | j                  «      }| j;                  |j                  ||| j                  | j                  «      «      t        j<                  |«      z  j                  ||d«      }| j?                  |«      S )	Nr	   ro   r   rj   g�íµ ÷Æ°>)rÆ   r¢   Ú
use_kernelr¥   re   ) ri   rp   rÇ   rZ   rˆ   rÛ   rÜ   rß   r›   rà   rÝ   rá   rÞ   r§   r˜   r   rš   ÚfastÚrms_normrã   râ   rä   r   rê   rë   ÚtrainingÚadvanceræ   rå   rì   r-   r¡   )rP   rT   r¢   r£   r¯   ÚTr±   rp   Úq_stateÚk_stateÚv_stateÚ	ssm_staterÇ   Úsrß   rà   rá   r²   r~   r¹   Ú	inv_scaleÚa_logitsÚb_logitsr‘   r†   s                            rA   rX   zKimiDeltaAttention.__call__:  s
  € ð —'‘'‰ˆˆ1ˆaØ—‘ˆàÐØ38Ñ0ˆG�W˜g yØ—m‘m‰GàˆGØˆGØˆGØˆIØˆGàˆ?Ü—‘˜!˜T×-Ñ-°Ñ1°4×3FÑ3FÐGÈuÔUˆAØˆGØˆGØˆGàŸ+™+ d§k¡k°!£n°g¸tÀWÓM‰ˆ�ØŸ+™+ d§k¡k°!£n°g¸tÀWÓM‰ˆ�ØŸ+™+ d§k¡k°!£n°g¸tÀWÓM‰ˆ�àÐØˆE�!‰HØˆE�!‰HØˆE�!‰Hà�N‰N˜1˜a §¡°·±Ó?ˆØ�N‰N˜1˜a §¡°·±Ó?ˆØ�N‰N˜1˜a §¡°·±Ó?ˆà—J‘Jˆ	Ø˜‰\œRŸW™W×-Ñ-¨a°°tÓ<Ñ<ˆØœŸ™×(Ñ(¨¨D°$Ó7Ñ7ˆà—=‘= §¡¨qÓ!1Ó2×:Ñ:Øˆq�$—.‘. $§-¡-ó
ˆð —;‘;˜q“>×)Ñ)¨!¨Q°·±Ó?ˆä+ØØØØØØ�J‰J×Ñ˜tŸ~™~¨qÓ1Ø�L‰L× Ñ  §¡°·±Ó?ØØØŸ=™=Ð(ô
‰ˆˆYð ÐØ ˆE�!‰HØ�M‰M˜!Ôà�}‰}˜TŸ]™]¨1Ó-Ó.×6Ñ6Øˆq�$—.‘. $§-¡-ó
ˆð �K‰K˜Ÿ™ A q¨$¯.©.¸$¿-¹-ÓHÓIÜ�j‰j˜Óñç
‰'�!�Q˜Ó
ð 	ð �{‰{˜3ÓÐr@   rY   ©r7   r8   r9   r   r<   rJ   rZ   r[   r   r   rX   r\   r]   s   @rA   rÓ   rÓ     sg   ø„ ð$I˜Yð $I°3õ $IðR $(Ø#ñ	G à�8‰8ðG ð �r—x‘xÑ ðG ð ˜‰}ð	G ð
 
�‰÷G r@   rÓ   c            	       óŽ   ‡ — e Zd Zdedefˆ fd„Z	 	 d	dej                  deej                     dee	   dej                  fd„Z
ˆ xZS )
ÚKimiDecoderLayerrD   rÔ   c                 ó  •— t         ‰| �  «        |j                  d   }|dz   |v | _        | j                  rt	        ||«      | _        nt        |«      | _        |j                  dkD  r2||j                  k\  r#||j                  z  dk(  rt        |«      | _        nt        |«      | _        t        j                  |j                  |j                   ¬«      | _        t        j                  |j                  |j                   ¬«      | _        y )NÚ
kda_layersr	   r   r–   )rI   rJ   r    Ú	is_linearrÓ   Ú	self_attnr“   r"   r2   r3   r„   ÚmlprC   rK   r�   r   r   Úinput_layernormÚpost_attention_layernorm)rP   rD   rÔ   r  rS   s       €rA   rJ   zKimiDecoderLayer.__init__…  sØ   ø€ Ü‰ÑÔØ×,Ñ,¨\Ñ:ˆ
Ø# a™-¨JÐ6ˆŒà�>Š>Ü/°°iÓ@ˆD�Nä-¨dÓ3ˆDŒNð ×Ñ˜qÒ Ø˜T×7Ñ7Ò7Ø˜D×/Ñ/Ñ/°1Ò4ä$ TÓ*ˆD�Hä˜t“}ˆDŒHä!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÕ%r@   rT   r¢   r£   rU   c                 ó¦   — |€d n|}| j                  | j                  |«      ||«      }||z   }| j                  | j                  |«      «      }||z   S rW   )r  r  r  r  )rP   rT   r¢   r£   Ú
attn_cacheÚyÚhÚzs           rA   rX   zKimiDecoderLayer.__call__�  sW   € ð #˜]‘T°ˆ
Ø�N‰N˜4×/Ñ/°Ó2°D¸*ÓEˆØ�‰EˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�1‰uˆr@   rY   rý   r]   s   @rA   rÿ   rÿ   „  s^   ø„ ð
˜Yð 
°3õ 
ð6 $(Ø#ñ	
à�8‰8ð
ð �r—x‘xÑ ð
ð ˜‰}ð	
ð
 
�‰÷
r@   rÿ   c                   óp   ‡ — e Zd Zdefˆ fd„Z	 ddej                  deee	      dej                  fd„Z
ˆ xZS )ÚKimiLinearModelrD   c                 óì  •— t         ‰| �  «        t        j                  |j                  |j
                  «      | _        t        |j                  «      D �cg c]  }t        ||«      ‘Œ c}| _
        t        j                  |j
                  |j                  ¬«      | _        |j                  d   }|d   dz
  | _        t        t!        | j                  «      «      D ]  }|dz   |vsŒ|| _         y  y c c}w )Nr–   r  r   r	   )rI   rJ   rK   Ú	Embeddingr   r   Úembed_tokensÚranger   rÿ   Úlayersr�   r   Únormr    Ússm_idxÚlenÚattn_idx)rP   rD   Úir  rS   s       €rA   rJ   zKimiLinearModel.__init__«  sÈ   ø€ Ü‰ÑÔÜŸL™L¨¯©¸$×:JÑ:JÓKˆÔÜ:?À×@VÑ@VÔ:WÓXÑ:W°QÔ'¨¨aÕ0Ð:WÑXˆŒÜ—J‘J˜t×/Ñ/°T×5FÑ5FÔGˆŒ	Ø×,Ñ,¨\Ñ:ˆ
Ø! !‘} qÑ(ˆŒÜ”s˜4Ÿ;™;Ó'Ö(ˆAØ�A‘˜jÒ(Ø !�”Ùñ )ùò	 Ys   ÁC1Úinputsr£   rU   c                 óV  — | j                  |«      }|€d gt        | j                  «      z  }t        ||| j                     «      }t        ||| j                     d¬«      }t        | j                  |«      D ]   \  }}|j                  r|n|} ||||¬«      }Œ" | j                  |«      S )NT)Úreturn_array)r¢   r£   )
r  r  r  r   r  r   r  Úzipr  r  )	rP   r  r£   r
  Ússm_maskÚ	attn_maskÚlayerÚlayer_cacher¢   s	            rA   rX   zKimiLinearModel.__call__·  s    € ð
 ×Ñ˜fÓ%ˆØˆ=Ø�FœS §¡Ó-Ñ-ˆEä" 1 e¨D¯L©LÑ&9Ó:ˆÜ)¨!¨U°4·=±=Ñ-AÐPTÔUˆ	ä"% d§k¡k°5Ö"9ÑˆE�;Ø$Ÿš‘8°IˆDÙ�a˜d¨+Ô6‰Að #:ð �y‰y˜‹|Ðr@   rW   )r7   r8   r9   r   rJ   rZ   r[   r   r   r   rX   r\   r]   s   @rA   r  r  ª  sF   ø„ ð
˜Yõ 
ð &*ñà—‘ðð ˜˜S™	Ñ"ðð 
�‰÷	r@   r  c                   óò   ‡ — e Zd Zdefˆ fd„Z	 ddej                  deee	      dej                  fd„Z
ed„ «       Zd„ Zd	eeej                  f   deeej                  f   fd
„Zed„ «       Zed„ «       Zˆ xZS )ÚModelrD   c                 óü   •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        |j                  rd | _        y t        j                  |j                  |j                  d¬«      | _        y rF   )rI   rJ   rD   r   r  Úmodelr&   Úlm_headrK   rL   r   r   )rP   rD   rS   s     €rA   rJ   zModel.__init__Ë  sZ   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ$ TÓ*ˆŒ
Ø×#Ò#ØˆD�LäŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆD�Lr@   r  r£   rU   c                 óª   — | j                  ||«      }| j                  €%| j                   j                  j                  |«      S | j                  |«      S rW   )r#  r$  r  Ú	as_linear)rP   r  r£   r‘   s       rA   rX   zModel.__call__Õ  sH   € ð
 �j‰j˜ Ó'ˆØ�<‰<ÐØ—:‘:×*Ñ*×4Ñ4°SÓ9Ð9Ø�|‰|˜CÓ Ð r@   c                 ó.   — | j                   j                  S rW   )r#  r  )rP   s    rA   r  zModel.layersß  s   € à�z‰z× Ñ Ð r@   c                 ó®   — g }| j                   D ]C  }|j                  r|j                  t        d¬«      «       Œ+|j                  t	        «       «       ŒE |S )Nr×   )Úsize)r  r  Úappendr   r   )rP   Úcachesr  s      rA   Ú
make_cachezModel.make_cacheã  sB   € ØˆØ—[”[ˆEØ�ŠØ—‘œk¨qÔ1Õ2à—‘œg›iÕ(ð	 !ð
 ˆr@   r�   c                 ól  — |j                  «       D ��ci c]  \  }}|j                  d«      rŒ||“Œ }}}| j                  j                  r|j	                  dd «       t        | j                  «      D �]²  \  }}d|› �}t        |j                  t        «      rñ|› d�}|› d�}dD ]t  \  }	}
|› d|	› d�}||v sŒt        | j                  j                  «      D �cg c]  }|j	                  |› d	|› d
|	› d�«      ‘Œ }}t        j                  |«      ||› d|
› d�<   Œv dD ])  }|› d|› d�}||v sŒ|j	                  |«      ||› d|› d�<   Œ+ |› d�}||v r|j	                  |«      ||› d�<   |› d�}||v r|j	                  |«      ||› d�<   t        |dd «      }t        |t        «      r�|› d�}dD ]O  \  }}|› d
|› d�}||v sŒ|j	                  |«      }|j                   dk(  r|j#                  dd«      }|||› d
|› d�<   ŒQ |› d�}||v r.||   j                   dkD  rt        j$                  ||   d«      ||<   |› d�}|› d�}||v s�ŒÔ| j                  j&                  xs | j                  j(                  }| j                  j*                  xs | j                  j(                  }||z   }| j                  j,                  }|› d�|v }|j	                  |«      }|r| j                  j.                  }|j	                  |› d�«      }|j	                  |› d�«      } |j0                  d   dz  |z  }!||j0                  d   z  }"t        j2                  ||| |!|"¬«      }|j%                  ||d«      }t        j4                  |d d …d |…d d …f   j7                  dd «      «      }#t        j4                  |d d …|d …d d …f   «      }$|rXt        j8                  |#!"¬«      \  }#}%}&t        j8                  |$|!|"¬«      \  }$}'}(|%||› d!�<   |&||› d"�<   |'||› d#�<   |(||› d$�<   |#||› d%�<   |$||› d&�<   �Œµ |S c c}}w c c}w )'Nz	model.mtpzlm_head.weightzmodel.layers.z.block_sparse_moez.mlp))Úw1rM   )Úw2rO   )Úw3rN   z.experts.0.z.weightz	.experts.Ú.z.switch_mlp.)rM   rN   rO   z.shared_experts.z.gate.weightz.gate.e_score_correction_biasz.e_score_correction_biasr  z
.self_attn))Úq_conv1drß   )Úk_conv1drà   )Úv_conv1drá   r¥   rj   r	   z.conv.weightz.dt_bias)re   z.kv_b_proj.weightz.kv_b_proj.scalesz.kv_b_proj.biasesre   é    )ÚbitsÚ
group_sizerm   z.embed_q.scalesz.embed_q.biasesz.unembed_out.scalesz.unembed_out.biasesz.embed_q.weightz.unembed_out.weight)ÚitemsÚ
startswithrD   r&   ÚpopÚ	enumerater  Ú
isinstancer  r„   r  r"   rZ   ÚstackÚgetattrrÓ   ÚndimÚmoveaxisr§   r'   r   r)   r   r$   ri   Ú
dequantizeÚ
contiguousr«   Úquantize))rP   r�   r~   r¹   rÔ   r  ÚprefixÚ
src_prefixÚ
dst_prefixÚsrcÚdstÚkeyr  ÚstackedÚnameÚsrc_keyÚgate_keyÚbias_keyÚattnÚattn_prefixÚsrc_nameÚdst_nameÚwÚdt_keyÚkv_b_keyÚqk_nopeÚv_headr   r˜   Ú	quantizedÚdimsÚscalesÚbiasesr6  r7  ÚwkÚwvÚwk_sÚwk_bÚwv_sÚwv_bs)                                            rA   ÚsanitizezModel.sanitizeì  sÛ  € Ø$+§M¡M¤OÔU¡O™D˜A˜q¸1¿<¹<ÈÕ;T�1�a‘4 OˆÑUà�9‰9×(Ò(Ø�K‰KÐ(¨$Ô/ä )¨$¯+©+× 6ÑˆI�uØ$ Y KÐ0ˆFä˜%Ÿ)™)¤]Ô3Ø &˜xÐ'8Ð9�
Ø &˜x t˜_�
ó!‘H�C˜ð
 (˜L¨°C°5¸Ð@�CØ˜g’~ô &+¨4¯9©9×+@Ñ+@Ô%Aó#á%A ð $ŸK™K¨:¨,°iÀ¸sÀ!ÀCÀ5ÈÐ(PÕQØ%Að  ð #ô LNÏ8É8Ø#óL˜ : ,¨l¸3¸%¸wÐ GÒHð!ó B�DØ!+ Ð,<¸T¸FÀ'ÐJ�GØ 'Ò)à#ŸK™K¨Ó0ð   : ,Ð.>¸t¸fÀGÐ LÒMð Bð )˜\¨Ð6�Ø˜wÑ&Ø;B¿;¹;ÀxÓ;P�G˜z˜l¨,Ð7Ñ8à(˜\Ð)FÐG�Ø˜wÑ&ØGNÇ{Á{Ø óH�G˜z˜lÐ*BÐCÑDô ˜5 +¨tÓ4ˆDÜ˜$Ô 2Ô3Ø!' ¨
Ð3�ó+Ñ&�H˜hð
 "- ¨Q¨x¨j¸Ð@�GØ 'Ò)Ø#ŸK™K¨Ó0˜ØŸ6™6 Qš;Ø !§
¡
¨1¨aÓ 0˜AØKL˜ ; -¨q°°
¸,Ð GÒHð+ð (˜=¨Ð1�Ø˜WÑ$Ø˜v‘×+Ñ+¨aÒ/Ü*,¯*©*°W¸V±_ÀeÓ*L˜ ™à#˜H JÐ/ˆKØ%˜Ð&7Ð8ˆHØ˜7Ó"ØŸ)™)×4Ñ4ÒJ¸¿	¹	×8JÑ8J�ØŸ™×-Ñ-ÒC°·±×1CÑ1C�Ø" VÑ+�Ø ŸI™I×9Ñ9�	à*˜mÐ+<Ð=ÀÐH�	Ø—K‘K Ó)�áØŸ9™9×1Ñ1�DØ$Ÿ[™[¨K¨=Ð8IÐ)JÓK�FØ$Ÿ[™[¨K¨=Ð8IÐ)JÓK�FØŸG™G B™K¨"Ñ,°Ñ5�DØ!%¨¯©°bÑ)9Ñ!9�JÜŸ™Ø˜6 6°Àô�Að —I‘I˜i¨°2Ó6�Ü—]‘] 1¢Q¨¨¨²! ^Ñ#4×#=Ñ#=¸bÀ"Ó#EÓF�Ü—]‘] 1¢Q¨©²! ^Ñ#4Ó5�áÜ%'§[¡[°¸$È:Ô%V‘N�B˜˜dÜ%'§[¡[°¸$È:Ô%V‘N�B˜˜dØ?C�G˜{˜m¨?Ð;Ñ<Ø?C�G˜{˜m¨?Ð;Ñ<ØCG�G˜{˜mÐ+>Ð?Ñ@ØCG�G˜{˜mÐ+>Ð?Ñ@à;=�˜;˜- Ð7Ñ8Ø?A�˜;˜-Ð':Ð;Ó<ðw !7ðz ˆùóE Vùò$#s   ”P+®P+Ã!P1c                 ó   — dt         fd„}|S )NÚpathc                 óT   — d| v ry| j                  d«      s| j                  d«      ryy)NrŠ   Frê   rë   T©Úendswith)rd  s    rA   Ú	predicatez'Model.cast_predicate.<locals>.predicateS  s*   € Ø(¨DÑ0ØØ�}‰}˜WÔ%¨¯©°yÔ)AØØr@   )r:   ©rP   rh  s     rA   Úcast_predicatezModel.cast_predicateQ  s   € ð	œCó 	ð Ðr@   c                 ó   — d„ }|S )Nc                 ó0   — | j                  d«      rdddœS y)Nzmlp.gateé@   é   )r7  r6  Trf  )rd  r±   s     rA   rh  z(Model.quant_predicate.<locals>.predicate^  s   € Ø�}‰}˜ZÔ(Ø&(°!Ñ4Ð4Ør@   r?   ri  s     rA   Úquant_predicatezModel.quant_predicate\  s   € ò	ð
 Ðr@   rW   )r7   r8   r9   r   rJ   rZ   r[   r   r   r   rX   Úpropertyr  r,  r   r:   rb  rj  ro  r\   r]   s   @rA   r!  r!  Ê  sº   ø„ ðT˜Yõ Tð &*ñ!à—‘ð!ð ˜˜S™	Ñ"ð!ð 
�‰ó	!ð ñ!ó ð!òðc  S¨"¯(©( ]Ñ 3ð c¸¸SÀ"Ç(Á(¸]Ñ8Kó cðJ ñó ðð ñó ôr@   r!  ).Údataclassesr   Útypingr   r   r   r   r   Úmlx.coreÚcorerZ   Úmlx.nnrK   Úactivationsr
   Úbaser   r   r   r   r£   r   r   Úgated_deltar   Úmlar   Úswitch_layersr   r   ÚModulerC   Úcompiler[   r<   r=   r>   r:   r‚   r„   r“   r¼   rÓ   rÿ   r  r!  r?   r@   rA   Ú<module>r}     si  ðõ "ß 3Õ 3å Ý å ÷ó ÷ (Ý +Ý Ý $ð ô�ó ó ðôDJˆb�i‰iô Jð$ ‡�ð)0Ø�8‰8ð)0à
�2—8‘8Ñ
ð)0ð ð)0ð ð	)0ð
 ð)0ð !ð)0ð ð)0ð ð)0ð ˆ2�8‰8�R—X‘XÐÑò)0ó ð)0ôX#�B—I‘Iô #ôLJ#�r—y‘yô J#ôZ%�"—)‘)ô %ôPn ˜Ÿ™ô n ôb#�r—y‘yô #ôL�b—i‘iô ô@YˆB�I‰Iõ Yr@   