Ë
    îÿæ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	<   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<   dZeed<   y)Ú	ModelArgsÚ
model_typeÚhidden_sizeÚnum_hidden_layersÚintermediate_sizeÚnum_attention_headsÚrms_norm_epsÚ
vocab_sizeÚlogits_scalingÚattention_multiplierÚembedding_multiplierÚresidual_multiplierÚmax_position_embeddingsÚnum_key_value_headsÚattention_biasÚmlp_biasÚ
rope_thetaNÚrope_scalingTÚtie_word_embeddings)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚfloatÚboolr    r   r   r   r!   © ó    új/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/granite.pyr   r      sŒ   … àƒOØÓØÓØÓØÓØÓØƒOØÓØÓØÓØÓØ Ó ØÓØÓØƒNØÓØ;?€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                 ód  •— t         ‰| �  «        |j                  }|j                  x| _        }|j
                  x| _        }|j                  |z  x| _        }|j                  | _	        |j                  }t        j                  |||z  |¬«      | _        t        j                  |||z  |¬«      | _        t        j                  |||z  |¬«      | _        t        j                  ||z  ||¬«      | _        t#        | j                  |j$                  d|j&                  |j(                  «      | _        y )N©ÚbiasF)ÚsuperÚ__init__r   r   Ún_headsr   Ú
n_kv_headsÚhead_dimr   Úscaler   ÚnnÚLinearÚq_projÚk_projÚv_projÚo_projr   r   r    r   Úrope)Úselfr/   Údimr5   r6   r7   r   Ú	__class__s          €r,   r4   zAttention.__init__%   sÿ   ø€ Ü‰ÑÔà×ÑˆØ!%×!9Ñ!9Ð9ˆŒ�wØ'+×'?Ñ'?Ð?ˆŒ˜*à#'×#3Ñ#3°wÑ#>Ð>ˆŒ˜à×.Ñ.ˆŒ
Ø×,Ñ,ˆÜ—i‘i  W¨xÑ%7¸nÔMˆŒÜ—i‘i  Z°(Ñ%:ÀÔPˆŒÜ—i‘i  Z°(Ñ%:ÀÔPˆŒÜ—i‘i ¨(Ñ 2°C¸nÔMˆŒä#Ø�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   r8   rD   )Úshaper;   r<   r=   Úreshaper5   Ú	transposer6   r?   rK   Úupdate_and_fetchr   r8   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   r4   ÚmxÚarrayr   r   rW   Ú__classcell__©rB   s   @r,   r.   r.   $   sW   ø„ ð
˜Yõ 
ð6 $(Ø#ñ	#à�8‰8ð#ð �r—x‘xÑ ð#ð ˜‰}ð	#ð
 
�‰÷#r+   r.   c                   óD   ‡ — e Zd Zdefˆ fd„Zdej                  fd„Zˆ xZS )ÚMLPr/   c                 ó6  •— t         ‰| �  «        |j                  }|j                  }t	        |d«      r|j
                  }nd}t        j                  |||¬«      | _        t        j                  |||¬«      | _	        t        j                  |||¬«      | _
        y )Nr   Fr1   )r3   r4   r   r   Úhasattrr   r9   r:   Ú	gate_projÚ	down_projÚup_proj)r@   r/   rA   Ú
hidden_dimr   rB   s        €r,   r4   zMLP.__init__]   sx   ø€ Ü‰ÑÔà×ÑˆØ×+Ñ+ˆ
Ü�4˜Ô$Ø—}‘}‰HàˆHäŸ™ 3¨
¸ÔBˆŒÜŸ™ :¨s¸ÔBˆŒÜ—y‘y  j°xÔ@ˆ�r+   rF   c                 ót   — | j                  t        | j                  |«      | j                  |«      «      «      S ©N)rc   r	   rb   rd   )r@   rC   s     r,   rW   zMLP.__call__k   s)   € Ø�~‰~œf T§^¡^°AÓ%6¸¿¹ÀQ»ÓHÓIÐIr+   ©	r"   r#   r$   r   r4   rZ   r[   rW   r\   r]   s   @r,   r_   r_   \   s#   ø„ ðA˜Yõ Að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        |«      | _        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        |j                  | _        y )N©Úeps)r3   r4   r   r   r.   Ú	self_attnr_   Úmlpr9   ÚRMSNormr   Úinput_layernormÚpost_attention_layernormr   ©r@   r/   rB   s     €r,   r4   zTransformerBlock.__init__p   s‘   ø€ Ü‰ÑÔØ#'×#;Ñ#;ˆÔ Ø×+Ñ+ˆÔÜ" 4›ˆŒÜ�t“9ˆŒÜ!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ð $(×#;Ñ#;ˆÕ r+   rC   rD   rE   rF   c                 óÒ   — | j                  | j                  |«      ||«      }||| j                  z  z   }| j                  | j	                  |«      «      }||| j                  z  z   }|S rg   )rn   rq   r   ro   rr   )r@   rC   rD   rE   ÚrÚhÚouts          r,   rW   zTransformerBlock.__call__|   si   € ð �N‰N˜4×/Ñ/°Ó2°D¸%Ó@ˆØ��D×,Ñ,Ñ,Ñ,ˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�!�d×.Ñ.Ñ.Ñ.ˆØˆ
r+   rX   rY   r]   s   @r,   rj   rj   o   sW   ø„ ð
<˜Yõ 
<ð $(Ø#ñ	
à�8‰8ð
ð �r—x‘xÑ ð
ð ˜‰}ð	
ð
 
