+
    UV-jI  ã                   ó$  € ^ RI Ht ^ RIHt ^ RIHt ^RIHtH	t	 ^RI
Ht ^RIHt  ! R R]P                  4      t ! R R	]P                  4      t ! R
 R]P                  4      t ! R R]P                  4      t ! R R]P                  4      tR# )é    )ÚOptionalN)ÚLanguageModelOutputÚcreate_attention_mask)ÚKVCache©ÚModelConfigc                   óT   a a€ ] tR t^t oV3R lV 3R lltRV3R lR lltRtVtV ;t# )Ú	Attentionc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/phi4mm/language.pyÚ__annotate__ÚAttention.__annotate__   s   ø€ ÷ 
ñ 
™{ñ 
ó    c                ó,  <€ \         SV `  4        VP                  pVP                  ;V n        pVP
                  ;V n        pVP                  V,          ;V n        pVR,          V n        W5,          ^WE,          ,          ,           p\        P                  ! W&RR7      V n        \        P                  ! W5,          VRR7      V n        \        WQP                  ,          4      p\        P                  ! VVP                   VP"                  R7      V n        R# )g      à?F©Úbias)ÚtraditionalÚbaseNg      à¿)ÚsuperÚ__init__Úhidden_sizeÚnum_attention_headsÚn_headsÚnum_key_value_headsÚ
n_kv_headsÚhead_dimÚscaleÚnnÚLinearÚqkv_projÚo_projÚintÚpartial_rotary_factorÚRoPEÚrope_traditionalÚ
rope_thetaÚrope)	Úselfr   Údimr   r    r!   Úop_sizeÚrope_dimÚ	__class__s	   &&      €r   r   ÚAttention.__init__   sÕ   ø€ Ü‰ÑÔà× Ñ ˆØ!'×!;Ñ!;Ð;ˆŒ�wØ'-×'AÑ'AÐAˆŒ˜*Ø#)×#5Ñ#5¸Õ#@Ð@ˆŒ˜Ø˜t•^ˆŒ
àÕ$ q¨JÕ,AÕ'BÕBˆÜŸ	š	 #°UÔ;ˆŒÜ—i’i Õ 2°C¸eÔDˆŒä�x×">Ñ">Õ>Ó?ˆÜ—G’GØØ×/Ñ/Ø×"Ñ"ô
ˆŽ	r   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# ©r   ÚxÚmaskÚcacheÚreturn©ÚmxÚarrayr   r   )r   r   s   "€r   r   r       sI   ø€ ÷ #ñ #á�8‰8ð#ñ ‘r—x‘xÕ ð#ñ ™Õ ð	#ñ
 
�‰ñ#r   c                ó¸  € VP                   w  rEpV P                  V4      pV P                  V P                  ,          p\        P
                  ! WxW€P                  V P                  ,          ,           .RR7      w  ršpV	P                  WEV P                  R4      P                  ^ ^^^4      p	V
P                  WEV P                  R4      P                  ^ ^^^4      p
VP                  WEV P                  R4      P                  ^ ^^^4      pVeM   V P                  W“P                  R7      p	V P                  W£P                  R7      p
VP                  W«4      w  r«M"V P                  V	4      p	V P                  V
4      p
\        P                  P                  WšW°P                  VR7      pVP                  ^ ^^^4      P                  WER4      pV P                  V4      # )é   ©Úaxis)Úoffset)r"   r6   éÿÿÿÿ)Úshaper%   r   r!   r:   Úsplitr    ÚreshapeÚ	transposer,   r@   Úupdate_and_fetchÚfastÚscaled_dot_product_attentionr"   r&   )r-   r5   r6   r7   ÚBÚLÚ_ÚqkvÚ	query_posÚqueriesÚkeysÚvaluesÚoutputs   &&&&         r   Ú__call__ÚAttention.__call__    s‹  € ð —'‘'‰ˆˆaà�m‰m˜AÓˆØ—L‘L 4§=¡=Õ0ˆ	Ü "§¢Ø˜Y¯©¸4¿=¹=Õ)HÕHÐIÐPRô!
Ñˆ�vð —/‘/ !¨¯©°bÓ9×CÑCÀAÀqÈ!ÈQÓOˆØ�|‰|˜A $§/¡/°2Ó6×@Ñ@ÀÀAÀqÈ!ÓLˆØ—‘  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ä—‘×5Ñ5Ø˜6¯©¸$ð 6ó 
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆØ�{‰{˜6Ó"Ð"r   )r!   r   r    r&   r%   r,   r"   ©NN©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rR   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r1   r   s   @@r   r
   r
      s   ù‡ € ÷
ó 
÷(#÷ #ò #r   r
   c                   óD   a a€ ] tR t^At oV 3R ltV3R lR ltRtVtV ;t# )ÚMLPc                ó¨   <€ \         SV `  4        \        P                  ! V^V,          RR7      V n        \        P                  ! W!RR7      V n        R# )r   Fr   N)r   r   r#   r$   Úgate_up_projÚ	down_proj)r-   r.   Ú
hidden_dimr1   s   &&&€r   r   ÚMLP.__init__B   s9   ø€ Ü‰ÑÔÜŸIšI c¨1¨z­>ÀÔFˆÔÜŸš :¸Ô?ˆŽr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r8   )r:   r;   )r   r   s   "€r   r   ÚMLP.__annotate__G   s   ø€ ÷ 1ñ 1™RŸX™Xñ 1r   c                ó²   € V P                  V4      p\        P                  ! V^RR7      w  r!V P                  \        P
                  ! V4      V,          4      # )r   r>   rA   )ra   r:   rC   rb   r#   Úsilu)r-   r5   Úgates   && r   rR   ÚMLP.__call__G   sB   € Ø×Ñ˜aÓ ˆÜ—(’(˜1˜a bÔ)‰ˆØ�~‰~œbŸgšg d›m¨aÕ/Ó0Ð0r   )rb   ra   rU   r]   s   @@r   r_   r_   A   s   ù‡ € õ@÷
