Ë
    îÿæ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	<   d
Zee   ed<   dZ	e
ed<   dZ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Únum_hidden_layersÚintermediate_sizeÚnum_attention_headsÚrms_norm_epsÚ
vocab_sizeÚnum_key_value_headsÚhead_dimNÚmax_position_embeddingsFÚattention_biasÚattention_out_biasÚmlp_biasi'  Ú
rope_thetaÚrope_traditionalÚrope_scalingTÚtie_word_embeddings)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚfloatr   r   r   Úboolr   r   r   r   r   r   r   r    © ó    úk/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/seed_oss.pyr   r      s¥   … àƒOØÓØÓØÓØÓØÓØƒOØÓØƒMØ-1Ð˜X c™]Ó1Ø €N�DÓ Ø$Ð˜Ó$Ø€HˆdÓØ€J�ÓØ"Ð�dÓ"Ø;?€L�(˜4  U¨5°#¨:Ñ%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   dej                  fd„Z	ˆ xZ
S )	Ú	AttentionÚargsc                 ó|  •— t         ‰| �  «        |j                  }|j                  x| _        }|j
                  x| _        }|j                  x| _        }|dz  | _        |j                  }|j                  }t        j                  |||z  |¬«      | _        t        j                  |||z  |¬«      | _        t        j                  |||z  |¬«      | _        t        j                  ||z  ||¬«      | _        t#        | j                  |j$                  |j&                  |j(                  |j*                  «      | _        y )Ng      à¿©Úbias)ÚsuperÚ__init__r   r   Ún_headsr   Ú
n_kv_headsr   Úscaler   r   ÚnnÚLinearÚq_projÚk_projÚv_projÚo_projr   r   r   r   r   Úrope)	Úselfr.   Údimr4   r5   r   Ú
input_biasÚoutput_biasÚ	__class__s	           €r+   r3   zAttention.__init__$   s  ø€ Ü‰ÑÔà×ÑˆØ!%×!9Ñ!9Ð9ˆŒ�wØ'+×'?Ñ'?Ð?ˆŒ˜*Ø#'§=¡=Ð0ˆŒ˜à˜t‘^ˆŒ
à×(Ñ(ˆ
Ø×-Ñ-ˆä—i‘i  W¨xÑ%7¸jÔIˆŒÜ—i‘i  Z°(Ñ%:ÀÔLˆŒÜ—i‘i  Z°(Ñ%:ÀÔLˆŒÜ—i‘i ¨(Ñ 2°C¸kÔJˆŒä#Ø�M‰MØ�O‰OØ×!Ñ!Ø×ÑØ×(Ñ(ó
ˆ�	r*   ÚxÚmaskÚcacheÚreturnc                 ó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)rE   r6   rD   )Úshaper9   r:   r;   Úreshaper4   Ú	transposer5   r=   rK   Úupdate_and_fetchr   r6   r<   )r>   rC   rD   rE   ÚBÚLÚDÚqueriesÚkeysÚvaluesÚoutputs              r+   Ú__call__zAttention.__call__>   si  € ð —'‘'‰ˆˆ1ˆaà $§¡¨A£°·±¸A³ÀÇÁÈAÃ�v�ˆð —/‘/ ! Q¨¯©°bÓ9×CÑCÀAÀqÈ!ÈQÓOˆØ�|‰|˜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Ó?ˆØ�{‰{˜6Ó"Ð"r*   ©NN©r!   r"   r#   r   r3   ÚmxÚarrayr   r   rW   Ú__classcell__©rB   s   @r+   r-   r-   #   sW   ø„ ð
˜Yõ 
ð: $(Ø#ñ	#à�8‰8ð#ð �r—x‘xÑ ð#ð ˜‰}ð	#ð
 
�‰÷#r*   r-   c                   ó@   ‡ — e Zd Zdˆ fd„	Zdej
                  fd„Zˆ xZS )ÚMLPc                 óÐ   •— t         ‰| �  «        t        j                  |||¬«      | _        t        j                  |||¬«      | _        t        j                  |||¬«      | _        y )Nr0   )r2   r3   r7   r8   Ú	gate_projÚ	down_projÚup_proj)r>   r?   Ú
hidden_dimr1   rB   s       €r+   r3   zMLP.__init__]   sJ   ø€ Ü‰ÑÔÜŸ™ 3¨
¸Ô>ˆŒÜŸ™ :¨s¸Ô>ˆŒÜ—y‘y  j°tÔ<ˆ�r*   rF   c                 ót   — | j                  t        | j                  |«      | j                  |«      «      «      S ©N)rb   r	   ra   rc   )r>   rC   s     r+   rW   zMLP.__call__c   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr*   )F)r!   r"   r#   r3   rZ   r[   rW   r\   r]   s   @r+   r_   r_   \   s   ø„ õ=ðJ˜RŸX™X÷ J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 )	ÚTransformerBlockr.   c                 ó¦  •— t         ‰| �  «        |j                  | _        |j                  | _        t	        |«      | _        t        |j                  |j                  |j                  «      | _	        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        y )N©Úeps)r2   r3   r   r   r-   Ú	self_attnr_   r   r   Úmlpr7   ÚRMSNormr   Úinput_layernormÚpost_attention_layernorm©r>   r.   rB   s     €r+   r3   zTransformerBlock.__init__h   s–   ø€ Ü‰ÑÔØ#'×#;Ñ#;ˆÔ Ø×+Ñ+ˆÔÜ" 4›ˆŒÜ�t×'Ñ'¨×)?Ñ)?ÀÇÁÓOˆŒÜ!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÕ%r*   rC   rD   rE   rF   c                 óž   — | j                  | j                  |«      ||«      }||z   }| j                  | j                  |«      «      }||z   }|S rf   )rl   ro   rm   rp   )r>   rC   rD   rE   ÚrÚhÚouts          r+   rW   zTransformerBlock.__call__s   sQ   € ð �N‰N˜4×/Ñ/°Ó2°D¸%Ó@ˆØ�‰EˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�!‰eˆØˆ
r*   rX   rY   r]   s   @r+   rh   rh   g   sW   ø„ ð	
˜Yõ 	
ð $(Ø#ñ	
à�8‰8ð
ð �r—x‘xÑ ð
ð ˜‰}ð	
ð
 
