Ë
    îÿæiV  ã                   óÈ   — d dl mZ d dlmZ d dlmZ d dlmZ ddl	m
Z
 e G d„ de
j                  «      «       Z G d„ d	ej                  «      Z G d
„ dej                  «      Zy)é    )Ú	dataclass)ÚOptionalNé   )Úllamac                   óR   ‡ — e Zd ZU eed<   dZeed<   dZee	e      ed<   ˆ fd„Z
ˆ xZS )Ú	ModelArgsÚ
model_typeé   Úno_rope_layer_intervalNÚno_rope_layersc                 ó(  •— t         ‰| �  «        | j                  €Et        | j                  «      D �cg c]   }t        |dz   | j                  z  dk7  «      ‘Œ" c}| _        y t        | j                  «      | j                  k7  rt        d«      ‚y c c}w )Nr   r   z `no_rope_layers` length mismatch)	ÚsuperÚ__post_init__r   ÚrangeÚnum_hidden_layersÚintr   ÚlenÚ
ValueError)ÚselfÚiÚ	__class__s     €új/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/smollm3.pyr   zModelArgs.__post_init__   s’   ø€ Ü‰ÑÔØ×ÑÐ&ô ˜t×5Ñ5Ô6ó#á6�Aô �Q˜‘U˜d×9Ñ9Ñ9¸QÑ>Õ?Ø6ñ#ˆDÕô �×$Ñ$Ó%¨×)?Ñ)?Ò?ÜÐ?Ó@Ð@ð @ùò	#s   ³%B)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   r   r   r   Úlistr   Ú__classcell__©r   s   @r   r   r      s2   ø… àƒOØ"#Ð˜CÓ#Ø*.€N�H˜T #™YÑ'Ó.÷Að Aó    r   c                   ó   — e Zd ZdZddefd„Zy)ÚNoPEz;No-op used to disable rotary embeddings in selected layers.Úoffsetc                 ó   — |S ©N© )r   Úxr$   s      r   Ú__call__zNoPE.__call__    s   € Øˆr!   N)r   )r   r   r   Ú__doc__r   r)   r'   r!   r   r#   r#      s   „ ÙEñ #ô r!   r#   c                   óˆ   ‡ — e Zd ZdZdefˆ fd„Z	 	 d
dej                  deej                     fd„Z	e
d„ «       Zdefd	„Zˆ xZS )ÚModelz;Wrapper around Llama that respects NoPE layers in SmolLM-3.Úargsc                 ó   •— t         ‰| �  «        || _        |j                  | _        t	        j
                  |«      | _        |j                  s1t        j                  |j                  |j                  d¬«      | _        t        |j                  «      D ]8  \  }}|rŒ	t        «       | j                  j                   |   j"                  _        Œ: y )NF)Úbias)r   Ú__init__r-   r	   r   Ú
LlamaModelÚmodelÚtie_word_embeddingsÚnnÚLinearÚhidden_sizeÚ
vocab_sizeÚlm_headÚ	enumerater   r#   ÚlayersÚ	self_attnÚrope)r   r-   ÚidxÚuse_roper   s       €r   r0   zModel.__init__'   s”   ø€ Ü‰ÑÔØˆŒ	Ø#Ÿ™ˆŒä×%Ñ% dÓ+ˆŒ
Ø×'Ò'ÜŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆDŒLä& t×':Ñ':Ö;‰MˆC�ÚÜ8<»�—
‘
×!Ñ! #Ñ&×0Ñ0Õ5ñ <r!   ÚinputsÚinput_embeddingsc                 óÈ   — | j                  |||«      }| j                  j                  r'| j                   j                  j	                  |«      }|S | j                  |«      }|S r&   )r2   r-   r3   Úembed_tokensÚ	as_linearr8   )r   r?   Úcacher@   Úouts        r   r)   zModel.__call__4   sZ   € ð �j‰j˜ Ð(8Ó9ˆØ�9‰9×(Ò(Ø—*‘*×)Ñ)×3Ñ3°CÓ8ˆCð ˆ
ð —,‘,˜sÓ#ˆCØˆ
r!   c                 ó.   — | j                   j                  S r&   )r2   r:   )r   s    r   r:   zModel.layersA   s   € à�z‰z× Ñ Ð r!   Úweightsc                 ó²   — |j                  «       D ��ci c]  \  }}d|vsŒ||“Œ }}}| j                  j                  r|j                  dd «       |S c c}}w )Nzself_attn.rotary_emb.inv_freqzlm_head.weight)Úitemsr-   r3   Úpop)r   rG   ÚkÚvs       r   ÚsanitizezModel.sanitizeE   s]   € à$Ÿ]™]œ_ô
Ù,‘T�Q˜Ð0OÐWXÒ0XˆAˆq‰D˜_ð 	ñ 
ð �9‰9×(Ò(Ø�K‰KÐ(¨$Ô/Øˆùó
s
   ”A¡A)NN)r   r   r   r*   r   r0   ÚmxÚarrayr   r)   Úpropertyr:   ÚdictrM   r   r    s   @r   r,   r,   $   s^   ø„ ÙEð?˜Yõ ?ð  Ø/3ñ	à—‘ðð # 2§8¡8Ñ,ó	ð ñ!ó ð!ð ÷ r!   r,   )Údataclassesr   Útypingr   Úmlx.coreÚcorerN   Úmlx.nnr4   Ú r   r   ÚModuler#   r,   r'   r!   r   Ú<module>rY      sX   ðõ "Ý å Ý å ð ôA�—‘ó Aó ðAô ˆ2�9‰9ô ô'ˆB�I‰Iõ 'r!   