Ë
    îÿæiæ  ã                   ó^  — d dl mZ d dl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 ddlmZ e G d„ d	e«      «       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ÚOptionalÚUnionNé   )Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚscaled_dot_product_attention)ÚSuScaledRoPEc                   ó  — 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d<   eed<   eed<   eed<   eed<   eed<   dZeed<   dZ	eed<   dZ
eed<   dZeeeeeef   f      ed<   dZeed<   y)Ú	ModelArgsÚ
model_typeÚhidden_sizeÚdim_model_baseÚnum_hidden_layersÚintermediate_sizeÚnum_attention_headsÚrms_norm_epsÚ
vocab_sizeÚnum_key_value_headsÚq_lora_rankÚqk_nope_head_dimÚqk_rope_head_dimÚkv_lora_rankÚscale_depthÚ	scale_embÚmax_position_embeddingsFÚattention_biasg    €„.AÚ
rope_thetaÚrope_traditionalNÚrope_scalingÚtie_word_embeddings)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚfloatr    Úboolr!   r"   r#   r   r   r   r$   © ó    úk/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/minicpm3.pyr   r      s¬   … àƒOØÓØÓØÓØÓØÓØÓØƒOØÓØÓØÓØÓØÓØÓØÓØ Ó Ø €N�DÓ Ø!€J�Ó!Ø"Ð�dÓ"Ø;?€L�(˜4  U¨3°¨:Ñ%6Ð 6Ñ7Ñ8Ó?Ø %Ð˜Ô%r.   r   c            
       ó�   ‡ — e Zd Zdefˆ fd„Z	 	 ddej                  deej                     deee	ej                  f      fd„Z
ˆ xZS )Ú	AttentionÚargsc                 ó´  •— t         ‰| �  «        || _        | j                  j                  | _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  | _        | j                  j                  | _        | j                  j                  | _	        | j                  j                  | _
        | j                  | j                  j                  z  | _        | j                  | j                  z   | _        | j                  dz  | _        t        j                  | j                  | j                  | j
                  ¬«      | _        t        j"                  | j                  «      | _        t        j                  | j                  | j                  | j                  z  d¬«      | _        t        j                  | j                  | j                  | j                  z   | j
                  ¬«      | _        t        j"                  | j                  «      | _        t        j                  | j                  | j                  | j                  | j                  z
  | j                  z   z  d¬«      | _        t        j                  | j                  | j                  z  | j                  | j
                  ¬«      | _        t1        |j                  |j2                  |j4                  |j6                  j9                  dd«      |j6                  j9                  dd«      |j6                  j9                  dd«      ¬	«      | _        y )
