Ë
    îÿæi\  ã                   óJ  — d dl mZ d dl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 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ÚOptionalNé   )Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚscaled_dot_product_attentionc                   óv   — 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	<   d
Zeed<   y)Ú	ModelArgsÚ
model_typeÚ
block_sizeÚlayer_norm_epsÚn_embdÚn_headÚ
n_kv_headsÚn_layerÚ
rope_thetaÚ
vocab_sizeTÚtie_word_embeddingsN)	Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚfloatr   Úbool© ó    úm/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/lille-130m.pyr   r      s<   … àƒOØƒOØÓØƒKØƒKØƒOØƒLØÓØƒOØ $Ð˜Ô$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 )	ÚLille130mAttentionÚargsc                 ó¼  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  |j                  z  | _        | j
                  dz  | _        t        j                  |j                  |j                  d|j                  z  z   | j
                  z  d¬«      | _	        t        j                  |j                  | j
                  z  |j                  d¬«      | _
        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  z  d|j                  «      | _        y )Ng      à¿é   F©Úbias©ÚepsT)ÚsuperÚ__init__r   r   r   Úhead_dimÚscaleÚnnÚLinearÚqkv_projÚout_projÚRMSNormr   ÚnormÚRoPEr   Úrope©Úselfr$   Ú	__class__s     €r!   r,   zLille130mAttention.__init__   sè   ø€ Ü‰ÑÔØ—k‘kˆŒØŸ/™/ˆŒØŸ™ t§{¡{Ñ2ˆŒØ—]‘] DÑ(ˆŒ
äŸ	™	Ø�K‰K˜$Ÿ+™+¨¨D¯O©OÑ(;Ñ;¸t¿}¹}ÑLÐSXô
ˆŒô Ÿ	™	 $§+¡+°·±Ñ"=¸t¿{¹{ÐQVÔWˆŒä—J‘J˜tŸ{™{°×0CÑ0CÔDˆŒ	ä—G‘G˜DŸK™K¨4¯;©;Ñ6¸¸d¿o¹oÓNˆ�	r    ÚxÚmaskÚcacheÚreturnc                 ó²  — |j                   \  }}}| j                  | j                  |«      «      }| j                  | j                  z  }| j
                  | j                  z  }	t        j                  ||||	z   gd¬«      \  }
}}|
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éÿÿÿÿ)Úaxisr   r&   r   é   )Úoffset)r<   r.   r;   )Úshaper1   r4   r   r-   r   ÚmxÚsplitÚreshapeÚ	transposer6   rB   Úupdate_and_fetchr
   r.   r2   )r8   r:   r;   r<   ÚBÚLÚDÚqkvÚq_sizeÚkv_sizeÚqueriesÚkeysÚvaluesÚoutputs                 r!   Ú__call__zLille130mAttention.__call__,   sŸ  € ð —'‘'‰ˆˆ1ˆaà�m‰m˜DŸI™I a›LÓ)ˆà—‘˜tŸ}™}Ñ,ˆØ—/‘/ D§M¡MÑ1ˆä "§¡¨¨v°vÀÑ7GÐ.HÈrÔ RÑˆ��và—/‘/ ! Q¨¯©°RÓ8×BÑBÀ1ÀaÈÈAÓNˆØ�|‰|˜A˜q $§/¡/°2Ó6×@Ñ@ÀÀAÀqÈ!ÓLˆØ—‘  1 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ä-Ø�T˜6¨°d·j±jÀtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸¸BÓ?ˆØ�}‰}˜VÓ$Ð$r    ©NN©r   r   r   r   r,   rD   Úarrayr   r   rS   Ú__classcell__©r9   s   @r!   r#   r#      sY   ø„ ðO˜Yõ Oð& $(Ø#ñ	 %à�8‰8ð %ð �r—x‘xÑ ð %ð ˜‰}ð	 %ð
 
�‰÷ %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 )ÚLille130mMLPr$   c                 óÀ  •— t         ‰| �  «        dt        t        d|j                  z  dz  «      dz  «      z  }t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |d¬«      | _
        t        j                  |j                  |d¬«      | _        t        j                  ||j                  d¬«      | _        y )Né   é   rA   r)   Fr'   )r+   r,   Úroundr   r   r/   r3   r   r4   r0   Ú	gate_projÚup_projÚ	down_proj)r8   r$   Ú
