Ë
    îÿæiÄ  ã                   ój  — 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 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)Úshard_linearé   )Ú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<   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Únum_attention_headsÚrms_norm_epsÚ
vocab_sizeÚnum_key_value_headsÚmax_position_embeddingsÚ
rope_thetaÚhead_dimÚtie_word_embeddingsNÚrope_scaling)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚfloatÚboolr   r   r   r   © ó    úh/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/qwen3.pyr   r      si   … àƒOØÓØÓØÓØÓØÓØƒOØÓØ Ó ØÓØƒMØÓØ;?€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
                  €J ‚|j
                  x| _        }|j                  }|dz  | _        t        j                  |||z  d¬«      | _        t        j                  |||z  d¬«      | _        t        j                  |||z  d¬«      | _        t        j                  ||z  |d¬«      | _        t        j                  ||j                   ¬«      | _        t        j                  ||j                   ¬«      | _        t'        ||j(                  d|j*                  |j,                  ¬«      | _        y )Ng      à¿F©Úbias©Úeps)ÚbaseÚtraditionalÚscaling_configr   )ÚsuperÚ__init__r   r   Ún_headsr   Ú
n_kv_headsr   ÚscaleÚnnÚLinearÚq_projÚk_projÚv_projÚo_projÚRMSNormr   Úq_normÚk_normr   r   r   r   Úrope)Úselfr+   Údimr6   r7   r   Ú	__class__s         €r(   r5   zAttention.__init__!   s"  ø€ Ü‰ÑÔà×ÑˆØ!%×!9Ñ!9Ð9ˆŒ�wØ×'Ñ'Ð3Ð3Ð3Ø'+×'?Ñ'?Ð?ˆŒ˜*à—=‘=ˆØ˜t‘^ˆŒ
ä—i‘i  W¨xÑ%7¸eÔDˆŒÜ—i‘i  Z°(Ñ%:ÀÔGˆŒÜ—i‘i  Z°(Ñ%:ÀÔGˆŒÜ—i‘i ¨(Ñ 2°C¸eÔDˆŒä—j‘j ¨t×/@Ñ/@ÔAˆŒÜ—j‘j ¨t×/@Ñ/@ÔAˆŒÜ#ØØ—‘ØØ×,Ñ,Ø$(×$@Ñ$@ô
ˆ�	r'   ÚxÚmaskÚcacheÚreturnc                 ó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)rH   r8   rG   )Úshaper;   r<   r=   r@   Úreshaper6   Ú	transposerA   r7   rB   rN   Úupdate_and_fetchr   r8   r>   )rC   rF   rG   rH   ÚBÚLÚDÚqueriesÚkeysÚvaluesÚoutputs              r(   Ú__call__zAttention.__call__;   sƒ  € ð —'‘'‰ˆˆ1ˆaà $§¡¨A£°·±¸A³ÀÇÁÈAÃ�v�ˆà—+‘+˜gŸo™o¨a°°D·L±LÀ"ÓEÓF×PÑPØˆq�!�Qó
ˆð �{‰{˜4Ÿ<™<¨¨1¨d¯o©o¸rÓBÓC×MÑMØˆq�!�Qó
ˆð —‘  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   r5   ÚmxÚarrayr   r   rZ   Ú__classcell__©rE   s   @r(   r*   r*       sW   ø„ ð
˜Yõ 
ð: $(Ø#ñ	#à�8‰8ð#ð �r—x‘xÑ ð#ð ˜‰}ð	#ð
 
�‰÷#r'   r*   c                   ó>   ‡ — e Zd Zˆ fd„Zdej
                  fd„Zˆ xZS )ÚMLPc                 óÐ   •— t         ‰| �  «        t        j                  ||d¬«      | _        t        j                  ||d¬«      | _        t        j                  ||d¬«      | _        y ©NFr-   )r4   r5   r9   r:   Ú	gate_projÚ	down_projÚup_proj)rC   rD   Ú
hidden_dimrE   s      €r(   r5   zMLP.__init__]   sJ   ø€ Ü‰ÑÔÜŸ™ 3¨
¸Ô?ˆŒÜŸ™ :¨s¸Ô?ˆŒÜ—y‘y  j°uÔ=ˆ�r'   rI   c                 ót   — | j                  t        | j                  |«      | j                  |«      «      «      S ©N)rf   r
   re   rg   )rC   rF   s     r(   rZ   zMLP.__call__c   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr'   )r   r   r    r5   r]   r^   rZ   r_   r`   s   @r(   rb   rb   \   s   ø„ ô>ðJ˜RŸX™X÷ Jr'   rb   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                  «      | _        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        || _        y )Nr/   )r4   r5   r   r   r*   Ú	self_attnrb   r   Úmlpr9   r?   r   Úinput_layernormÚpost_attention_layernormr+   ©rC   r+   rE   s     €r(   r5   zTransformerBlock.__init__h   s™   ø€ Ü‰ÑÔØ#'×#;Ñ#;ˆÔ Ø×+Ñ+ˆÔÜ" 4›ˆŒÜ�t×'Ñ'¨×)?Ñ)?Ó@ˆŒÜ!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ð ˆ�	r'   rF   rG   rH   rI   c                 óž   — | j                  | j                  |«      ||«      }||z   }| j                  | j                  |«      «      }||z   }|S rj   )rn   rp   ro   rq   )rC   rF   rG   rH   ÚrÚhÚouts          r(   rZ   zTransformerBlock.__call__t   sQ   € ð �N‰N˜4×/Ñ/°Ó2°D¸%Ó@ˆØ�‰EˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�!‰eˆØˆ
r'   r[   r\   r`   s   @r(   rl   rl   g   sW   ø„ ð
˜Yõ 
ð $(Ø#ñ	
à�8‰8ð
ð �r—x‘xÑ ð
ð ˜‰}ð	
ð
 
�‰÷
r'   rl   c                   óh   ‡ — e Zd Zdefˆ fd„Z	 	 ddej                  deej                     fd„Zˆ xZ	S )Ú
Qwen3Modelr+   c                 óÂ  •— t         ‰| �  «        || _        |j                  | _        |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   )r+   r/   )r4   r5   r+   r   r   r9   Ú	Embeddingr   Úembed_tokensÚrangerl   Úlayersr?   r   Únorm)rC   r+   Ú_rE   s      €r(   r5   zQwen3Model.__init__‚   s¯   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒØ!%×!7Ñ!7ˆÔØ�‰ Ò"Ð"Ð"ÜŸL™L¨¯©¸$×:JÑ:JÓKˆÔä16°t×7MÑ7MÔ1Nó
Ù1N¨AÔ $Ö'Ð1Nñ
ˆŒô —J‘J˜t×/Ñ/°T×5FÑ5FÔGˆ�	ùò
s   ÂCÚinputsÚinput_embeddingsc                 óô   — |�|}n| j                  |«      }|€d gt        | j                  «      z  }t        ||d   «      }t	        | j                  |«      D ]  \  }} ||||«      }Œ | j                  |«      S )Nr   )r{   Úlenr}   r   Úzipr~   )rC   r€   rH   r�   ru   rG   ÚlayerÚcs           r(   rZ   zQwen3Model.__call__Ž   s€   € ð Ð'Ø ‰Aà×!Ñ! &Ó)ˆAàˆ=Ø�FœS §¡Ó-Ñ-ˆEÜ$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜˜qÓ!‰Að 0ð �y‰y˜‹|Ðr'   r[   )
r   r   r    r   r5   r]   r^   r   rZ   r_   r`   s   @r(   rx   rx   �   s=   ø„ ð
H˜Yõ 
Hð Ø/3ñ	à—‘ðð # 2§8¡8Ñ,÷	r'   rx   c                   óº   ‡ — e Zd Zdefˆ fd„Z	 	 d
dej                  deej                     fd„Zd„ Z	ddeej                  j                     fd„Zed	„ «       Zˆ xZS )ÚModelr+   c                 óî   •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        |j                  s2t        j                  |j                  |j                  d¬«      | _        y y rd   )r4   r5   r+   r   rx   Úmodelr   r9   r:   r   r   Úlm_headrr   s     €r(   r5   zModel.__init__¤   sX   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ Ó%ˆŒ
Ø×'Ò'ÜŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆD�Lð (r'   r€   r�   c                 óÈ   — | j                  |||«      }| j                  j                  r'| j                   j                  j	                  |«      }|S | j                  |«      }|S rj   )rŠ   r+   r   r{   Ú	as_linearr‹   )rC   r€   rH   r�   rv   s        r(   rZ   zModel.__call__¬   sZ   € ð �j‰j˜ Ð(8Ó9ˆØ�9‰9×(Ò(Ø—*‘*×)Ñ)×3Ñ3°CÓ8ˆCð ˆ
ð —,‘,˜sÓ#ˆCØˆ
r'   c                 óV   — | j                   j                  r|j                  dd «       |S )Nzlm_head.weight)r+   r   Úpop)rC   Úweightss     r(   ÚsanitizezModel.sanitize¹   s#   € Ø�9‰9×(Ò(Ø�K‰KÐ(¨$Ô/Øˆr'   Úgroupc                 óÌ  — |xs t         j                  j                  «       }|j                  «       }| j                  j
                  D �]˜  }t        |j                  j                  d|¬«      |j                  _        t        |j                  j                  d|¬«      |j                  _	        t        |j                  j                  d|¬«      |j                  _
        t        |j                  j                  d|¬«      |j                  _        |j                  xj                  |z  c_        |j                  xj                  |z  c_        t        |j                  j                  d|¬«      |j                  _        t        |j                  j                   d|¬«      |j                  _        t        |j                  j"                  d|¬«      |j                  _        �Œ› y )Nzall-to-sharded)r’   zsharded-to-all)r]   ÚdistributedÚinitÚsizerŠ   r}   r   rn   r;   r<   r=   r>   r6   r7   ro   re   rf   rg   )rC   r’   ÚNr…   s       r(   ÚshardzModel.shard¾   se  € ØÒ.œŸ™×,Ñ,Ó.ˆØ�J‰J‹LˆØ—Z‘Z×&Õ&ˆEä%1Ø—‘×&Ñ&Ð(8Àô&ˆE�O‰OÔ"ô &2Ø—‘×&Ñ&Ð(8Àô&ˆE�O‰OÔ"ô &2Ø—‘×&Ñ&Ð(8Àô&ˆE�O‰OÔ"ô &2Ø—‘×&Ñ&Ð(8Àô&ˆE�O‰OÔ"ð �O‰O×#Ò#¨Ñ)Õ#Ø�O‰O×&Ò&¨1Ñ,Õ&ô #/Ø—	‘	×#Ñ#Ð%5¸Uô#ˆE�I‰IÔô #/Ø—	‘	×#Ñ#Ð%5¸Uô#ˆE�I‰IÔô !-Ø—	‘	×!Ñ!Ð#3¸5ô!ˆE�I‰IÖñ1 'r'   c                 ó.   — | j                   j                  S rj   )rŠ   r}   )rC   s    r(   r}   zModel.layersÝ   s   € à�z‰z× Ñ Ð r'   r[   rj   )r   r   r    r   r5   r]   r^   r   rZ   r‘   r”   ÚGroupr˜   Úpropertyr}   r_   r`   s   @r(   rˆ   rˆ   £   sq   ø„ ðT˜Yõ Tð Ø/3ñ	à—‘ðð # 2§8¡8Ñ,ó	òñ
˜8 B§N¡N×$8Ñ$8Ñ9ó ð> ñ!ó ô!r'   rˆ   )Údataclassesr   Útypingr   r   r   r   Úmlx.coreÚcorer]   Úmlx.nnr9   Úmlx.nn.layers.distributedr   Úactivationsr
   r1   r   r   r   Ú
rope_utilsr   r   ÚModuler*   rb   rl   rx   rˆ   r&   r'   r(   Ú<module>r¥      s—   ðõ "ß -Ó -å Ý Ý 2å ß TÑ TÝ 'ð ô@�ó @ó ð@ô 9#�—	‘	ô 9#ôxJˆ"�)‰)ô Jô�r—y‘yô ô4�—‘ô ôD<!ˆB�I‰Iõ <!r'   