1÷ 1ð 1r   r_   c                   óT   a a€ ] tR t^Mt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚTransformerBlockc                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚTransformerBlock.__annotate__N   s   ø€ ÷ 
ñ 
™{ñ 
r   c                óR  <€ \         SV `  4        \        V4      V n        \	        VP
                  VP                  4      V n        \        P                  ! VP
                  VP                  R 7      V n        \        P                  ! VP
                  VP                  R 7      V n        R# )©ÚepsN)r   r   r
   Ú	self_attnr_   r   Úintermediate_sizeÚmlpr#   ÚRMSNormÚrms_norm_epsÚinput_layernormÚpost_attention_layernorm©r-   r   r1   s   &&€r   r   ÚTransformerBlock.__init__N   su   ø€ Ü‰ÑÔÜ" 6Ó*ˆŒÜ�v×)Ñ)¨6×+CÑ+CÓDˆŒÜ!Ÿzšz¨&×*<Ñ*<À&×BUÑBUÔVˆÔÜ(*¯
ª
Ø×Ñ F×$7Ñ$7ô)
ˆÖ%r   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# r4   r9   )r   r   s   "€r   r   rn   W   sI   ø€ ÷ 	ñ 	á�8‰8ð	ñ ‘r—x‘xÕ ð	ñ ™Õ ð		ñ
 
�‰ñ	r   c                ó¤   € V P                  V P                  V4      W#4      pW,           pV P                  V P                  V4      4      pWT,           # ©N)rr   rw   rt   rx   )r-   r5   r6   r7   ÚrÚhs   &&&&  r   rR   ÚTransformerBlock.__call__W   sF   € ð �N‰N˜4×/Ñ/°Ó2°DÓ@ˆØ�EˆØ�H‰H�T×2Ñ2°1Ó5Ó6ˆØ�uˆr   )rw   rt   rx   rr   rT   rU   r]   s   @@r   rl   rl   M   s   ù‡ € ÷
ó 
÷	÷ 	ò 	r   rl   c                   óX   a a€ ] tR t^ct oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )Ú	TextModelz3Phi-4 transformer backbone (embed + layers + norm).c                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚTextModel.__annotate__f   s   ø€ ÷ Lñ L™{ñ Lr   c                ó†  <€ \         SV `  4        Wn        VP                  V n        \        P
                  ! VP                  VP                  4      V n        \        VP                  4       Uu. uF  p\        VR 7      NK  	  upV n        \        P                  ! VP                  VP                  R7      V n        R# u upi ))r   rp   N)r   r   r   Ú
vocab_sizer#   Ú	Embeddingr   Úembed_tokensÚrangeÚnum_hidden_layersrl   Úlayersru   rv   Únorm)r-   r   rK   r1   s   && €r   r   ÚTextModel.__init__f   s‘   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒÜŸLšL¨×):Ñ):¸F×<NÑ<NÓOˆÔä5:¸6×;SÑ;SÔ5Tó
Ù5T°Ô F×+Ñ5Tñ
ˆŒô —J’J˜v×1Ñ1°v×7JÑ7JÔKˆŽ	ùò
s   Á.B>c                óˆ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          /# ©r   ÚinputsÚinputs_embedsr6   ©r:   r;   r   )r   r   s   "€r   r   r„   p   s?   ø€ ÷ ñ á—‘ðñ  ¡§¡Õ)ðñ ‘r—x‘xÕ ñ	r   c                ó  € Vf   V P                  V4      pMTpVf   R .\        V P                  4      ,          pVf   \        WT^ ,          4      p\	        V P                  V4       F  w  rgV! WSV4      pK  	  V P                  V4      # r}   )rˆ   Úlenr‹   r   ÚziprŒ   )r-   r�   r‘   r6   r7   r   ÚlayerÚcs   &&&&&   r   rR   ÚTextModel.__call__p   s   € ð Ò Ø×!Ñ! &Ó)‰AàˆAàŠ=Ø�FœS §¡Ó-Õ-ˆEàŠ<Ü(¨°!­HÓ5ˆDä˜DŸK™K¨Ö/‰HˆEÙ�a˜qÓ!ŠAñ 0ð �y‰y˜‹|Ðr   )r   rˆ   r‹   rŒ   r†   ©NNN)
rV   rW   rX   rY   Ú__doc__r   rR   rZ   r[   r\   r]   s   @@r   r‚   r‚   c   s#   ù‡ € Ù=÷Ló L÷÷ ò r   r‚   c                   óˆ   a a€ ] tR t^ˆt oRtV3R lV 3R llt]R 4       t]R 4       t]R 4       t	R
V3R lR llt
R	tVtV ;t# )ÚLanguageModelz.Phi-4 language model (backbone + output head).c                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚLanguageModel.__annotate__‹   s   ø€ ÷ Xñ X™{ñ Xr   c                óÒ   <€ \         SV `  4        \        V4      V n        \	        VR R4      '       g5   \
        P                  ! VP                  VP                  RR7      V n	        R# R# )Útie_word_embeddingsTFr   N)
r   r   r‚   ÚmodelÚgetattrr#   r$   r   r†   Úlm_headry   s   &&€r   r   ÚLanguageModel.__init__‹   sP   ø€ Ü‰ÑÔÜ˜vÓ&ˆŒ
Ü�vÐ4°d×;Ò;ÜŸ9š9 V×%7Ñ%7¸×9JÑ9JÐQVÔWˆDŽLñ <r   c                ó.   € V P                   P                  # r}   )r¡   r‹   ©r-   s   &r   r‹   ÚLanguageModel.layers‘   s   € à�z‰z× Ñ Ð r   c                óŒ   € V P                   P                  P                  V P                   P                  P                  ,          # r}   )r¡   r   r   r   r¦   s   &r   r!   ÚLanguageModel.head_dim•   s-   € à�z‰z× Ñ ×,Ñ,°·
±
×0AÑ0A×0UÑ0UÕUÐUr   c                óB   € V P                   P                  P                  # r}   )r¡   r   r   r¦   s   &r   r    ÚLanguageModel.n_kv_heads™   s   € à�z‰z× Ñ ×4Ñ4Ð4r   c                óˆ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          /# r�   r’   )r   r   s   "€r   r   rž   �   s?   ø€ ÷ 2ñ 2á—‘ð2ñ  ¡§¡Õ)ð2ñ ‘r—x‘xÕ ñ	2r   c                óÒ   € V P                  WW4R 7      p\        V R4      '       d   V P                  V4      pM%V P                   P                  P	                  V4      p\        VR7      # ))r6   r7   r£   )Úlogits)r¡   Úhasattrr£   rˆ   Ú	as_linearr   )r-   r�   r‘   r6   r7   ÚkwargsÚoutr®   s   &&&&&,  r   rR   ÚLanguageModel.__call__�   sV   € ð �j‰j˜°TˆjÓGˆä�4˜×#Ò#Ø—\‘\ #Ó&‰Fà—Z‘Z×,Ñ,×6Ñ6°sÓ;ˆFä"¨&Ô1Ð1r   )r£   r¡   r™   )rV   rW   rX   rY   rš   r   Úpropertyr‹   r!   r    rR   rZ   r[   r\   r]   s   @@r   rœ   rœ   ˆ   sa   ù‡ € Ù8÷Xó Xð ñ!ó ð!ð ñVó ðVð ñ5ó ð5÷2÷ 2ò 2r   rœ   )Útypingr   Úmlx.coreÚcorer:   Úmlx.nnr#   r   r   r   r7   r   r   r   ÚModuler
   r_   rl   r‚   rœ   © r   r   Ú<module>r»      si   ðÝ å Ý ç =Ý Ý ô3#�—	‘	ô 3#ôl	1ˆ"�)‰)ô 	1ô�r—y‘yô ô,"�—	‘	ô "ôJ$2�B—I‘Iö $2r   