Ë
    îÿæi,  ã                   óZ  — d dl mZ d dl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ÚOptionalNé   )Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚscaled_dot_product_attention)Úinitialize_ropec                   ó,  — e Zd ZU 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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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d <   d!Zeed"<   d!Zeed#<   dZeed$<   y)%Ú	ModelArgsÚ	youtu_llmÚ
model_typei õ Ú
vocab_sizei   Úhidden_sizei   Úintermediate_sizeé    Únum_hidden_layersé   Únum_attention_headsÚnum_key_value_headsi   Úkv_lora_ranki   Úq_lora_ranké@   Úqk_rope_head_dimé€   Ú
v_head_dimÚqk_nope_head_dimi   Úmax_position_embeddingsg�íµ ÷Æ°>Úrms_norm_epsi j Ú
rope_thetaTÚrope_traditionalNÚrope_scalingFÚattention_biasÚmlp_biasÚtie_word_embeddings)Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__r   Úintr   r   r   r   r   r   r   r   r   r   r    r!   Úfloatr"   r#   Úboolr$   r   r   r%   r&   r'   © ó    úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/youtu_llm.pyr   r      s×   … à!€J�Ó!Ø€J�ÓØ€K�ÓØ!Ð�sÓ!ØÐ�sÓØ!Ð˜Ó!Ø!Ð˜Ó!Ø€L�#ÓØ€K�ÓØÐ�cÓØ€J�ÓØÐ�cÓØ#)Ð˜SÓ)Ø€L�%ÓØ€J�ÓØ!Ð�dÓ!Ø#'€L�(˜4‘.Ó'Ø €N�DÓ Ø€HˆdÓØ $Ð˜Ô$r1   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 )	ÚYoutuLLMAttentionÚconfigc                 ól  •— t         ‰| �  «        || _        |j                  | _        |j                  | _        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  | _
        |j                  | _        |j                  | _        |j                  |j                  z   | _        | j                  dz  | _        | j                  €?t        j                   | j                  | j
                  | j                  z  d¬«      | _        n©t        j                   | j                  | j                  |j$                  ¬«      | _        t        j(                  | j                  |j*                  ¬«      | _        t        j                   | j                  | j
                  | j                  z  d¬«      | _        t        j                   | j                  | j                  | j                  z   |j$                  ¬«      | _        t        j(                  | j                  |j*                  ¬«      | _        t        j                   | j                  | j
                  | j                  | j                  z
  | j                  z   z  d¬«      | _        t        j                   | j
                  | j                  z  | j                  |j$                  ¬«      | _        t9        | j                  | j                  |j:                  |j<                  |j                  ¬«      | _        y )Ng      à¿F©Úbias©Úeps)ÚbaseÚtraditionalÚscaling_configr    ) ÚsuperÚ__init__r5   r   r   Ú	num_headsr    r"   r   r   r   r   r   Ú
q_head_dimÚscaleÚnnÚLinearÚq_projr%   Úq_a_projÚRMSNormr!   Úq_a_layernormÚq_b_projÚkv_a_proj_with_mqaÚkv_a_layernormÚ	kv_b_projÚo_projr   r#   r$   Úrope©Úselfr5   Ú	__class__s     €r2   r?   zYoutuLLMAttention.__init__'   so  ø€ Ü‰ÑÔØˆŒØ!×-Ñ-ˆÔØ×3Ñ3ˆŒØ'-×'EÑ'EˆÔ$Ø ×+Ñ+ˆŒØ!×-Ñ-ˆÔØ &× 7Ñ 7ˆÔØ"×/Ñ/ˆÔØ ×+Ñ+ˆŒØ &× 7Ñ 7ˆÔØ ×1Ñ1°F×4KÑ4KÑKˆŒà—_‘_ dÑ*ˆŒ
à×ÑÐ#ÜŸ)™)Ø× Ñ  $§.¡.°4·?±?Ñ"BÈôˆD�Kô ŸI™IØ× Ñ  $×"2Ñ"2¸×9NÑ9NôˆDŒMô "$§¡¨D×,<Ñ,<À&×BUÑBUÔ!VˆDÔÜŸI™IØ× Ñ  $§.¡.°4·?±?Ñ"BÈôˆDŒMô #%§)¡)Ø×ÑØ×Ñ × 5Ñ 5Ñ5Ø×&Ñ&ô#
ˆÔô
 !Ÿj™j¨×):Ñ):À×@SÑ@SÔTˆÔÜŸ™Ø×ÑØ�N‰NØ�‰ ×!6Ñ!6Ñ6¸¿¹ÑHñJàô	