hidden_dimr9   s      €r!   r,   zLille130mMLP.__init__P   s˜   ø€ Ü‰ÑÔØœ5¤ Q¨¯©¡_°qÑ%8Ó!9¸CÑ!?Ó@Ñ@ˆ
ä—J‘J˜tŸ{™{°×0CÑ0CÔDˆŒ	ÜŸ™ 4§;¡;°
ÀÔGˆŒÜ—y‘y §¡¨j¸uÔEˆŒÜŸ™ :¨t¯{©{ÀÔGˆ�r    r:   r=   c                 ó–   — | j                  |«      }| j                  t        | j                  |«      | j	                  |«      «      «      S ©N)r4   ra   r   r_   r`   )r8   r:   Úhs      r!   rS   zLille130mMLP.__call__Y   s6   € Ø�I‰I�a‹LˆØ�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr    )	r   r   r   r   r,   rD   rV   rS   rW   rX   s   @r!   rZ   rZ   O   s/   ø„ ðH˜Yõ HðJ˜"Ÿ(™(ð J r§x¡x÷ Jr    rZ   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 )	ÚLille130Blockr$   c                 ób   •— t         ‰| �  «        t        |«      | _        t	        |«      | _        y rd   )r+   r,   r#   Ú	attentionrZ   Úfeed_forwardr7   s     €r!   r,   zLille130Block.__init___   s'   ø€ Ü‰ÑÔÜ+¨DÓ1ˆŒÜ(¨Ó.ˆÕr    r:   r;   r<   r=   c                 óZ   — || j                  |||«      z   }|| j                  |«      z   }|S rd   )ri   rj   )r8   r:   r;   r<   re   Úouts         r!   rS   zLille130Block.__call__d   s5   € ð �—‘˜q $¨Ó.Ñ.ˆØ�$×#Ñ# AÓ&Ñ&ˆØˆ
r    rT   rU   rX   s   @r!   rg   rg   ^   sW   ø„ ð/˜Yõ /ð $(Ø#ñ	à�8‰8ðð �r—x‘xÑ ðð ˜‰}ð	ð
 
�‰÷r    rg   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 )ÚLille130r$   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$   r)   )r+   r,   r/   Ú	Embeddingr   r   Útok_embeddingsÚranger   rg   Úlayersr3   r   r4   )r8   r$   Ú_r9   s      €r!   r,   zLille130.__init__p   sq   ø€ Ü‰ÑÔÜ Ÿl™l¨4¯?©?¸D¿K¹KÓHˆÔÜ9>¸t¿|¹|Ô9LÓMÑ9L°A”}¨$Ö/Ð9LÑMˆŒÜ—J‘J˜tŸ{™{°×0CÑ0CÔDˆ�	ùò Ns   ÁB"Úinputsr<   r=   c                 ó  — | j                  |«      }|€d gt        | j                  «      z  }t        ||d   «      }t	        | j                  |«      D ]  \  }} ||||¬«      }Œ | j                   j                  | j                  |«      «      S )Nr   ©r<   )rq   Úlenrs   r	   ÚzipÚ	as_linearr4   )r8   ru   r<   re   r;   ÚlayerÚcs          r!   rS   zLille130.__call__v   s†   € ð
 ×Ñ Ó'ˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEä$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜ QÔ'‰Að 0ð ×"Ñ"×,Ñ,¨T¯Y©Y°q«\Ó:Ð:r    rd   rU   rX   s   @r!   rn   rn   o   sC   ø„ ðE˜Yõ Eð  $ñ;à—‘ð;ð ˜‰}ð;ð 
�‰÷	;r    rn   c                   ó€   ‡ — e Zd Zdefˆ fd„Z	 d	dej                  dee   dej                  fd„Z	e
d„ «       Zd„ Zˆ xZS )
ÚModelr$   c                 ór   •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        y rd   )r+   r,   r$   r   rn   Útransformerr7   s     €r!   r,   zModel.__init__‰   s,   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ# D›>ˆÕr    ru   r<   r=   c                 ó(   — | j                  ||¬«      S )Nrw   )r€   )r8   ru   r<   s      r!   rS   zModel.__call__�   s   € ð
 ×Ñ ¨eÐÓ4Ð4r    c                 ó.   — | j                   j                  S rd   )r€   rs   )r8   s    r!   rs   zModel.layers–   s   € à×Ñ×&Ñ&Ð&r    c                 ó`   — |j                  «       D ��ci c]  \  }}d|vsŒ||“Œ c}}S c c}}w )NÚ
rotary_emb)Úitems)r8   ÚweightsÚkÚvs       r!   ÚsanitizezModel.sanitizeš   s/   € Ø!(§¡¤ÔJ¡™˜˜A°LÈÒ4I��1‘ ÒJÐJùÓJs   ”*¡*rd   )r   r   r   r   r,   rD   rV   r   r   rS   Úpropertyrs   r‰   rW   rX   s   @r!   r~   r~   ˆ   s[   ø„ ð*˜Yõ *ð  $ñ5à—‘ð5ð ˜‰}ð5ð 
�‰ó	5ð ñ'ó ð'öKr    r~   )Údataclassesr   Útypingr   r   Úmlx.coreÚcorerD   Úmlx.nnr/   Úactivationsr   Úbaser   r	   r
   r   ÚModuler#   rZ   rg   rn   r~   r   r    r!   Ú<module>r“      sŒ   ðõ "ß  å Ý å ß TÑ Tð ô
%�ó 
%ó ð
%ô1%˜Ÿ™ô 1%ôhJ�2—9‘9ô Jô�B—I‘Iô ô";ˆr�y‰yô ;ô2KˆB�I‰Iõ Kr    