+
    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                 ó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   &     Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/idefics2/vision.pyÚcheck_array_shaper   
   s<   € Ø�I‰I€Eô ˆ5ƒz�Q„Ùà#Ñ€L�bð 	Ô Ô!3¸"¼(Ùáó    c                   óX   a a€ ] tR t^t oRV3R lV 3R l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[ RS[ RS[S[ ,          RS[S[ ,          RS[S[ ,          RS[S[ ,          RS[S[ ,          /# )é   ÚdimsÚ	num_headsÚquery_input_dimsÚkey_input_dimsÚvalue_input_dimsÚ
value_dimsÚvalue_output_dims)Úintr   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚAttention.__annotate__   sn   ø€ ÷ Lñ LáðLñ ðLñ #¡3�-ð	Lñ
 !¡�ðLñ #¡3�-ðLñ ™S•MðLñ $¡C�=ñLr   c                óú  <€ \         S	V `  4        W,          ^ 8w  d   \        RV RV R24      hT;'       g    TpT;'       g    TpT;'       g    TpT;'       g    TpT;'       g    TpW n        W,          pVR,          V n        \
        P                  ! W1RR7      V n        \
        P                  ! WARR7      V n        \
        P                  ! WVRR7      V n	        \
        P                  ! WgRR7      V n
        R# )r   zIThe input feature dimensions should be divisible by the number of heads (z % z) != 0T)ÚbiasNg      à¿)ÚsuperÚ__init__Ú
ValueErrorr   ÚscaleÚnnÚLinearÚq_projÚk_projÚv_projÚout_proj)
Úselfr   r   r   r   r   r   r   Úhead_dimÚ	__class__s
   &&&&&&&& €r   r%   ÚAttention.__init__   sç   ø€ ô 	‰ÑÔàÕ Ô"Üð$Ø$( 6¨¨Y¨K°vð?óð ð
 ,×3Ð3¨tÐØ'×/Ð/¨4ˆØ+×=Ð=¨~ÐØ×'Ð' 4ˆ
Ø-×5Ð5°Ðà"ŒØÕ$ˆØ˜t•^ˆŒ
ä—i’iÐ 0¸TÔBˆŒÜ—i’i ¸4Ô@ˆŒÜ—i’iÐ 0À4ÔHˆŒÜŸ	š	 *ÀdÔKˆŽr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   Úx©ÚmxÚarray)r   r   s   "€r   r    r!   <   s   ø€ ÷ %ñ %™"Ÿ(™(ñ %r   c                ó†  € VP                   w  r4pV P                  V4      pV P                  V4      pV P                  V4      pV P                  p	VP                  W4V	R4      P                  ^ ^^^4      pVP                  W4V	R4      P                  ^ ^^^4      pVP                  W4V	R4      P                  ^ ^^^4      pVe!   VRRVP                   R,          R1R3,          p\        P                  P                  WgW€P                  VR7      p
V
P                  ^ ^^^4      P                  W4R4      p
V P                  V
4      # )é   NºNNN)r'   Úmaskéÿÿÿÿéþÿÿÿ)r   r*   r+   r,   r   ÚreshapeÚ	transposer5   ÚfastÚscaled_dot_product_attentionr'   r-   )r.   r3   r:   ÚBÚLr   ÚqueriesÚkeysÚvaluesr   Úoutputs   &&&        r   Ú__call__ÚAttention.__call__<   s$  € Ø—'‘'‰ˆˆaØ—+‘+˜a“.ˆØ�{‰{˜1‹~ˆØ—‘˜Q“ˆà—N‘Nˆ	à—/‘/ !¨	°2Ó6×@Ñ@ÀÀAÀqÈ!ÓLˆØ�|‰|˜A )¨RÓ0×:Ñ:¸1¸aÀÀAÓFˆØ—‘  i°Ó4×>Ñ>¸qÀ!ÀQÈÓJˆØÒØ˜˜1˜dŸj™j¨�nÑ.°Ð1Õ2ˆDä—‘×5Ñ5Ø˜6¯©¸$ð 6ó 
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆØ�}‰}˜VÓ$Ð$r   )r+   r   r-   r*   r'   r,   )NNNNN©N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   rG   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r0   r   s   @@r   r   r      s!   ù‡ € ÷Lõ L÷B%÷ %ò %r   r   c                   óP   a a€ ] tR t^Qt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚMLPc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfigr   )r   r   s   "€r   r    ÚMLP.__annotate__R   s   ø€ ÷ Kñ K™|ñ Kr   c                ó  <€ \         SV `  4        \        P                  ! R R7      V n        \        P
                  ! VP                  VP                  4      V n        \        P
                  ! VP                  VP                  4      V n	        R# )r?   )ÚapproxN)