ˆŒô —i‘iØ�N‰N˜TŸ_™_Ñ,Ø×ÑØ×&Ñ&ô
ˆŒô $Ø×!Ñ!Ø—‘Ø×/Ñ/Ø!×.Ñ.Ø$*×$BÑ$Bô
ˆ�	r1   ÚxÚmaskÚcacheÚreturnc                 óÖ  — |j                   \  }}}| j                  €| j                  |«      }n/| j                  | j	                  | j                  |«      «      «      }|j                  ||| j                  | j                  «      j                  dddd«      }t        j                  || j                  gd¬«      \  }}	| j                  |«      }
t        j                  |
| j                  gd¬«      \  }
}|j                  ||d| j                  «      j                  dddd«      }| j!                  | j#                  |
«      «      }|j                  ||| j                  d«      j                  dddd«      }t        j                  || j                  gd¬«      \  }}|�‡| j%                  |	|j&                  «      }	| j%                  ||j&                  «      }t        j(                  || j                  d¬«      }|j+                  t        j,                  ||gd¬«      |«      \  }}n]| j%                  |	«      }	| j%                  |«      }t        j(                  || j                  d¬«      }t        j,                  ||gd¬«      }t        j,                  ||	gd¬«      }t/        ||||| j0                  |¬«      }|j                  dddd«      j                  ||d«      }| j3                  |«      S )Nr   é   r   é   éÿÿÿÿ)Úaxis)rT   rB   rS   )Úshaper   rE   rI   rH   rF   Úreshaper@   rA   Ú	transposeÚmxÚsplitr   rJ   r   r   rL   rK   rN   ÚoffsetÚrepeatÚupdate_and_fetchÚconcatenater   rB   rM   )rP   rR   rS   rT   ÚBÚLÚDÚqÚq_nopeÚq_peÚcompressed_kvÚk_peÚkvÚk_nopeÚvaluesÚkeysÚqueriesÚoutputs                     r2   Ú__call__zYoutuLLMAttention.__call___   so  € ð —'‘'‰ˆˆ1ˆaà×ÑÐ#Ø—‘˜A“‰Aà—‘˜d×0Ñ0°·±¸qÓ1AÓBÓCˆAà�I‰I�a˜˜DŸN™N¨D¯O©OÓ<×FÑFÀqÈ!ÈQÐPQÓRˆÜ—x‘x  D×$9Ñ$9Ð#:ÀÔD‰ˆ�à×/Ñ/°Ó2ˆÜ Ÿh™h }°t×7HÑ7HÐ6IÐPRÔSÑˆ�tØ�|‰|˜A˜q ! T×%:Ñ%:Ó;×EÑEÀaÈÈAÈqÓQˆØ�^‰^˜D×/Ñ/°Ó>Ó?ˆØ�Z‰Z˜˜1˜dŸn™n¨bÓ1×;Ñ;¸A¸qÀ!ÀQÓGˆäŸ™ " t×'<Ñ'<Ð&=ÀBÔG‰ˆ�àÐØ—9‘9˜T 5§<¡<Ó0ˆDØ—9‘9˜T 5§<¡<Ó0ˆDÜ—9‘9˜T 4§>¡>¸Ô:ˆDØ ×1Ñ1Ü—‘ ¨˜~°BÔ7¸ó‰LˆD‘&ð —9‘9˜T“?ˆDØ—9‘9˜T“?ˆDÜ—9‘9˜T 4§>¡>¸Ô:ˆDÜ—>‘> 6¨4 .°rÔ:ˆDä—.‘. &¨$ °bÔ9ˆä-Ø�T˜6¨°d·j±jÀtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸¸BÓ?ˆØ�{‰{˜6Ó"Ð"r1   ©NN©r(   r)   r*   r   r?   r^   Úarrayr   r   rr   Ú__classcell__©rQ   s   @r2   r4   r4   &   sX   ø„ ð6
˜yõ 6
ðv $(Ø#ñ	+#à�8‰8ð+#ð �r—x‘xÑ ð+#ð ˜‰}ð	+#ð
 
�‰÷+#r1   r4   c                   óD   ‡ — e Zd Zdefˆ fd„Zdej                  fd„Zˆ xZS )ÚYoutuLLMMLPr5   c                 ó„  •— t         ‰| �  «        t        j                  |j                  |j
                  |j                  ¬«      | _        t        j                  |j                  |j
                  |j                  ¬«      | _        t        j                  |j
                  |j                  |j                  ¬«      | _	        y )Nr7   )
