+
    UV-j&$  ã                   ó@  € ^ RI Ht ^ RIHt ^ RIHt ^ RI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# )é    )ÚOptionalN©ÚVisionConfigc                 ó€   € V P                   p\        V4      ^8w  d   R# Vw  r#rEW#8¬  ;'       d    W$8¬  ;'       d    W48H  # )é   F)ÚshapeÚlen)Úarrr   Úout_channelsÚk_hÚk_wÚ_s   &     Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/minicpmo/vision.pyÚcheck_array_shaper   
   sA   € Ø�I‰I€EÜ
ˆ5ƒz�Q„ÙØ %Ñ€L�sØÑ×KÐK lÑ&9×KÐKÀÁ
ÐKó    c                   ó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# )ÚSiglipAttentionc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚSiglipAttention.__annotate__   s   ø€ ÷ Mñ M™|ñ Mr   c                ó  <€ \         SV `  4        VP                  V n        VP                  V n        V P                  V P
                  ,          V n        V P                  V P
                  ,          V P                  8w  d'   \        R V P                   RV P
                   R24      hV P                  R,          V n        \        P                  ! V P                  V P                  RR7      V n        \        P                  ! V P                  V P                  RR7      V n        \        P                  ! V P                  V P                  RR7      V n        \        P                  ! V P                  V P                  RR7      V n        R# )zembed_dim (z") must be divisible by num_heads (z).T©ÚbiasNg      à¿)ÚsuperÚ__init__Úhidden_sizeÚ	embed_dimÚnum_attention_headsÚ	num_headsÚhead_dimÚ
ValueErrorÚscaleÚnnÚLinearÚk_projÚv_projÚq_projÚout_proj©Úselfr   Ú	__class__s   &&€r   r    ÚSiglipAttention.__init__   s  ø€ Ü‰ÑÔØ×+Ñ+ˆŒØ×3Ñ3ˆŒØŸ™¨$¯.©.Õ8ˆŒØ�=‰=˜4Ÿ>™>Õ)¨T¯^©^Ô;ÜØ˜dŸn™nÐ-Ð-OÐPT×P^ÑP^ÐO_Ð_aÐbóð ð —]‘] DÕ(ˆŒ
ä—i’i §¡°·±ÀTÔJˆŒÜ—i’i §¡°·±ÀTÔJˆŒÜ—i’i §¡°·±ÀTÔJˆŒÜŸ	š	 $§.¡.°$·.±.ÀtÔLˆŽr   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# ©r   Úhidden_statesÚattention_maskÚreturn©ÚmxÚarrayr   )r   r   s   "€r   r   r   #   s:   ø€ ÷ *ñ *á—x‘xð*ñ !¡§¡Õ*ð*ñ 
�‰ñ	*r   c                ó¶  € VP                   w  r4pV P                  V4      pV P                  V4      pV P                  V4      pVP	                  W4V P
                  V P                  4      P                  ^ ^^^4      pVP	                  W4V P
                  V P                  4      P                  ^ ^^^4      pVP	                  W4V P
                  V P                  4      P                  ^ ^^^4      p\        P                  P                  VVVV P                  VR7      p	V	P                  ^ ^^^4      P	                  W4V P                  4      p	V P                  V	4      # )r   )r'   Úmask)r   r,   r*   r+   Úreshaper$   r%   Ú	transposer8   ÚfastÚscaled_dot_product_attentionr'   r"   r-   )
r/   r4   r5   Ú
batch_sizeÚseq_lenr   Úquery_statesÚ
key_statesÚvalue_statesÚattn_outputs
   &&&       r   Ú__call__ÚSiglipAttention.__call__#   sC  € ð
 "/×!4Ñ!4Ñˆ
˜Qà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà#×+Ñ+Ø §¡°·±ó
ç
‰)�A�q˜!˜QÓ
ð 	ð  ×'Ñ'Ø §¡°·±ó
ç
‰)�A�q˜!˜QÓ
ð 	ð $×+Ñ+Ø §¡°·±ó
ç
‰)�A�q˜!˜QÓ
ð 	ô —g‘g×:Ñ:ØØØØ—*‘*Øð ;ó 
ˆð "×+Ñ+¨A¨q°!°QÓ7×?Ñ?Ø §¡ó
ˆð �}‰}˜[Ó)Ð)r   )r"   r%   r*   r$   r-   r,   r'   r+   ©N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r    rF   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r0   r   s   @@r   r   r      s    ù‡ € ÷Mó M÷ *÷ *ò *r   r   c                   óP   a a€ ] tR t^Et oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú	SiglipMLPc                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚSiglipMLP.__annotate__F   s   ø€ ÷ 7ñ 7™|ñ 7r   c                ó$  <€ \         SV `  4        \        P                  ! VP                  VP
                  R R7      V n        \        P                  ! VP
                  VP                  R R7      V n        \        P                  ! RR7      V n	        R# )Tr   Úprecise)ÚapproxN)
