Ë
    îÿæ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)Úinitialize_ropec                   óâ   — 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<   dZe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Úscale_depthÚ	scale_embNÚmax_position_embeddingsg    €„.AÚ
rope_thetaFÚrope_traditionalÚrope_scalingÚtie_word_embeddings)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚfloatr   r   r   r   Úboolr   r   r   r   © ó    új/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/minicpm.pyr   r      s“   … àƒOØÓØÓØÓØÓØÓØÓØƒOØÓØÓØÓØ-1Ð˜X c™]Ó1Ø!€J�Ó!Ø"Ð�dÓ"Ø;?€L�(˜4  U¨3°¨:Ñ%6Ð 6Ñ7Ñ8Ó?Ø %Ð˜Ô%r)   r   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 ©NF©Úbias)	ÚsuperÚ__init__ÚnnÚLinearr   r   Ú	gate_projÚup_projÚ	down_proj©ÚselfÚargsÚ	__class__s     €r*   r2   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)r7   r	   r5   r6   )r9   Úxs     r*   Ú__call__zMLP.__call__)   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr)   )r    r!   r"   r2   r?   Ú__classcell__©r;   s   @r*   r,   r,   "   s   ø„ ôYöJr)   r,   c                   ór   ‡ — e Zd Zdefˆ fd„Z	 	 ddej                  deej                     dee   fd„Z	ˆ xZ
S )Ú	Attentionr:   c                 ó´  •— t         ‰| �  «        || _        |j                  | _        |j                  x| _        }|j                  | _        |j                  |z  x| _        }|dz  | _        |j                  | _	        | j
                  | j                  z  | _
        t        j                  | j                  | j
                  | j                  z  d¬«      | _        t        j                  | j                  | j                  | j                  z  d¬«      | _        t        j                  | j                  | j                  | j                  z  d¬«      | _        t        j                  | j
                  | j                  z  | j                  d¬«      | _        t#        | j                  |j                  |j$                  |j&                  |j(                  «      | _        y )Ng      à¿Fr/   )r1   r2   r:   r   r   Ú	num_headsr   Úhead_dimÚscaler   Únum_key_value_groupsr3   r4   Úq_projÚk_projÚv_projÚo_projr   r   r   r   Úrope)r9   r:   Ún_headsrF   r;   s       €r*   r2   zAttention.__init__.   sp  ø€ Ü‰ÑÔØˆŒ	à×+Ñ+ˆÔØ#'×#;Ñ#;Ð;ˆŒ˜ØŸ/™/ˆŒà#'×#3Ñ#3°wÑ#>Ð>ˆŒ˜Ø˜t‘^ˆŒ
à#'×#;Ñ#;ˆÔ Ø$(§N¡N°d×6NÑ6NÑ$NˆÔ!ä—i‘iØ×Ñ˜dŸn™n¨t¯}©}Ñ<À5ô
ˆŒô —i‘iØ×Ñ˜d×6Ñ6¸¿¹ÑFÈUô
ˆŒô —i‘iØ×Ñ˜d×6Ñ6¸¿¹ÑFÈUô
ˆŒô —i‘iØ�N‰N˜TŸ]™]Ñ*¨D×,<Ñ,<À5ô
ˆŒô $Ø�M‰MØ�O‰OØ×!Ñ!Ø×ÑØ×(Ñ(ó
ˆ�	r)   r>   ÚmaskÚcachec                 ó2  — |j                   \  }}}| j                  |«      | j                  |«      | j                  |«      }	}}|j	                  ||| j
                  d«      j                  dddd«      }|j	                  ||| j                  d«      j                  dddd«      }|	j	                  ||| j                  d«      j                  dddd«      }	|�P| j                  ||j                  ¬«      }| j                  ||j                  ¬«      }|j                  ||	«      \  }}	n"| j                  |«      }| j                  |«      }t        |||	|| j                  |¬«      }