r>   r?   rC   rD   r   r   r&   Ú	gate_projÚup_projÚ	down_projrO   s     €r2   r?   zYoutuLLMMLP.__init__Ž   s‡   ø€ Ü‰ÑÔÜŸ™Ø×Ñ × 8Ñ 8¸v¿¹ô
ˆŒô —y‘yØ×Ñ × 8Ñ 8¸v¿¹ô
ˆŒô Ÿ™Ø×$Ñ$ f×&8Ñ&8¸v¿¹ô
ˆ�r1   rU   c                 ót   — | j                  t        | j                  |«      | j                  |«      «      «      S ©N)r}   r   r{   r|   )rP   rR   s     r2   rr   zYoutuLLMMLP.__call__š   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr1   ©	r(   r)   r*   r   r?   r^   ru   rr   rv   rw   s   @r2   ry   ry   �   s!   ø„ ð

˜yõ 

ðJ˜RŸX™X÷ Jr1   ry   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 )	ÚYoutuLLMDecoderLayerr5   c                 óD  •— t         ‰| �  «        |j                  | _        t        |«      | _        t        |«      | _        t        j                  |j                  |j                  ¬«      | _
        t        j                  |j                  |j                  ¬«      | _        y )Nr9   )r>   r?   r   r4   Ú	self_attnry   ÚmlprC   rG   r!   Úinput_layernormÚpost_attention_layernormrO   s     €r2   r?   zYoutuLLMDecoderLayer.__init__Ÿ   su   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔÜ*¨6Ó2ˆŒÜ˜vÓ&ˆŒÜ!Ÿz™z¨&×*<Ñ*<À&×BUÑBUÔVˆÔÜ(*¯
©
Ø×Ñ F×$7Ñ$7ô)
ˆÕ%r1   rR   rS   rT   rU   c                 óž   — | j                  | j                  |«      ||«      }||z   }| j                  | j                  |«      «      }||z   }|S r   )r„   r†   r…   r‡   )rP   rR   rS   rT   ÚrÚhÚouts          r2   rr   zYoutuLLMDecoderLayer.__call__©   sQ   € ð �N‰N˜4×/Ñ/°Ó2°D¸%Ó@ˆØ�‰EˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�!‰eˆØˆ
r1   rs   rt   rw   s   @r2   r‚   r‚   ž   sW   ø„ ð
˜yõ 
ð $(Ø#ñ	
à�8‰8ð
ð �r—x‘xÑ ð
ð ˜‰}ð	
ð
 
