Ë
    îÿæiÛ  ã                   ój  — 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 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)Úpartial)ÚAnyÚDictÚOptionalÚUnionNé   )ÚXieLU)Ú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<   eed<   eed<   eed<   eed<   dZeed<   dZ	e
eeeeef   f      ed<   y)Ú	ModelArgsÚ
model_typeÚhidden_sizeÚnum_hidden_layersÚintermediate_sizeÚmlp_biasÚnum_attention_headsÚattention_biasÚrms_norm_epsÚ
vocab_sizeÚnum_key_value_headsÚmax_position_embeddingsÚ
rope_thetaÚ	post_normÚqk_normÚtie_word_embeddingsFÚrope_traditionalNÚrope_scaling)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚboolÚfloatr    r!   r   r   r   © ó    új/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/apertus.pyr   r      s„   … àƒOØÓØÓØÓØƒNØÓØÓØÓØƒOØÓØ Ó ØÓØƒOØƒMØÓØ"Ð�dÓ"Ø;?€L�(˜4  U¨5°#¨:Ñ%6Ð 6Ñ7Ñ8Ô?r+   r   c                   ó\   ‡ — e Zd Zdefˆ fd„Zdej                  dej                  fd„Zˆ xZS )Ú
ApertusMLPÚargsc                 ó,  •— t         ‰| �  «        t        j                  |j                  |j
                  |j                  ¬«      | _        t        j                  |j
                  |j                  |j                  ¬«      | _        t        «       | _
        y )N©Úbias)ÚsuperÚ__init__ÚnnÚLinearr   r   r   Úup_projÚ	down_projr
   Úact_fn©Úselfr/   Ú	__class__s     €r,   r4   zApertusMLP.__init__%   si   ø€ Ü‰ÑÔÜ—y‘yØ×Ñ˜d×4Ñ4¸4¿=¹=ô
