+
    UV-j"  ã                   ó\  € ^ RI t ^ RIHtHtHt ^ RIHt ^ RIH	t	 ^ RI
t^RIHt ^RIHt R 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 R]	P"                  4      tR# )é    N)ÚDictÚOptionalÚUnion)Úinterpolate©ÚVisionConfigc                 ót   € V P                   p\        V4      ^8w  d   R# Vw  r#rEW#8¼  d   W$8¼  d	   W48X  d   R# R# )é   FT)ÚshapeÚlen)Úarrr   Úout_channelsÚkHÚKWÚ_s   &     Úr/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/deepseekocr/vision.pyÚcheck_array_shaper      s<   € Ø�I‰I€Eô ˆ5ƒz�Q„Ùà#Ñ€L�bð 	Ô Ô!3¸"¼(Ùáó    c                   óL   a a€ ] tR t^t oRV3R lV 3R llltRR ltRtVtV ;t# )Ú	Attentionc                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )é   ÚdimsÚ	num_headsÚqkv_bias)ÚintÚbool)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚAttention.__annotate__   s)   ø€ ÷ 9ñ 9áð9ñ ð9ñ ñ	9r   c                ó"  <€ \         SV `  4        W,          ^ 8w  d   \        RV RV R24      hT;V n        pW,          pVR,          V n        \
        P                  ! W^,          VR7      V n        \
        P                  ! WRR7      V n        R# )r   zIThe input feature dimensions should be divisible by the number of heads (z % z) != 0©ÚbiasTNg      à¿)	ÚsuperÚ__init__Ú
ValueErrorr   ÚscaleÚnnÚLinearÚqkv_projÚout_proj)Úselfr   r   r   Úhead_dimÚ	__class__s   &&&& €r   r&   ÚAttention.__init__   sˆ   ø€ ô 	‰ÑÔàÕ Ô"Üð$Ø$( 6¨¨Y¨K°vð?óð ð
 &/Ð.ˆŒ˜ØÕ$ˆØ˜t•^ˆŒ
äŸ	š	 $¨q­°xÔ@ˆŒÜŸ	š	 $°4Ô8ˆŽr   c                óP  € V P                  V4      p\        P                  ! V^RR7      w  rEpV P                  pVP                  w  r‰p
VP                  w  r¼pVP                  W‰VR4      P                  ^ ^^^4      pVP                  WŒVR4      P                  ^ ^^^4      pVP                  WŒVR4      P                  ^ ^^^4      p\        P                  P                  WEW`P                  VR7      pVP                  ^ ^^^4      P                  W‰R4      pV P                  V4      # )é   ©Úaxis)r(   Úmaskéÿÿÿÿ)r+   ÚmxÚsplitr   r   ÚreshapeÚ	transposeÚfastÚscaled_dot_product_attentionr(   r,   )r-   Úxr5   ÚqkvÚqueriesÚkeysÚvaluesr   ÚBÚLÚDr   ÚSÚoutputs   &&&           r   Ú__call__ÚAttention.__call__2   s  € Ø�m‰m˜AÓˆÜ "§¢¨¨a°bÔ 9Ñˆ�và—N‘Nˆ	Ø—-‘-‰ˆˆaØ—*‘*‰ˆˆaØ—/‘/ !¨	°2Ó6×@Ñ@ÀÀAÀqÈ!ÓLˆØ�|‰|˜A )¨RÓ0×:Ñ:¸1¸aÀÀAÓFˆØ—‘  i°Ó4×>Ñ>¸qÀ!ÀQÈÓJˆä—‘×5Ñ5Ø˜6¯©¸$ð 6ó 
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆà�}‰}˜VÓ$Ð$r   )r   r,   r+   r(   ©T©N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r&   rG   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r/   r   s   @@r   r   r      s   ù‡ € ÷9õ 9÷*%ô %r   r   c                   óT   a a€ ] tR t^Et oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚMLPc                ó<   <€ V ^8„  d   QhRS[ S[S[3,          RS[/# )r   Úconfigr$   )r   r   r   r   )r   r   s   "€r   r    ÚMLP.__annotate__F   s)   ø€ ÷ Vñ V™u¡\±4Ð%7Õ8ð VÁñ Vr   c                ó   <€ \         SV `  4        \        P                  ! 4       V n        \        P
                  ! VP                  VP                  VR 7      V n        \        P
                  ! VP                  VP                  VR 7      V n	        R# )r#   N)