r   r    r(   r)   r!   Úintermediate_sizeÚfc1Úfc2ÚGELUÚactivation_fnr.   s   &&€r   r    ÚSiglipMLP.__init__F   sa   ø€ Ü‰ÑÔÜ—9’9˜V×/Ñ/°×1IÑ1IÐPTÔUˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÐPTÔUˆŒÜŸWšW¨IÔ6ˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   r4   r6   )r8   r9   )r   r   s   "€r   r   rU   L   s#   ø€ ÷ ñ ¡b§h¡hð ±2·8±8ñ r   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# rH   )rZ   r]   r[   )r/   r4   s   &&r   rF   ÚSiglipMLP.__call__L   s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr   )r]   rZ   r[   rI   rQ   s   @@r   rS   rS   E   s   ù‡ € ÷7ó 7÷÷ ð r   rS   c                   óT   a a€ ] tR t^St 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# )ÚSiglipEncoderLayerc                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚSiglipEncoderLayer.__annotate__T   s   ø€ ÷ %ñ %™|ñ %r   c                ó(  <€ \         SV `  4        \        P                  ! VP                  VP
                  R 7      V n        \        P                  ! VP                  VP
                  R 7      V n        \        V4      V n	        \        V4      V n        R# )©ÚepsN)r   r    r(   Ú	LayerNormr!   Úlayer_norm_epsÚlayer_norm1Úlayer_norm2r   Ú	self_attnrS   Úmlpr.   s   &&€r   r    ÚSiglipEncoderLayer.__init__T   sd   ø€ Ü‰ÑÔÜŸ<š<¨×(:Ñ(:À×@UÑ@UÔVˆÔÜŸ<š<¨×(:Ñ(:À×@UÑ@UÔVˆÔÜ(¨Ó0ˆŒÜ˜VÓ$ˆŽr   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# r3   r7   )r   r   s   "€r   r   re   [   s:   ø€ ÷ ñ á—x‘xðñ !¡§¡Õ*ðñ 