Ng      à¿©ÚbiasFÚ original_max_position_embeddingsi   Úshort_factorg      ð?Úlong_factor)ÚdimsÚbaser   r6   r7   r8   )ÚsuperÚ__init__r2   r   r   r    r   r   Ú	num_headsr   r   Ú
v_head_dimÚ
q_head_dimÚsoftmax_scaleÚnnÚLinearÚq_a_projÚRMSNormÚq_a_layernormÚq_b_projÚkv_a_proj_with_mqaÚkv_a_layernormÚ	kv_b_projÚo_projr   r!   r   r#   ÚgetÚrope©Úselfr2   Ú	__class__s     €r/   r<   zAttention.__init__(   s{  ø€ Ü‰ÑÔØˆŒ	à $§	¡	× :Ñ :ˆÔØ $§	¡	× :Ñ :ˆÔØ"Ÿi™i×6Ñ6ˆÔØ ŸI™I×2Ñ2ˆÔØŸ™×6Ñ6ˆŒØŸ9™9×0Ñ0ˆÔØŸ9™9×0Ñ0ˆÔà×*Ñ*¨d¯i©i×.KÑ.KÑKˆŒØ×/Ñ/°$×2GÑ2GÑGˆŒØ!Ÿ_™_°Ñ6ˆÔäŸ	™	Ø×Ñ˜d×.Ñ.°T×5HÑ5Hô
ˆŒô  ŸZ™Z¨×(8Ñ(8Ó9ˆÔäŸ	™	Ø×Ñ˜dŸn™n¨t¯©Ñ>ÀUô
ˆŒô #%§)¡)Ø×ÑØ×Ñ × 5Ñ 5Ñ5Ø×$Ñ$ô#
ˆÔô !Ÿj™j¨×):Ñ):Ó;ˆÔäŸ™Ø×ÑØ�N‰NØ�‰ ×!6Ñ!6Ñ6¸¿¹ÑHñJàô	
ˆŒô —i‘iØ�N‰N˜TŸ_™_Ñ,Ø×ÑØ×$Ñ$ô
ˆŒô !Ø×&Ñ&Ø—‘Ø$(×$@Ñ$@Ø-1×->Ñ->×-BÑ-BØ2°Dó.ð ×*Ñ*×.Ñ.¨~¸sÓCØ×)Ñ)×-Ñ-¨m¸SÓAô	
ˆ�	r.   ÚxÚmaskÚcachec                 ó4  — |j                   \  }}}| j                  | j                  | j                  |«      «      «      }|j	                  ||| j
                  d«      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                  | j                  |
«      «      }|j	                  ||| j
                  d«      j                  dddd«      }t        j                  || j                  gd¬«      \  }}|�;| j                  |	|j                   ¬«      }	| j                  ||j                   ¬«      }n"| j                  |	«      }	| j                  |«      }t        j"                  ||| j
                  || j                  f«      }t        j$                  ||	gd¬«      }t        j$                  ||gd¬«      }|�|j'                  ||«      \  }}t)        ||||| j*                  |¬«      }|j                  dddd«      j	                  ||d«      }| j-                  |«      S )	Néÿÿÿÿr   é   r   é   )Úaxis)Úoffset)rR   ÚscalerQ   )ÚshaperF   rE   rC   Úreshaper=   Ú	transposeÚmxÚsplitr   rG   r   r   rI   rH   rL   rX   Úbroadcast_toÚconcatenateÚupdate_and_fetchr   r@   rJ   )rN   rP   rQ   rR   ÚBÚLÚ_ÚqÚq_nopeÚq_peÚcompressed_kvÚk_peÚkvÚk_nopeÚvaluesÚk_pe_broadcastedÚqueriesÚkeysÚoutputs                      r/   Ú__call__zAttention.__call__a   sV  € ð —'‘'‰ˆˆ1ˆað �M‰M˜$×,Ñ,¨T¯]©]¸1Ó-=Ó>Ó?ˆØ�I‰I�a˜˜DŸN™N¨BÓ/×9Ñ9¸!¸QÀÀ1ÓEˆÜ—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ˆà�^‰^˜D×/Ñ/°Ó>Ó?ˆØ�Z‰Z˜˜1˜dŸn™n¨bÓ1×;Ñ;¸A¸qÀ!ÀQÓGˆäŸ™ " t×'<Ñ'<Ð&=ÀBÔG‰ˆ�ð ÐØ—9‘9˜T¨%¯,©,�9Ó7ˆDØ—9‘9˜T¨%¯,©,�9Ó7‰Dà—9‘9˜T“?ˆDØ—9‘9˜T“?ˆDô Ÿ?™?Ø�1�d—n‘n a¨×)>Ñ)>Ð?ó