�‰÷
r+   rj   c                   óH   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zˆ xZS )ÚGraniteModelr/   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                  ¬«      | _        |j                  | _        y c c}w )Nr   )r/   rl   )r3   r4   r/   r   r   r9   Ú	Embeddingr   Úembed_tokensÚrangerj   Úlayersrp   r   Únormr   )r@   r/   Ú_rB   s      €r,   r4   zGraniteModel.__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-Úinputsc                 ó  — | j                  |«      | j                  z  }|€d gt        | j                  «      z  }t	        ||d   «      }t        | j                  |«      D ]  \  }} ||||¬«      }Œ | j                  |«      S )Nr   )rE   )r|   r   Úlenr~   r   Úzipr   )r@   r�   rE   rv   rD   ÚlayerÚcs          r,   rW   zGraniteModel.__call__—   s€   € ð
 ×Ñ˜fÓ%¨×(AÑ(AÑAˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEä$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜ QÔ'‰Að 0ð �y‰y˜‹|Ðr+   rg   rh   r]   s   @r,   ry   ry   ‰   s%   ø„ ð>˜Yõ >ð  ñà—‘÷r+   ry   c                   óX   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zed„ «       Z	ˆ xZ
S )ÚModelr/   c                 ó  •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        |j                  s1t        j                  |j                  |j                  d¬«      | _        |j                  | _        y )NFr1   )r3   r4   r/   r   ry   Úmodelr!   r9   r:   r   r   Úlm_headr   rs   s     €r,   r4   zModel.__init__ª   sa   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ! $Ó'ˆŒ
Ø×'Ò'ÜŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆDŒLØ"×1Ñ1ˆÕr+   r�   c                 óÞ   — | j                  ||«      }| j                  j                  r&| j                   j                  j	                  |«      }n| j                  |«      }|| j                  z  S rg   )rŠ   r/   r!   r|   Ú	as_linearr‹   r   )r@   r�   rE   rw   s       r,   rW   zModel.__call__³   sZ   € ð
 �j‰j˜ Ó'ˆØ�9‰9×(Ò(Ø—*‘*×)Ñ)×3Ñ3°CÓ8‰Cà—,‘,˜sÓ#ˆCØ�T×(Ñ(Ñ(Ð(r+   c                 ó.   — | j                   j                  S rg   )rŠ   r~   )r@   s    r,   r~   zModel.layers¿   s   € à�z‰z× Ñ Ð r+   rg   )r"   r#   r$   r   r4   rZ   r[   rW   Úpropertyr~   r\   r]   s   @r,   rˆ   rˆ   ©   s9   ø„ ð2˜Yõ 2ð ñ
)à—‘ó
)ð ñ!ó ô!r+   rˆ   )Údataclassesr   Útypingr   r   r   r   Úmlx.coreÚcorerZ   Úmlx.nnr9   Úactivationsr	   Úbaser
   r   r   Ú
rope_utilsr   r   ÚModuler.   r_   rj   ry   rˆ   r*   r+   r,   Ú<module>r™      s‘   ðõ "ß -Ó -å Ý å ß TÑ TÝ 'ð ô%�ó %ó ð%ô*5#�—	‘	ô 5#ôpJˆ"�)‰)ô Jô&�r—y‘yô ô4�2—9‘9ô ô@!ˆB�I‰Iõ !r+   