�‰ñ	r   c                ó¶   € TpV P                  V4      pV P                  W4      pW1,           pTpV P                  V4      pV P                  V4      pW1,           pV# rH   )rk   rm   rl   rn   )r/   r4   r5   Úresiduals   &&& r   rF   ÚSiglipEncoderLayer.__call__[   s`   € ð
 !ˆØ×(Ñ(¨Ó7ˆØŸ™ }ÓEˆØ Õ0ˆà ˆØ×(Ñ(¨Ó7ˆØŸ™ Ó/ˆØ Õ0ˆØÐr   )rk   rl   rn   rm   rH   rI   rQ   s   @@r   rc   rc   S   s   ù‡ € ÷%ó %÷÷ ò r   rc   c                   óT   a a€ ] tR t^lt 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# )ÚSiglipEncoderc                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚSiglipEncoder.__annotate__m   s   ø€ ÷ 
ñ 
™|ñ 
r   c                ó”   <€ \         SV `  4        \        VP                  4       Uu. uF  p\	        V4      NK  	  upV n        R # u upi rH   )r   r    ÚrangeÚnum_hidden_layersrc   Úlayers)r/   r   r   r0   s   && €r   r    ÚSiglipEncoder.__init__m   s@   ø€ Ü‰ÑÔä05°f×6NÑ6NÔ0Oó
Ù0O¨1Ô˜vÖ&Ñ0Oñ
ˆŽùò 
s   §Ac                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# r3   r7   )r   r   s   "€r   r   rw   s   s:   ø€ ÷ ñ á—x‘xðñ !¡§¡Õ*ðñ 
�‰ñ	r   c                ó<   € V P                    F  pV! W4      pK  	  V# rH   ©r{   )r/   r4   r5   Úlayers   &&& r   rF   ÚSiglipEncoder.__call__s   s"   € ð
 —[”[ˆEÙ! -Ó@ŠMñ !àÐr   r   rH   rI   rQ   s   @@r   ru   ru   l   s   ù‡ € ÷
ó 
÷÷ ò r   ru   c                   ó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# )ÚSiglipVisionEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   Ú#SiglipVisionEmbeddings.__annotate__~   s   ø€ ÷ Qñ Q™|ñ Qr   c                óú  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  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# )T)Úin_channelsr   Úkernel_sizeÚstrider   N)r   r    r   r!   r"   Ú
image_sizeÚ
patch_sizer(   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patches_per_sideÚnum_patchesÚ	EmbeddingÚposition_embeddingr.   s   &&€r   r    ÚSiglipVisionEmbeddings.__init__~   s³   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?Øô 
ˆÔð %)§O¡O°t·±Õ$FˆÔ!Ø×4Ñ4°aÕ7ˆÔÜ"$§,¢,¨t×/?Ñ/?ÀÇÁÓ"PˆÖr   c                ó¢   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          RS[ P                  /# ©r   Úpixel_valuesÚpatch_attention_maskÚ	tgt_sizesr6   r7   )r   r   s   "€r   r   r…   ‘   sM   ø€ ÷ =ñ =á—h‘hð=ñ '¡r§x¡xÕ0ð=ñ ™BŸH™HÕ%ð	=ñ
 
�‰ñ=r   c           	     ó>  € VP                   ^ ,          pV P                  V4      p\        P                  ! V^^R7      pVP                   ^,          p\	        VP                   ^,          V P
                  ,          4      p\	        VP                   ^,          V P
                  ,          4      p	Vf*   \        P                  ! WHV	3\        P                  R7      pMVP                  ^8X  d
   VR,          p\        P                  ! ^V P                  ,          R^V P                  ,          4      p
\        P                  ! WG3\        P                  R7      p\        V4       EF}  pVe<   \        \	        W<^ 3,          4      ^4      p\        \	        W<^3,          4      ^4      pM„W,,          p\        \	        \        P                   ! VR	,          4      P#                  4       4      ^4      p\        \	        \        P                   ! V^ ,          4      P#                  4       4      ^4      p\        P$                  ! \        P                  ! V\        P&                  R7      V,          RR
R7      p\        P$                  ! \        P                  ! V\        P&                  R7      V,          RR
R7      p\        P                   ! VR,          V
R,          8¬  ^R7      p\        P                   ! VR,          V
R,          8¬  ^R7      pVR,          V P                  ,          VR,          ,           P)                  R4      p\        P*                  ! V\        P                  R7      p\        P*                  ! W,,          4      P)                  R4      RV p\        P,                  ! V4      ^ ,          p\/        \1        V4      \1        V4      4      pV^ 8”  g   EKq  VRV W¼VRV 3&   EK€  	  \        P*                  ! V\        P                  R7      pW`P3                  V4      ,           pV# )r   )Ú
start_axisÚend_axisN)Údtypeg      ð?g        )Úa_minÚa_max)Úaxis)ºNNNNr    )r    r   gé!çýÿï?)r    N)Nr    éÿÿÿÿ)r   rŽ   r8   ÚflattenÚintr‹   ÚonesÚbool_ÚndimÚaranger�   ÚnpÚzerosÚint32ry   ÚmaxÚsumÚitemÚclipÚfloat32r<   r9   ÚwhereÚminr	   r’   )r/   r–   r—   r˜   r@   Úpatch_embedsÚ
embeddingsrA   Úmax_nb_patches_hÚmax_nb_patches_wÚ
boundariesÚposition_idsÚ	batch_idxÚnb_patches_hÚnb_patches_wÚcur_maskÚfractional_hÚfractional_wÚbucket_hÚbucket_wÚpos_idsÚ	flat_maskÚvalid_indicesÚ	valid_lens   &&&&                    r   rF   ÚSiglipVisionEmbeddings.__call__‘   s  € ð "×'Ñ'¨Õ*ˆ
Ø×+Ñ+¨LÓ9ˆÜ—Z’Z ¸ÀQÔGˆ
à×"Ñ" 1Õ%ˆÜ˜|×1Ñ1°!Õ4¸¿¹ÕGÓHÐÜ˜|×1Ñ1°!Õ4¸¿¹ÕGÓHÐàÒ'Ü#%§7¢7ØÐ/?Ð@ÌÏÉô$Ñ ð "×&Ñ&¨!Ô+Ø#7¸
Õ#CÐ ä—Y’YØ�×)Ñ)Õ)¨3°°D×4MÑ4MÕ0Mó
ˆ
ô —x’x Ð 5¼R¿X¹XÔFˆä˜z×*ˆIØÒ$Ü"¤3 y¸A°Õ'>Ó#?ÀÓC�Ü"¤3 y¸A°Õ'>Ó#?ÀÓC‘à/Õ:�Ü"¤3¤r§v¢v¨h°t­nÓ'=×'BÑ'BÓ'DÓ#EÀqÓI�Ü"¤3¤r§v¢v¨h°q­kÓ':×'?Ñ'?Ó'AÓ#BÀAÓF�äŸ7š7Ü—	’	˜,¬b¯j©jÔ9¸LÕHØØ ôˆLô
 Ÿ7š7Ü—	’	˜,¬b¯j©jÔ9¸LÕHØØ ôˆLô
 —v’v˜l¨7Õ3°zÀ'Õ7JÑJÐQRÔSˆHÜ—v’v˜l¨7Õ3°zÀ'Õ7JÑJÐQRÔSˆHð ˜Õ! D×$=Ñ$=Õ=ÀÈÕ@QÕQß‰g�b‹kð ô —h’h˜w¬b¯h©hÔ7ˆGäŸšÐ!5Õ!@ÓA×IÑIÈ"ÓMÈhÈwÐWˆIÜŸHšH YÓ/°Õ2ˆMÜœC Ó.´°G³Ó=ˆIØ˜1�}ØELÈZÈiÐEX�¨°j°yÐ(AÐAÔBñ? +ôB —x’x ´B·H±HÔ=ˆØ×"9Ñ"9¸,Ó"GÕGˆ