Ðô
 —.‘. &¨$ °bÔ9ˆô �~‰~˜vÐ'7Ð8¸rÔBˆð ÐØ ×1Ñ1°$¸Ó?‰LˆD�&ô .Ø�T˜6¨°d×6HÑ6HÈtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸¸BÓ?ˆØ�{‰{˜6Ó"Ð"r.   ©NN)r%   r&   r'   r   r<   r]   Úarrayr   r   r(   rq   Ú__classcell__©rO   s   @r/   r1   r1   '   sX   ø„ ð7
˜Yõ 7
ðx $(Ø/3ñ	4#à�8‰8ð4#ð �r—x‘xÑ ð4#ð ˜˜S "§(¡(˜]Ñ+Ñ,÷	4#r.   r1   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚMLPc                 óH  •— t         ‰| �  «        t        j                  |j                  |j
                  d¬«      | _        t        j                  |j                  |j
                  d¬«      | _        t        j                  |j
                  |j                  d¬«      | _        y ©NFr4   )	r;   r<   rA   rB   r   r   Ú	gate_projÚup_projÚ	down_projrM   s     €r/   r<   zMLP.__init__™   sq   ø€ Ü‰ÑÔÜŸ™ 4×#3Ñ#3°T×5KÑ5KÐRWÔXˆŒÜ—y‘y ×!1Ñ!1°4×3IÑ3IÐPUÔVˆŒÜŸ™ 4×#9Ñ#9¸4×;KÑ;KÐRWÔXˆ�r.   c                 ót   — | j                  t        | j                  |«      | j                  |«      «      «      S ©N)r|   r	   rz   r{   )rN   rP   s     r/   rq   zMLP.__call__Ÿ   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr.   )r%   r&   r'   r<   rq   rt   ru   s   @r/   rw   rw   ˜   s   ø„ ôYöJr.   rw   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 )	ÚDecoderLayerr2   c                 ó¸  •— t         ‰| �  «        || _        |j                  | _        |j                  | _        t        |«      | _        t        |«      | _        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        |j                  | _        |j                  | _        y )N©Úeps)r;   r<   r2   r   r   r1   Ú	self_attnrw   ÚmlprA   rD   r   Úinput_layernormÚpost_attention_layernormr   rM   s     €r/   r<   zDecoderLayer.__init__¤   s¦   ø€ Ü‰ÑÔØˆŒ	Ø×+Ñ+ˆÔØ!%×!7Ñ!7ˆÔä" 4›ˆŒÜ�t“9ˆŒÜ!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ð  ×+Ñ+ˆÔØ!%×!7Ñ!7ˆÕr.   rP   rQ   rR   Úreturnc                 ó  — | j                  | j                  |«      ||«      }||| j                  | j                  dz  z  z  z   }| j	                  | j                  |«      «      }||| j                  | j                  dz  z  z  z   }|S )Ng      à?)r„   r†   r   r   r…   r‡   )rN   rP   rQ   rR   ÚrÚhÚouts          r/   rq   zDecoderLayer.__call__´   s‰   € ð �N‰N˜4×/Ñ/°Ó2°D¸%Ó@ˆØ��T×%Ñ%¨×)?Ñ)?ÀÑ)DÑEÑFÑFˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�!�t×'Ñ'¨4×+AÑ+AÀ3Ñ+FÑGÑHÑHˆØˆ
r.   rr   )r%   r&   r'   r   r<   r]   rs   r   r   rq   rt   ru   s   @r/   r€   r€   £   sW   ø„ ð8˜Yõ 8ð& $(Ø#ñ	
à�8‰8ð
ð �r—x‘xÑ ð
ð ˜‰}ð	
ð
 
�‰÷
r.   r€   c                   ób   ‡ — e Zd Zdefˆ fd„Z	 	 ddej                  dej                  fd„Zˆ xZS )ÚMiniCPM3Modelr2   c                 óž  •— t         ‰| �  «        || _        |j                  | _        | j                  dkD  sJ ‚t	        j
                  |j                  |j                  «      | _        t        |j                  «      D �cg c]  }t        |«      ‘Œ c}| _        t	        j                  |j                  |j                  ¬«      | _        y c c}w )Nr   r‚   )r;   r<   r2   r   rA   Ú	Embeddingr   Úembed_tokensÚranger   r€   ÚlayersrD   r   Únorm)rN   r2   rd   rO   s      €r/   r<   zMiniCPM3Model.__init__Â   s›   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒØ�‰ Ò"Ð"Ð"äŸL™L¨¯©¸$×:JÑ:JÓKˆÔÜ38¸×9OÑ9OÔ3PÓQÑ3P¨a”| DÕ)Ð3PÑQˆŒÜ—J‘J˜t×/Ñ/°T×5FÑ5FÔGˆ�	ùò Rs   Á?C