r%   r&   r)   ÚGELUÚactivation_fnr*   Úhidden_sizeÚintermediate_sizeÚfc1Úfc2)r-   rW   r$   r/   s   &&&€r   r&   ÚMLP.__init__F   s^   ø€ Ü‰ÑÔÜŸWšW›YˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÐPTÔUˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÐPTÔUˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r=   Úreturn©r7   Úarray)r   r   s   "€r   r    rX   L   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                óh   € V P                  V P                  V4      4      pV P                  V4      pV# rJ   ©r[   r^   r_   )r-   r=   s   &&r   rG   ÚMLP.__call__L   s,   € Ø×Ñ˜tŸx™x¨›{Ó+ˆØ�H‰H�Q‹KˆØˆr   rg   rI   rK   rS   s   @@r   rU   rU   E   s    ù‡ € ÷Võ V÷÷ ð r   rU   c                   óT   a a€ ] tR t^Rt 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# )ÚEncoderLayerc                ó    <€ V ^8„  d   QhRS[ /# ©r   rW   r   )r   r   s   "€r   r    ÚEncoderLayer.__annotate__S   s   ø€ ÷ Sñ S™|ñ Sr   c                óx  <€ \         SV `  4        VP                  V n        \	        VP                  VP
                  R R7      V n        \        P                  ! V P                  VP                  R7      V n
        \        V4      V n        \        P                  ! V P                  VP                  R7      V n        R# )T)r   )ÚepsN)r%   r&   r\   Ú	embed_dimr   Únum_attention_headsÚ	self_attnr)   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1rU   ÚmlpÚlayer_norm2©r-   rW   r/   s   &&€r   r&   ÚEncoderLayer.__init__S   s�   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ"Ø×Ñ × :Ñ :ÀTô
ˆŒô Ÿ<š<¨¯©¸F×<QÑ<QÔRˆÔÜ�v“;ˆŒÜŸ<š<¨¯©¸F×<QÑ<QÔRˆÖr   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# )r   r=   r5   rc   ©r7   re   r   )r   r   s   "€r   r    rm   ]   s3   ø€ ÷ ñ ™"Ÿ(™(ð ©(±2·8±8Õ*<ð ÉÏÉñ r   c                óª   € V P                  V4      pV P                  W24      pW,           pV P                  V4      pV P                  V4      pW,           # rJ   )ru   rr   rw   rv   )r-   r=   r5   Úys   &&& r   rG   ÚEncoderLayer.__call__]   sK   € Ø×Ñ˜QÓˆØ�N‰N˜1Ó#ˆØ�EˆØ×Ñ˜QÓˆØ�H‰H�Q‹KˆØ�uˆr   )rp   ru   rw   rv   rr   rJ   rK   rS   s   @@r   rj   rj   R   s    ù‡ € ÷Só S÷÷ ò r   rj   c                   óZ   a a€ ] tR t^ft oV3R lV 3R lltR tRV3R lR lltRtVtV ;t	# )ÚVisionEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# rl   r   )r   r   s   "€r   r    ÚVisionEmbeddings.__annotate__g   s   ø€ ÷ Sñ S™|ñ Sr   c                óR  <€ \         SV `  4        Wn        VP                  V n        ^àV n        VP                  V n        \        P                  P                  V P                  34      V n
        \        P                  ! VP                  V P                  V P                  V P                  RR7      V n        V P
                  V P                  ,          ^,          V n        V P                  ^,           V n        \        P"                  ! V P                   V P                  4      V n        R# )éà   F)Úin_channelsr   Úkernel_sizeÚstrider$   N)r%   r&   rW   r\   rp   Ú
image_sizeÚ
patch_sizer7   ÚrandomÚnormalÚclass_embeddingr)   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingrx   s   &&€r   r&   ÚVisionEmbeddings.__init__g   sÐ   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØˆŒØ ×+Ñ+ˆŒä!Ÿy™y×/Ñ/°·±Ð0AÓBˆÔä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?Øô 
ˆÔð !ŸO™O¨t¯©Õ>À1ÕDˆÔØ!×-Ñ-°Õ1ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÖr   c                ó  € VP                   R,          p\        P                  ! V^ R7      pVR,          VR,          re\        \        P
                  ! VP                   ^ ,          ^,
          4      4      p\        \        P
                  ! V4      4      pVP                  p	Wx8w  dç   \        P                  ! V^WwV34      p\        P                  ! VR4      pVP                  \        P                  4      p\        WhV34      p
V
P                  V	4      p
\        P                  ! V
R4      p
\        P                  ! W¨V,          V34      p
\        P                  ! WZ.^ R7      p\        P                  ! V^Wˆ,          ^,           V34      pV# V# )zÖ
Resize absolute positional embeddings