ˆŒô Ÿ™Ø×"Ñ" D×$4Ñ$4¸4¿=¹=ô
ˆŒô “gˆ�r+   ÚxÚreturnc                 ó`   — | j                  | j                  | j                  |«      «      «      S ©N)r8   r9   r7   )r;   r=   s     r,   Ú__call__zApertusMLP.__call__/   s"   € Ø�~‰~˜dŸk™k¨$¯,©,°q«/Ó:Ó;Ð;r+   )	r"   r#   r$   r   r4   ÚmxÚarrayrA   Ú__classcell__©r<   s   @r,   r.   r.   $   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 )	ÚApertusAttentionr/   c                 ó  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  |j                  z  | _        | j
                  d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                  ¬«      | _        t        j                  | j
                  |j                  ¬«      | _        t#        | j
                  |j$                  |j&                  |j(                  |j*                  «      | _        y )Ng      à¿Fr1   ©Úeps)r3   r4   r   r   r   Úhead_dimÚscaler5   r6   Úq_projÚk_projÚv_projÚo_projÚRMSNormr   Úq_normÚk_normr   r   r    r!   r   Úroper:   s     €r,   r4   zApertusAttention.__init__4   sw  ø€ Ü‰ÑÔØ#'×#;Ñ#;ˆÔ Ø#'×#;Ñ#;ˆÔ à×(Ñ(¨D×,DÑ,DÑDˆŒØ—]‘] DÑ(ˆŒ
ä—i‘iØ×Ñ˜d×6Ñ6¸¿¹ÑFÈUô
ˆŒô —i‘iØ×Ñ˜d×6Ñ6¸¿¹ÑFÈUô
ˆŒô —i‘iØ×Ñ˜d×6Ñ6¸¿¹ÑFÈUô
ˆŒô —i‘iØ×$Ñ$ t§}¡}Ñ4°d×6FÑ6FÈUô
ˆŒô —j‘j §¡°D×4EÑ4EÔFˆŒÜ—j‘j §¡°D×4EÑ4EÔFˆŒä#Ø�M‰MØ�O‰OØ×!Ñ!Ø×ÑØ×(Ñ(ó
ˆ�	r+   r=   ÚmaskÚcacher>   c                 ón  — |j                   \  }}}| j                  |«      | j                  |«      | j                  |«      }	}}| j	                  |j                  ||| j                  d«      «      j                  dddd«      }| j                  |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)rV   rL   rU   )ÚshaperM   rN   rO   rR   Úreshaper   Ú	transposerS   r   rT   r[   Úupdate_and_fetchr   rL   rP   )r;   r=   rU   rV   ÚBÚLÚDÚqueriesÚkeysÚvaluesÚoutputs              r,   rA   zApertusAttention.__call__T   s�  € ð —'‘'‰ˆˆ1ˆaØ $§¡¨A£°·±¸A³ÀÇÁÈAÃ�v�ˆØ—+‘+Ø�O‰O˜A˜q $×":Ñ":¸BÓ?ó
ç
‰)�A�q˜!˜QÓ
ð 	ð �{‰{˜4Ÿ<™<¨¨1¨d×.FÑ.FÈÓKÓL×VÑVØˆq�!�Qó
ˆð —‘  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ä-Ø�T˜6¨°d·j±jÀtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸¸BÓ?ˆØ�{‰{˜6Ó"Ð"r+   ©NN©r"   r#   r$   r   r4   rB   rC   r   r   rA   rD   rE   s   @r,   rG   rG   3   sX   ø„ ð
˜Yõ 
ðF $(Ø#ñ	#à�8‰8ð#ð �r—x‘xÑ ð#ð ˜‰}ð	#ð
 
�‰÷#r+   rG   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 )	ÚApertusDecoderLayerr/   c                 ó"  •— t         ‰| �  «        t        |«      | _        t	        |«      | _        t        j                  |j                  |j                  ¬«      | _
        t        j                  |j                  |j                  ¬«      | _        y )NrI   )r3   r4   rG   Ú	self_attnr.   Úmlpr5   rQ   r   r   Úattention_layernormÚfeedforward_layernormr:   s     €r,   r4   zApertusDecoderLayer.__init__v   sd   ø€ Ü‰ÑÔÜ)¨$Ó/ˆŒÜ˜dÓ#ˆŒä#%§:¡:¨d×.>Ñ.>ÀD×DUÑDUÔ#VˆÔ Ü%'§Z¡Z°×0@Ñ0@Àd×FWÑFWÔ%XˆÕ"r+   r=   rU   rV   r>   c                 ó–   — || j                  | j                  |«      ||«      z   }|| j                  | j                  |«      «      z   }|S r@   )rl   rn   rm   ro   )r;   r=   rU   rV   ÚhÚouts         r,   rA   zApertusDecoderLayer.__call__~   sI   € ð �—‘˜t×7Ñ7¸Ó:¸DÀ%ÓHÑHˆØ�$—(‘(˜4×5Ñ5°aÓ8Ó9Ñ9ˆØˆ
r+   rg   rh   rE   s   @r,   rj   rj   u   sY   ø„ ðY˜Yõ Yð $(Ø#ñ	à�8‰8ðð �r—x‘xÑ ðð ˜‰}ð	ð
 
�‰÷r+   rj   c                   ój   ‡ — e Zd Zdefˆ fd„Z	 ddej                  dee   dej                  fd„Z	ˆ xZ
S )ÚApertusModelr/   c                 óN  •— t         ‰| �  «        t        j                  |j                  |j
                  «      | _        t        |j                  «      D �cg c]  }t        |¬«      ‘Œ c}| _
        t        j                  |j
                  |j                  ¬«      | _        y c c}w )N)r/   rI   )r3   r4   r5   Ú	Embeddingr   r   Úembed_tokensÚranger   rj   ÚlayersrQ   r   Únorm)r;   r/   Ú_r<   s      €r,   r4   zApertusModel.__init__Š   s}   ø€ Ü‰ÑÔÜŸL™L¨¯©¸$×:JÑ:JÓKˆÔä49¸$×:PÑ:PÔ4Qó
Ù4Q¨qÔ TÖ*Ð4Qñ
ˆŒô —J‘J˜t×/Ñ/°T×5FÑ5FÔGˆ�	ùò
s   ÁB"ÚinputsrV   r>   c                 óì   — | j                  |«      }|€d gt        | j                  «      z  }t        ||d   «      }t	        | j                  |«      D ]  \  }} ||||¬«      }Œ | j                  |«      S )Nr   )rU   rV   )rw   Úlenry   r   Úziprz   )r;   r|   rV   rq   rU   ÚlayerÚcs          r,   rA   zApertusModel.__call__’   su   € ð
 ×Ñ˜fÓ%ˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEä$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜d¨!Ô,‰Að 0ð �y‰y˜‹|Ðr+   r@   rh   rE   s   @r,   rt   rt   ‰   sC   ø„ ðH˜Yõ Hð  $ñà—‘ðð ˜‰}ðð 
�‰÷	r+   rt   c                   ó€   ‡ — e Zd Zdefˆ fd„Z	 d	dej                  dee   dej                  fd„Z	d„ Z
ed„ «       Zˆ xZS )
ÚModelr/   c                 óÔ   •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        t        j                  |j                  |j                  d¬«      | _
        y )NFr1   )r3   r4   r/   r   rt   Úmodelr5   r6   r   r   Úlm_headr:   s     €r,   r4   zModel.__init__¥   sJ   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ! $Ó'ˆŒ
Ü—y‘y ×!1Ñ!1°4·?±?ÈÔOˆ�r+   r|   rV   r>   c                 óH   — | j                  ||«      }| j                  |«      S r@   )r…   r†   )r;   r|   rV   rr   s       r,   rA   zModel.__call__¬   s#   € ð
 �j‰j˜ Ó'ˆØ�|‰|˜CÓ Ð r+   c                 ó¢   — |j                  «       D ];  \  }}|j                  d«      s|j                  d«      sŒ)|j                  «       ||<   Œ= |S )NÚalpha_pÚalpha_n)ÚitemsÚendswithÚsqueeze)r;   ÚweightsÚkÚvs       r,   ÚsanitizezModel.sanitize´   sC   € Ø—M‘M–O‰DˆAˆqØ�z‰z˜)Ô$¨¯
©
°9Õ(=ØŸY™Y›[�˜’
ð $ð ˆr+   c                 ó.   — | j                   j                  S r@   )r…   ry   )r;   s    r,   ry   zModel.layersº   s   € à�z‰z× Ñ Ð r+   r@   )r"   r#   r$   r   r4   rB   rC   r   r   rA   r‘   Úpropertyry   rD   rE   s   @r,   rƒ   rƒ   ¤   s\   ø„ ðP˜Yõ Pð  $ñ!à—‘ð!ð ˜‰}ð!ð 
�‰ó	!òð ñ!ó ô!r+   rƒ   )Údataclassesr   Ú	functoolsr   Útypingr   r   r   r   Úmlx.coreÚcorerB   Úmlx.nnr5   Úactivationsr
   Úbaser   r   r   Ú
rope_utilsr   r   ÚModuler.   rG   rj   rt   rƒ   r*   r+   r,   Ú<module>rž      s”   ðõ "Ý ß -Ó -å Ý å ß TÑ TÝ 'ð ô@�ó @ó ð@ô(<�—‘ô <ô?#�r—y‘yô ?#ôD˜"Ÿ)™)ô ô(�2—9‘9ô ô6!ˆB�I‰Iõ !r+   