ÚinputsrQ   c                 ó  — | j                  |«      | j                  j                  z  }|€t        ||«      }|€d gt	        | j
                  «      z  }t        | j
                  |«      D ]  \  }} ||||«      }Œ | j                  |«      S r~   )r‘   r2   r   r   Úlenr“   Úzipr”   )rN   r•   rQ   rR   r‹   ÚlayerÚcs          r/   rq   zMiniCPM3Model.__call__Ì   s…   € ð ×Ñ˜fÓ%¨¯	©	×(;Ñ(;Ñ;ˆàˆ<Ü(¨¨EÓ2ˆDàˆ=Ø�FœS §¡Ó-Ñ-ˆEä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜˜qÓ!‰Að 0ð �y‰y˜‹|Ðr.   rr   )	r%   r&   r'   r   r<   r]   rs   rq   rt   ru   s   @r/   rŽ   rŽ   Á   s8   ø„ ðH˜Yõ Hð Øñ	à—‘ðð �h‰h÷r.   rŽ   c                   ór   ‡ — e Zd Zdefˆ fd„Z	 	 ddej                  dej                  fd„Zed„ «       Z	ˆ xZ
S )ÚModelr2   c                 ó  •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        | j                  j                  s2t        j                  |j                  |j                  d¬«      | _        y y ry   )r;   r<   r2   r   rŽ   Úmodelr$   rA   rB   r   r   Úlm_headrM   s     €r/   r<   zModel.__init__á   s\   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ" 4Ó(ˆŒ
à�y‰y×,Ò,ÜŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆD�Lð -r.   r•   rQ   c                 ó$  — | j                  |||«      }| j                  j                  sA| j                  || j                  j                  | j                  j
                  z  z  «      }|S | j                   j                  j                  |«      }|S r~   )rž   r2   r$   rŸ   r   r   r‘   Ú	as_linear)rN   r•   rQ   rR   rŒ   s        r/   rq   zModel.__call__ê   sw   € ð �j‰j˜  uÓ-ˆà�y‰y×,Ò,Ø—,‘,˜s d§i¡i×&;Ñ&;¸d¿i¹i×>VÑ>VÑ&VÑWÓXˆCð ˆ
ð —*‘*×)Ñ)×3Ñ3°CÓ8ˆCàˆ
r.   c                 ó.   — | j                   j                  S r~   )rž   r“   )rN   s    r/   r“   zModel.layersù   s   € à�z‰z× Ñ Ð r.   rr   )r%   r&   r'   r   r<   r]   rs   rq   Úpropertyr“   rt   ru   s   @r/   rœ   rœ   à   sL   ø„ ðT˜Yõ Tð Øñ	à—‘ðð �h‰hóð ñ!ó ô!r.   rœ   )Údataclassesr   Útypingr   r   r   r   Úmlx.coreÚcorer]   Úmlx.nnrA   Úactivationsr	   r:   r
   r   r   Ú
rope_utilsr   r   ÚModuler1   rw   r€   rŽ   rœ   r-   r.   r/   Ú<module>r¬      s’   ðõ "ß -Ó -å Ý å ß TÑ TÝ $ð ô&�ó &ó ð&ô0n#�—	‘	ô n#ôbJˆ"�)‰)ô Jô�2—9‘9ô ô<�B—I‘Iô ô>!ˆB�I‰Iõ !r.   