Args:
    abs_pos: Tensor of shape (L, C) - absolute position embeddings
    tgt_size: int - target size M

Returns:
    Tensor of shape (M, C) - resized position embeddings
r3   :Né   N:r–   NNr6   )r   r2   r–   r   )r   r   r2   r–   )r   r7   Úsqueezer   ÚmathÚsqrtÚdtyper9   r:   ÚastypeÚfloat32r   Úconcatenate)r-   Úabs_posÚtgt_sizeÚdimÚabs_pos_newÚ	cls_tokenÚold_pos_embedÚsrc_sizeÚtgt_size_2drš   Únew_pos_embedÚvision_pos_embeds   &&&         r   Ú_get_abs_posÚVisionEmbeddings._get_abs_pos|   s=  € ð �m‰m˜BÕˆÜ—j’j ¨qÔ1ˆØ#.¨r¥?°KÀµO�=Ü”t—y’y ×!2Ñ!2°1Õ!5¸Õ!9Ó:Ó;ˆÜœ$Ÿ)š) HÓ-Ó.ˆØ—‘ˆàÔ"äŸJšJ }°q¸(ÈcÐ6RÓSˆMÜŸLšL¨¸ÓEˆMØ)×0Ñ0´·±Ó<ˆMä'¨À[Ð7QÓRˆMà)×0Ñ0°Ó7ˆMÜŸLšL¨¸ÓEˆMÜŸJšJ }À[Õ7PÐRUÐ6VÓWˆMÜ!Ÿ~š~¨yÐ.HÈqÔQÐÜ!ŸzšzØ  1 kÕ&?À!Õ&CÀSÐ"Ió Ðð $Ð#àˆNr   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# ©r   r=   Úpatch_embedsrc   r{   )r   r   s   "€r   r    r‚   ¡   s6   ø€ ÷ ñ Ù—‘ðÙ)1±"·(±(Õ);ðá	�‰ñr   c                óv  € VP                   w  r4rVV P                  P                  P                  pVe   TpMV P	                  V4      p\
        P                  ! V^^R7      p\
        P                  ! V P                  V^V P                  34      P                  V4      p	\
        P                  ! W’.^R7      p
\
        P                  ! \        P                  ! V P                  4      R,          4      pW P!                  V P                  V4      V
P                   ^,          4      P                  V4      ,           p
V
# )N)Ú
start_axisÚend_axisr3   )N:NNN)r   r“   Úweightrš   r�   r7   ÚflattenÚbroadcast_torŒ   rp   r›   r�   re   ÚnpÚaranger‘   r¨   )r-   r=   r¬   Ú
batch_sizeÚheightÚwidthr   Útarget_dtypeÚpatch_embeddingsÚclass_embedsÚ
embeddingsÚposition_idss   &&&         r   rG   ÚVisionEmbeddings.__call__¡   s  € ð ()§w¡wÑ$ˆ
˜EØ×.Ñ.×5Ñ5×;Ñ;ˆàÒ#Ø+Ñà#×3Ñ3°AÓ6Ðô —z’zÐ"2¸qÈ1ÔMˆô —’Ø× Ñ  :¨q°$·.±.Ð"Aó
ç
‰&�Ó
ð 	ô
 —^’^ \Ð$@ÀqÔIˆ