�‰÷
r1   r‚   c                   óH   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zˆ xZS )ÚYoutuLLMModelr5   c                 ó   •— t         ‰| �  «        || _        |j                  | _        |j                  | _        t        j                  |j                  |j                  «      | _        t        |j                  «      D �cg c]  }t        |¬«      ‘Œ c}| _        t        j                  |j                  |j                  ¬«      | _        y c c}w )N)r5   r9   )r>   r?   r5   r   r   rC   Ú	Embeddingr   Úembed_tokensÚranger‚   ÚlayersrG   r!   Únorm)rP   r5   Ú_rQ   s      €r2   r?   zYoutuLLMModel.__init__·   s¡   ø€ Ü‰ÑÔØˆŒØ ×+Ñ+ˆŒØ!'×!9Ñ!9ˆÔÜŸL™L¨×):Ñ):¸F×<NÑ<NÓOˆÔä9>¸v×?WÑ?WÔ9Xó
Ù9X°AÔ ¨Ö/Ð9Xñ
ˆŒô —J‘J˜v×1Ñ1°v×7JÑ7JÔKˆ�	ùò
s   Á?CÚinputsc                 óê   — | j                  |«      }|€d gt        | j                  «      z  }t        ||d   «      }t	        | j                  |«      D ]  \  }} ||||«      }Œ | j                  |«      S )Nr   )r�   Úlenr’   r
   Úzipr“   )rP   r•   rT   rŠ   rS   ÚlayerÚcs          r2   rr   zYoutuLLMModel.__call__Â   su   € ð
 ×Ñ˜fÓ%ˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEÜ$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜˜qÓ!‰Að 0ð �y‰y˜‹|Ðr1   r   r€   rw   s   @r2   r�   r�   ¶   s'   ø„ ð	L˜yõ 	Lð ñà—‘÷r1   r�   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 )ÚModelr5   c                 óî   •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        |j                  s2t        j                  |j                  |j                  d¬«      | _        y y )NFr7   )r>   r?   r5   r   r�   Úmodelr'   rC   rD   r   r   Úlm_headrO   s     €r2   r?   zModel.__init__Ô   s]   ø€ Ü‰ÑÔØˆŒØ ×+Ñ+ˆŒÜ" 6Ó*ˆŒ
Ø×)Ò)ÜŸ9™9 V×%7Ñ%7¸×9JÑ9JÐQVÔWˆD�Lð *r1   r•   c                 óÆ   — | j                  ||«      }| j                  j                  r'| j                   j                  j	                  |«      }|S | j                  |«      }|S r   )rž   r5   r'   r�   Ú	as_linearrŸ   )rP   r•   rT   r‹   s       r2   rr   zModel.__call__Ü   sW   € ð
 �j‰j˜ Ó'ˆØ�;‰;×*Ò*Ø—*‘*×)Ñ)×3Ñ3°CÓ8ˆCð ˆ
ð —,‘,˜sÓ#ˆCØˆ
r1   c                 óV   — | j                   j                  r|j                  dd «       |S )Nzlm_head.weight)r5   r'   Úpop)rP   Úweightss     r2   ÚsanitizezModel.sanitizeè   s#   € Ø�;‰;×*Ò*Ø�K‰KÐ(¨$Ô/Øˆr1   c                 ó.   — | j                   j                  S r   )rž   r’   )rP   s    r2   r’   zModel.layersí   s   € à�z‰z× Ñ Ð r1   r   )r(   r)   r*   r   r?   r^   ru   rr   r¥   Úpropertyr’   rv   rw   s   @r2   rœ   rœ   Ó   s@   ø„ ðX˜yõ Xð ñ
à—‘ó
òð
 ñ!ó ô!r1   rœ   )Údataclassesr   Útypingr   r   r   Úmlx.coreÚcorer^   Úmlx.nnrC   Úactivationsr   r;   r	   r
   r   Ú
rope_utilsr   r   ÚModuler4   ry   r‚   r�   rœ   r0   r1   r2   Ú<module>r°      s’   ðõ "ß &Ñ &å Ý å ß TÑ TÝ 'ð ô%�ó %ó ð%ô.d#˜Ÿ	™	ô d#ôNJ�"—)‘)ô Jô"˜2Ÿ9™9ô ô0�B—I‘Iô ô:!ˆB�I‰Iõ !r1   