r$   r%   r(   ÚGELUÚactivation_fnr)   Úhidden_sizeÚintermediate_sizeÚfc1Úfc2©r.   rW   r0   s   &&€r   r%   ÚMLP.__init__R   s[   ø€ Ü‰ÑÔÜŸWšW¨FÔ3ˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÓJˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÓJˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   r3   Úreturnr4   )r   r   s   "€r   r    rX   X   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                óh   € V P                  V P                  V4      4      pV P                  V4      pV# rI   ©r\   r_   r`   )r.   r3   s   &&r   rG   ÚMLP.__call__X   s,   € Ø×Ñ˜tŸx™x¨›{Ó+ˆØ�H‰H�Q‹KˆØˆr   rf   rJ   rR   s   @@r   rT   rT   Q   s    ù‡ € ÷Kó K÷÷ ð r   rT   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# )ÚEncoderLayerc                ó    <€ V ^8„  d   QhRS[ /# rV   r   )r   r   s   "€r   r    ÚEncoderLayer.__annotate___   s   ø€ ÷ Sñ S™|ñ Sr   c                ót  <€ \         SV `  4        VP                  V n        \	        VP                  VP
                  4      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# ))ÚepsN)r$   r%   r]   Ú	embed_dimr   Únum_attention_headsÚ	self_attnr(   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1rT   ÚmlpÚlayer_norm2ra   s   &&€r   r%   ÚEncoderLayer.__init___   sz   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ" 6×#5Ñ#5°v×7QÑ7QÓRˆŒÜŸ<š<¨¯©¸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   r3   r:   rd   ©r5   r6   r   )r   r   s   "€r   r    rk   g   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,           # rI   )rs   rp   ru   rt   )r.   r3   r:   Úys   &&& r   rG   ÚEncoderLayer.__call__g   sK   € Ø×Ñ˜QÓˆØ�N‰N˜1Ó#ˆØ�EˆØ×Ñ˜QÓˆØ�H‰H�Q‹KˆØ�uˆr   )rn   rs   ru   rt   rp   rI   rJ   rR   s   @@r   ri   ri   ^   s    ù‡ € ÷Só S÷÷ ò r   ri   c                   óT   a a€ ] tR t^pt 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# )ÚEncoderc                ó    <€ V ^8„  d   QhRS[ /# rV   r   )r   r   s   "€r   r    ÚEncoder.__annotate__q   s   ø€ ÷ Vñ V™|ñ V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 rI   )r$   r%   ÚrangeÚnum_hidden_layersri   Úlayers)r.   rW   r   r0   s   && €r   r%   ÚEncoder.__init__q   s9   ø€ Ü‰ÑÔÜ5:¸6×;SÑ;SÔ5TÓUÑ5T°”| FÖ+Ñ5TÑUˆŽùÒUs   §Ac                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[ P                  ,          RS[ P                  /# )r   r3   Úoutput_hidden_statesr:   rd   ©r5   r6   r   Úbool)r   r   s   "€r   r    r€   u   sH   ø€ ÷ #ñ #á�8‰8ð#ñ '¡t�nð#ñ ‘r—x‘xÕ ð	#ñ
 
�‰ñ#r   c                ó„   € V'       d   V3MR pTpV P                    F  pV! WR7      pV'       d
   WA3,           pTpK!  	  WT3# )N©r:   ©r„   )r.   r3   r‡   r:   Úencoder_statesÚhÚls   &&&&   r   rG   ÚEncoder.__call__u   sH   € ÷ "6˜!™¸4ˆØˆØ—”ˆAÙ�!”ˆAß#Ø!/°$Õ!6�àŠAñ ð Ð"Ð"r   rŒ   ©NNrJ   rR   s   @@r   r~   r~   p   s    ù‡ € ÷Vó V÷#÷ #ò #r   r~   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# )ÚVisionEmbeddingsc                ó    <€ V ^8„  d   QhRS[ /# rV   r   )r   r   s   "€r   r    ÚVisionEmbeddings.__annotate__ˆ   s   ø€ ÷ Sñ S™|ñ S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 7      V n
        V P
                  V P                  ,          V n        V P                  ^,          V n        \        P                  ! V P                  V P                  4      V n        R# ))Úin_channelsr   Úkernel_sizeÚstrideN)r$   r%   rW   r]   rn   Ú
image_sizeÚ
patch_sizer(   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingra   s   &&€r   r%   ÚVisionEmbeddings.__init__ˆ   s°   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?ô	 
ˆÔð  Ÿ?™?¨d¯o©oÕ=ˆÔØ!×-Ñ-¨qÕ0ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÖr   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[ P                  /# rx   ry   )r   r   s   "€r   r    r•   š   s3   ø€ ÷ #ñ #™"Ÿ(™(ð #©(±2·8±8Õ*<ð #ÉÏÉñ #r   c                óú  € VP                   w  r4rVV P                  V4      p\        P                  ! V^^R7      pW@P                  ,          WPP                  ,          r˜\
        P                  ! ^V P                  ,          RV P                  RR7      p
\
        P                  ! W8V	,          3\        R7      p\        V4       EF  w  rÍ\
        P                  ! V4      pVR,          P                  4       pVR	,          P                  4       p\
        P                  ! ^ ^VRR7      p\
        P                  ! ^ ^VRR7      p\
        P                  ! VV
RR7      ^,
          p\
        P                  ! VV
RR7      ^,
          pVR
,          V P                  ,          V,           P                  4       pVW¼,          VP                  R4      &   EK
  	  TpVV P                  \        P                  ! V4      4      ,          pV# )r8   )Ú
start_axisÚend_axisg      ð?F)Úendpoint©ÚdtypeT)Úright)r9   r   )r   r9   )r9   Nr;   )r   rž   r5   Úflattenr›   ÚnpÚlinspacerŸ   Úzerosr   Ú	enumerater6   ÚsumÚdigitizer=   r¢   )r.   r3   r:   rA   ÚHÚWÚCÚpatch_embeddingsÚmax_nb_patches_hÚmax_nb_patches_wÚ
boundariesÚposition_idsÚ	batch_idxÚp_attn_maskÚnb_patches_hÚnb_patches_wÚfractional_coords_hÚfractional_coords_wÚbucket_coords_hÚbucket_coords_wÚpos_idsÚ
embeddingss   &&&                   r   rG   ÚVisionEmbeddings.__call__š   s©  € Ø—W‘W‰
ˆˆaØ×/Ñ/°Ó2ÐÜŸ:š:Ð&6À1ÈqÔQÐà—‘Õ Ø—‘Õ ð +ô —[’[Ø�× Ñ Õ  # t×'7Ñ'7À%ô
ˆ
ô —x’x Ð7GÕ$GÐ HÔPSÔTˆä&/°§oÑ"ˆIÜŸ(š( ;Ó/ˆKØ& tÕ,×0Ñ0Ó2ˆLØ& tÕ,×0Ñ0Ó2ˆLä"$§+¢+¨a°°LÈ5Ô"QÐÜ"$§+¢+¨a°°LÈ5Ô"QÐô —’Ð/°À4ÔHÈ1ÕLð ô —’Ð/°À4ÔHÈ1ÕLð ð
   Õ(¨4×+;Ñ+;Õ;¸oÕMß‰g‹ið ð @GˆLÕ# K×$7Ñ$7¸Ó$;Ô<ñ% '6ð( &ˆ
Ø�d×-Ñ-¬b¯hªh°|Ó.DÓEÕEˆ
ØÐr   )rW   rn   rš   rŸ   r    rž   r›   r¢   rI   rJ   rR   s   @@r   r“   r“   ‡   s    ù‡ € ÷Só S÷$#÷ #ò #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[ /# rV   r   )r   r   s   "€r   r    ÚVisionModel.__annotate__Á   s   ø€ ÷ ?ñ ?™|ñ ?r   c                ó.  <€ \         SV `  4        Wn        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                  4      V n        R# )Úidefics2zUnsupported model type: N)rË   Úidefics2_vision)r$   r%   rW   Ú
model_typer&   r“   rÄ   r~   Úencoderr(   rq   r]   Úpost_layernormra   s   &&€r   r%   ÚVisionModel.__init__Á   ss   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒØ�?‰?Ð"AÔAÜÐ7¸¿¹Ð7HÐIÓJÐJÜ*¨6Ó2ˆŒÜ˜v“ˆŒÜ Ÿlšl¨6×+=Ñ+=Ó>ˆÖr   c                óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[,          RS[ P                  /# )r   r3   Úpatch_attention_maskr‡   rd   rˆ   )r   r   s   "€r   r    rÉ   Ë   sH   ø€ ÷ 5ñ 5á�8‰8ð5ñ '¡r§x¡xÕ0ð5ñ '¡t�nð	5ñ
 