|
j                  dddd«      j	                  ||d«      }
| j                  |
«      S )Néÿÿÿÿr   é   r   é   )Úoffset)rP   rG   rO   )ÚshaperI   rJ   rK   ÚreshaperE   Ú	transposer   rM   rU   Úupdate_and_fetchr   rG   rL   )r9   r>   rO   rP   ÚBÚLÚ_ÚqueriesÚkeysÚvaluesÚattn_outputs              r*   r?   zAttention.__call__Q   sr  € ð —'‘'‰ˆˆ1ˆaà $§¡¨A£°·±¸A³ÀÇÁÈAÃ�v�ˆà—/‘/ ! Q¨¯©¸Ó;×EÑEÀaÈÈAÈqÓQˆØ�|‰|˜A˜q $×":Ñ":¸BÓ?×IÑIÈ!ÈQÐPQÐSTÓUˆØ—‘  1 d×&>Ñ&>ÀÓC×MÑMØˆq�!�Qó
ˆð ÐØ—i‘i °·±�iÓ=ˆGØ—9‘9˜T¨%¯,©,�9Ó7ˆDØ ×1Ñ1°$¸Ó?‰LˆD‘&à—i‘i Ó(ˆGØ—9‘9˜T“?ˆDä2Ø�T˜6¨°d·j±jÀtô
ˆð "×+Ñ+¨A¨q°!°QÓ7×?Ñ?ÀÀ1ÀbÓIˆà�{‰{˜;Ó'Ð'r)   ©NN©r    r!   r"   r   r2   ÚmxÚarrayr   r   r?   r@   rA   s   @r*   rC   rC   -   sJ   ø„ ð!
˜Yõ !
ðL $(Ø#ñ	(à�8‰8ð(ð �r—x‘xÑ ð(ð ˜‰}÷	(r)   rC   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 )	ÚDecoderLayerr:   c                 ó¸  •— t         ‰| �  «        || _        |j                  | _        |j                  | _        t        |«      | _        t        |«      | _        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        |j                  | _        |j                  | _        y )N©Úeps)r1   r2   r:   r   r   rC   Ú	self_attnr,   Úmlpr3   ÚRMSNormr   Úinput_layernormÚpost_attention_layernormr   r8   s     €r*   r2   zDecoderLayer.__init__s   s¦   ø€ Ü‰ÑÔØˆŒ	Ø×+Ñ+ˆÔØ!%×!7Ñ!7ˆÔä" 4›ˆŒÜ�t“9ˆŒÜ!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ð  ×+Ñ+ˆÔØ!%×!7Ñ!7ˆÕr)   r>   rO   rP   Úreturnc                 ó  — | j                  | j                  |«      ||«      }||| j                  | j                  dz  z  z  z   }| j	                  | j                  |«      «      }||| j                  | j                  dz  z  z  z   }|S )Ng      à?)rj   rm   r   r   rk   rn   )r9   r>   rO   rP   ÚrÚhÚouts          r*   r?   zDecoderLayer.__call__ƒ   s‰   € ð �N‰N˜4×/Ñ/°Ó2°D¸%Ó@ˆØ��T×%Ñ%¨×(>Ñ(>ÀÑ(CÑCÑDÑDˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�!�t×'Ñ'¨$×*@Ñ*@À#Ñ*EÑEÑFÑFˆØˆ
r)   ra   rb   rA   s   @r*   rf   rf   r   sW   ø„ ð8˜Yõ 8ð& $(Ø#ñ	
à�8‰8ð
ð �r—x‘xÑ ð
ð ˜‰}ð	
ð
 
�‰÷
r)   rf   c                   óH   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zˆ xZS )ÚMiniCPMModelr:   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   rh   )r1   r2   r:   r   r3   Ú	Embeddingr   Úembed_tokensÚranger   rf   Úlayersrl   r   Únorm)r9   r:   r\   r;   s      €r*   r2   zMiniCPMModel.__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
Úinputsc                 ó  — | j                  |«      | j                  j                  z  }|€d gt        | j                  «      z  }t        ||d   «      }t        | j                  |«      D ]  \  }} ||||«      }Œ | j                  |«      S )Nr   )rx   r:   r   Úlenrz   r   Úzipr{   )r9   r|   rP   rr   rO   ÚlayerÚcs          r*   r?   zMiniCPMModel.__call__›   s„   € ð
 ×Ñ˜fÓ%¨¯	©	×(;Ñ(;Ñ;ˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEä$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜˜qÓ!‰Að 0ð �y‰y˜‹|Ðr)   r=   )	r    r!   r"   r   r2   rc   rd   r?   r@   rA   s   @r*   ru   ru   �   s'   ø„ ðH˜Yõ Hð ñà—‘÷r)   ru   c                   ó^   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zd„ Ze	d„ «       Z
ˆ xZS )ÚModelr:   c                 ó  •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        | j                  j                  s2t        j                  |j                  |j                  d¬«      | _        y y r.   )r1   r2   r:   r   ru   Úmodelr   r3   r4   r   r   Úlm_headr8   s     €r*   r2   zModel.__init__®   s\   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ! $Ó'ˆŒ
à�y‰y×,Ò,ÜŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆD�Lð -r)   r|   c                 ó2  — | j                  ||«      }| j                  j                  sA| j                  || j                  j                  | j                  j
                  z  z  «      }|S || j                   j                  j                  j                  z  }|S r=   )	r…   r:   r   r†   r   r   rx   ÚweightÚT)r9   r|   rP   rs   s       r*   r?   zModel.__call__·   s{   € ð
 �j‰j˜ Ó'ˆà�y‰y×,Ò,Ø—,‘,˜s d§i¡i×&;Ñ&;¸d¿i¹i×>VÑ>VÑ&VÑWÓXˆCð ˆ
ð ˜Ÿ
™
×/Ñ/×6Ñ6×8Ñ8Ñ8ˆCàˆ
r)   c                 ó   — d|vr|d   |d<   |S )Nzlm_head.weightzmodel.embed_tokens.weightr(   )r9   Úweightss     r*   ÚsanitizezModel.sanitizeÅ   s    € Ø 7Ñ*Ø(/Ð0KÑ(LˆGÐ$Ñ%Øˆr)   c                 ó.   — | j                   j                  S r=   )r…   rz   )r9   s    r*   rz   zModel.layersÊ   s   € à�z‰z× Ñ Ð r)   r=   )r    r!   r"   r   r2   rc   rd   r?   rŒ   Úpropertyrz   r@   rA   s   @r*   rƒ   rƒ   ­   s@   ø„ ðT˜Yõ Tð ñà—‘óòð
 ñ!ó ô!r)   rƒ   )Údataclassesr   Útypingr   r   r   r   Úmlx.coreÚcorerc   Úmlx.nnr3   Úactivationsr	   Úbaser
   r   r   Ú
rope_utilsr   r   ÚModuler,   rC   rf   ru   rƒ   r(   r)   r*   Ú<module>r˜      s’   ðõ "ß -Ó -å Ý å ß TÑ TÝ 'ð ô&�ó &ó ð&ô&Jˆ"�)‰)ô JôB(�—	‘	ô B(ôJ�2—9‘9ô ô<�2—9‘9ô ô:!ˆB�I‰Iõ !r)   