ô —x’x¤§	¢	¨$×*<Ñ*<Ó =¸gÕ FÓGˆð  ×"3Ñ"3Ø×#Ñ# LÓ1°:×3CÑ3CÀAÕ3Fó#
ç
‰&�Ó
õˆ
ð Ðr   )	rŒ   rW   rp   rˆ   r�   r‘   r�   r‰   r“   rJ   )
rL   rM   rN   rO   r&   r¨   rG   rP   rQ   rR   rS   s   @@r   r€   r€   f   s&   ù‡ € ÷Só Sò*#÷J÷ ò r   r€   c                   óP   a a€ ] tR t^Ât oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚNoTPTransformerc                ó    <€ V ^8„  d   QhRS[ /# rl   r   )r   r   s   "€r   r    ÚNoTPTransformer.__annotate__Ã   s   ø€ ÷ Kñ K™|ñ Kr   c                ó¶   <€ \         SV `  4        VP                  V n        \	        VP                  4       Uu. uF  p\        V4      NK  	  upV n        R # u upi rJ   )r%   r&   ÚlayersÚ
num_layersÚrangerj   )r-   rW   r   r/   s   && €r   r&   ÚNoTPTransformer.__init__Ã   sB   ø€ Ü‰ÑÔØ Ÿ-™-ˆŒÜ5:¸6¿=¹=Ô5IÓJÑ5I°”| FÖ+Ñ5IÑJˆŽùÒJs   ¸Ac                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rb   rd   )r   r   s   "€r   r    rÁ   È   s'   ø€ ÷ ñ á�8‰8ðñ 
�‰ñr   c                ó@   € V P                    F  pV! VR R7      pK  	  V# )N)r5   )rÃ   )r-   r=   Úls   && r   rG   ÚNoTPTransformer.__call__È   s"   € ð —”ˆAÙ�!˜$”ŠAñ àˆr   )rÃ   rÄ   rK   rS   s   @@r   r¿   r¿   Â   s    ù‡ € ÷Kó K÷
÷ ð r   r¿   c                   óZ   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RtVtV ;t	# )ÚVisionModelc                ó    <€ V ^8„  d   QhRS[ /# rl   r   )r   r   s   "€r   r    ÚVisionModel.__annotate__Ò   s   ø€ ÷ 
3ñ 
3™|ñ 
3r   c                ó.  <€ \         SV `  4        VP                  V n        Wn        V P                  R 8w  d   \	        RV P                   24      h\        V4      V n        \        P                  ! VP                  4      V n
        \        V4      V n        R# )ÚvisionzUnsupported model type: N)r%   r&   Ú
model_typerW   r'   r€   r»   r)   rs   r\   Úpre_layrnormr¿   Útransformerrx   s   &&€r   r&   ÚVisionModel.__init__Ò   st   ø€ Ü‰ÑÔà ×+Ñ+ˆŒØŒØ�?‰?˜hÔ&ÜÐ7¸¿¹Ð7HÐIÓJÐJä*¨6Ó2ˆŒÜŸLšL¨×);Ñ);Ó<ˆÔÜ*¨6Ó2ˆÖr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# r«   rd   )r   r   s   "€r   r    rÎ   Þ   s5   ø€ ÷ #ñ #á�8‰8ð#ñ —h‘hð#ñ 
�‰ñ	#r   c                óh   € V P                  W4      pV P                  V4      pV P                  V4      # rJ   )r»   rÒ   rÓ   )r-   r=   r¬   s   &&&r   rG   ÚVisionModel.__call__Þ   s3   € ð
 �O‰O˜AÓ,ˆØ×Ñ˜aÓ ˆØ×Ñ Ó"Ð"r   c                ó  € / p0 RmpVP                  4        Fi  w  rERV9   d   K  RP                  VP                  R4      RR 4      V9   d0   \        V4      '       d   WRV&   KM  VP	                  ^ ^^^4      W$&   Ke  WRV&   Kk  	  V# )úneck.0.weightr¼   Ú.N>
   rÙ   úneck.2.weightúneck_hd.0.weightúneck_hd.2.weightúdownsamples.0.weightúdownsamples.1.weightúsam_model.net_2.weightúsam_model.net_3.weightúpatch_embed.proj.weightú!embeddings.patch_embedding.weightéýÿÿÿ)ÚitemsÚjoinr8   r   r:   )r-   ÚweightsÚsanitized_weightsÚweight_keysÚkÚvs   &&    r   ÚsanitizeÚVisionModel.sanitizeç   s�   € ØÐò
ˆð —M‘M–O‰DˆAØ Ô"áà—‘˜!Ÿ'™' #›, r sÐ+Ó,°Ô;ô
 % Q×'Ò'Ø+, aÓ(à+,¯;©;°q¸!¸QÀÓ+BÐ%Ó(ð () !Ó$ñ! $ð$ !Ð r   )rW   r»   rÑ   rÒ   rÓ   rJ   )
rL   rM   rN   rO   r&   rG   rì   rP   rQ   rR   rS   s   @@r   rÌ   rÌ   Ñ   s#   ù‡ € ÷
3ó 
3÷#ò #÷ !ò  !r   rÌ   )r˜   Útypingr   r   r   Úmlx.coreÚcorer7   Úmlx.nnr)   Únumpyr³   Úbaser   rW   r   r   ÚModuler   rU   rj   r€   r¿   rÌ   © r   r   Ú<module>rö      s†   ðÛ ß (Ñ (å Ý Û å Ý  òô &%�—	‘	ô &%ôR
ˆ"�)‰)ô 
ô�2—9‘9ô ô(Y�r—y‘yô Yôx�b—i‘iô ô6!�"—)‘)ö 6!r   