�‰÷
r*   rh   c                   óH   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zˆ xZS )Ú	SeedModelr.   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.   rj   )r2   r3   r7   Ú	Embeddingr   r   Úembed_tokensÚranger   rh   Úlayersrn   r   Únorm)r>   r.   Ú_rB   s      €r+   r3   zSeedModel.__init__�   s}   ø€ Ü‰ÑÔÜŸL™L¨¯©¸$×:JÑ:JÓKˆÔä16°t×7MÑ7MÔ1Nó
Ù1N¨AÔ $Ö'Ð1Nñ
ˆŒô —J‘J˜t×/Ñ/°T×5FÑ5FÔGˆ�	ùò
s   ÁB"Úinputsc                 óì   — | j                  |«      }|€d gt        | j                  «      z  }t        ||d   «      }t	        | j                  |«      D ]  \  }} ||||¬«      }Œ | j                  |«      S )Nr   ©rE   )rz   Úlenr|   r   Úzipr}   )r>   r   rE   rt   rD   ÚlayerÚcs          r+   rW   zSeedModel.__call__‰   su   € ð
 ×Ñ˜fÓ%ˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEä$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜ QÔ'‰Að 0ð �y‰y˜‹|Ðr*   rf   )	r!   r"   r#   r   r3   rZ   r[   rW   r\   r]   s   @r+   rw   rw   €   s'   ø„ ðH˜Yõ Hð ñà—‘÷r*   rw   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 )NFr0   )r2   r3   r.   r   rw   Úmodelr    r7   r8   r   r   Úlm_headrq   s     €r+   r3   zModel.__init__œ   se   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ˜t“_ˆŒ
Ø#'×#;Ñ#;ˆÔ Ø×'Ò'ÜŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆD�Lð (r*   r   c                 ó¼   — | j                  ||¬«      }| j                  r-|| j                   j                  j                  j                  z  S | j                  |«      S )Nr�   )r‰   r    rz   ÚweightÚTrŠ   )r>   r   rE   rt   s       r+   rW   zModel.__call__¥   sN   € ð
 �J‰J�v UˆJÓ+ˆØ×#Ò#Ø�t—z‘z×.Ñ.×5Ñ5×7Ñ7Ñ7Ð7à—<‘< “?Ð"r*   c                 óB   — | j                   r|j                  dd «       |S )Nzlm_head.weight)r    Úpop)r>   Úweightss     r+   ÚsanitizezModel.sanitize°   s   € Ø×#Ò#Ø�K‰KÐ(¨$Ô/àˆr*   c                 ó.   — | j                   j                  S rf   )r‰   r|   )r>   s    r+   r|   zModel.layers¶   s   € à�z‰z× Ñ Ð r*   rf   )r!   r"   r#   r   r3   rZ   r[   rW   r‘   Úpropertyr|   r\   r]   s   @r+   r‡   r‡   ›   s@   ø„ ðT˜Yõ Tð ñ	#à—‘ó	#òð ñ!ó ô!r*   r‡   )Údataclassesr   Útypingr   r   r   r   Úmlx.coreÚcorerZ   Úmlx.nnr7   Úactivationsr	   Úbaser
   r   r   Ú
rope_utilsr   r   ÚModuler-   r_   rh   rw   r‡   r)   r*   r+   Ú<module>r�      s�   ðõ "ß -Ó -å Ý å ß TÑ TÝ 'ð ô%�ó %ó ð%ô(6#�—	‘	ô 6#ôrJˆ"�)‰)ô Jô�r—y‘yô ô2�—	‘	ô ô6!ˆB�I‰Iõ !r*   