ØÐr   )r   r"   rŠ   r�   r�   rŽ   r‹   r’   ©NNrI   rQ   s   @@r   rƒ   rƒ   }   s    ù‡ € ÷Qó Q÷&=÷ =ò =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[ /# r   r   )r   r   s   "€r   r   ÚVisionModel.__annotate__Ò   s   ø€ ÷ 

ñ 

™|ñ 

r   c                ó:  <€ \         SV `  4        VP                  V n        V P                  R9  d   \        RV P                   24      h\	        V4      V n        \        V4      V n        \        P                  ! VP                  VP                  R7      V n        R# )Úsiglip_vision_modelzUnsupported model type: rg   N)rË   ÚsiglipÚminicpmo)r   r    Ú
model_typer&   rƒ   r³   ru   Úencoderr(   ri   r!   rj   Úpost_layernormr.   s   &&€r   r    ÚVisionModel.__init__Ò   sz   ø€ Ü‰ÑÔØ ×+Ñ+ˆŒØ�?‰?Ð"OÔOÜÐ7¸¿¹Ð7HÐIÓJÐJä0°Ó8ˆŒÜ$ VÓ,ˆŒÜ ŸlšlØ×Ñ F×$9Ñ$9ô
ˆÖr   c                ó¢   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          RS[ P                  /# r•   r7   )r   r   s   "€r   r   rÉ   Þ   sM   ø€ ÷ ñ á—h‘hðñ '¡r§x¡xÕ0ðñ ™BŸH™HÕ%ð	ñ
 
�‰ñr   c                óè   € V P                  VVVR 7      pVP                  V P                   P                  P                  P                  4      pV P                  VRR7      pV P                  V4      pV# ))r–   r—   r˜   N)r4   r5   )r³   ÚastyperŽ   Úweightrœ   rÏ   rÐ   )r/   r–   r—   r˜   r4   s   &&&& r   rF   ÚVisionModel.__call__Þ   sv   € ð Ÿ™Ø%Ø!5Øð (ó 
ˆð
 &×,Ñ,Ø�O‰O×+Ñ+×2Ñ2×8Ñ8ó
ˆð Ÿ™°=ÐQU˜ÓVˆØ×+Ñ+¨MÓ:ˆØÐr   c                óÎ   € / pVP                  4        FN  w  r4R V9   d   K  VP                  R4      '       d&   \        V4      '       g   VP                  ^ ^^^4      pWBV&   KP  	  V# )r·   zpatch_embedding.weight)ÚitemsÚendswithr   r=   )r/   ÚweightsÚsanitized_weightsÚkeyÚvalues   &&   r   ÚsanitizeÚVisionModel.sanitizeð   sd   € ØÐØ!Ÿ-™-ž/‰JˆCØ Ô$ÙØ�|‰|Ð4×5Ò5Ü(¨×/Ò/Ø!ŸO™O¨A¨q°!°QÓ7�EØ%*˜cÓ"ñ *ð !Ð r   )r³   rÏ   rÎ   rÐ   rÅ   )
rJ   rK   rL   rM   r    rF   rÞ   rN   rO   rP   rQ   s   @@r   rÇ   rÇ   Ñ   s#   ù‡ € ÷

ó 

÷ò ÷$	!ò 	!r   rÇ   )Útypingr   Úmlx.coreÚcorer8   Úmlx.nnr(   Únumpyr¨   r   r   r   ÚModuler   rS   rc   ru   rƒ   rÇ   © r   r   Ú<module>rç      s~   ðÝ å Ý Û å  òLô0*�b—i‘iô 0*ôf�—	‘	ô ô˜Ÿ™ô ô2�B—I‘Iô ô"Q˜RŸY™Yô Qôh(!�"—)‘)ö (!r   