�‰ñ5r   c                óL  € VP                   w  rErgVfL   V P                  P                  p\        P                  ! VWX,          Wh,          3\        P
                  R7      pV P                  WR7      pV P                  WR7      p	V P                  V	^ ,          4      p
W¡V	R,          3# )Nr©   r‹   )r3   r‡   r;   )	r   rW   r›   r5   ÚonesÚbool_rÄ   rÎ   rÏ   )r.   r3   rÒ   r‡   rA   rB   ÚDrµ   r›   Úencoder_outputsÚpooler_outputs   &&&&       r   rG   ÚVisionModel.__call__Ë   s—   € ð —W‘W‰
ˆˆaØÒ'ØŸ™×/Ñ/ˆJÜ#%§7¢7àØ•OØ•Oðô
 —h‘hô$Ð ð �O‰O˜AˆOÓ9ˆØŸ,™,¨˜,ÓVˆà×+Ñ+¨O¸AÕ,>Ó?ˆà °Õ!4Ð4Ð4r   c                ó°   € / pVP                  4        F?  w  r4R V9   d0   \        V4      '       d   WBV&   K#  VP                  ^ ^^^4      W#&   K;  WBV&   KA  	  V# )zpatch_embedding.weight)Úitemsr   r>   )r.   ÚweightsÚsanitized_weightsÚkÚvs   &&   r   ÚsanitizeÚVisionModel.sanitizeå   s_   € ØÐØ—M‘M–O‰DˆAØ'¨1Ô,ô
 % Q×'Ò'Ø+, aÓ(à+,¯;©;°q¸!¸QÀÓ+BÐ%Ó(à'( !Ó$ñ $ð !Ð r   )rW   rÄ   rÎ   rÍ   rÏ   r‘   )
rK   rL   rM   rN   r%   rG   rà   rO   rP   rQ   rR   s   @@r   rÇ   rÇ   À   s#   ù‡ € ÷?ó ?÷5ò 5÷4!ò !r   rÇ   )Útypingr   Úmlx.coreÚcorer5   Úmlx.nnr(   Únumpyr­   rW   r   r   ÚModuler   rT   ri   r~   r“   rÇ   © r   r   Ú<module>ré      s{   ðÝ å Ý Û å  òô 4%�—	‘	ô 4%ôn
ˆ"�)‰)ô 
ô�2—9‘9ô ô$#ˆb�i‰iô #ô.6�r—y‘yô 6ôr4!�"—)‘)ö 4!r   