+
    UV-jm%  ã                   ó8  € ^ RI Ht ^ RIH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# )é    )Ú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/idefics3/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[S[ ,          RS[S[ ,          RS[S[ ,          RS[S[ ,          RS[S[ ,          RS[/# )	é   ÚdimsÚ	num_headsÚquery_input_dimsÚkey_input_dimsÚvalue_input_dimsÚ
value_dimsÚvalue_output_dimsÚbias)Úintr   Úbool)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚAttention.__annotate__   sy   ø€ ÷  Lñ  Láð Lñ ð Lñ #¡3�-ð	 Lñ
 !¡�ð Lñ #¡3�-ð Lñ ™S•Mð Lñ $¡C�=ð Lñ ñ 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                  ! W1VR7      V n        \
        P                  ! WAVR7      V n        \
        P                  ! WVVR7      V n	        \
        P                  ! WgVR7      V n
        R# )r   zIThe input feature dimensions should be divisible by the number of heads (z % z) != 0©r   Ng      à¿)ÚsuperÚ__init__Ú
ValueErrorr   ÚscaleÚnnÚLinearÚq_projÚk_projÚv_projÚout_proj)Úselfr   r   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                ó\  € V P                  V4      pV P                  V4      pV P                  V4      pV P                  pVP                  w  rxp	VP                  w  r«p
VP                  WxV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                  W4WPP                  VR7      pVP                  ^ ^^^4      P                  WxR4      pV P                  V4      # )é   )r)   Úmaskéÿÿÿÿ)r,   r-   r.   r   r   ÚreshapeÚ	transposeÚmxÚfastÚscaled_dot_product_attentionr)   r/   )r0   Úxr6   ÚqueriesÚkeysÚvaluesr   ÚBÚLÚDr   ÚSÚoutputs   &&&          r   Ú__call__ÚAttention.__call__<   s  € Ø—+‘+˜a“.ˆØ�{‰{˜1‹~ˆØ—‘˜Q“ˆà—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,   r)   r.   )NNNNNT©N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r'   rF   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r2   r!   s   @@r   r   r      s   ù‡ € ÷ Lõ  L÷D%ô %r   r   c                   óP   a a€ ] tR t^Ot 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__P   s   ø€ ÷ Vñ V™|ñ Vr   c                ó$  <€ \         SV `  4        \        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# )Úprecise)ÚapproxTr%   N)
r&   r'   r*   ÚGELUÚactivation_fnr+   Úhidden_sizeÚintermediate_sizeÚfc1Úfc2©r0   rV   r2   s   &&€r   r'   ÚMLP.__init__P   sa   ø€ Ü‰ÑÔÜŸWšW¨IÔ6ˆÔÜ—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©r:   Úarray)r    r!   s   "€r   r"   rW   V   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# rH   )r_   r\   r`   )r0   r=   s   &&r   rF   ÚMLP.__call__V   s1   € Ø�H‰H�Q‹KˆØ×Ñ˜qÓ!ˆØ�H‰H�Q‹KˆØˆr   )r\   r_   r`   rI   rQ   s   @@r   rS   rS   O   s    ù‡ € ÷Vó V÷÷ ð r   rS   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[ /# rU   r   )r    r!   s   "€r   r"   ÚEncoderLayer.__annotate__^   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# )Tr%   )ÚepsN)r&   r'   r]   Ú	embed_dimr   Únum_attention_headsÚ	self_attnr*   Ú	LayerNormÚlayer_norm_epsÚlayer_norm1rS   ÚmlpÚlayer_norm2ra   s   &&€r   r'   ÚEncoderLayer.__init__^   s�   ø€ Ü‰ÑÔØ×+Ñ+ˆŒÜ"Ø×Ñ × :Ñ :Àô
ˆŒô Ÿ<š<¨¯©¸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=   r6   rd   )r:   rf   r   )r    r!   s   "€r   r"   rl   h   s3   ø€ ÷ ñ ™"Ÿ(™(ð ©(±2·8±8Õ*<ð ÉÏÉñ r   c                ó¤   € V P                  V P                  V4      V4      pW,           pV P                  V P                  V4      4      pWC,           # rH   )rq   rt   ru   rv   )r0   r=   r6   ÚrÚhs   &&&  r   rF   ÚEncoderLayer.__call__h   sD   € Ø�N‰N˜4×+Ñ+¨AÓ.°Ó5ˆØ�EˆØ�H‰H�T×%Ñ% aÓ(Ó)ˆØ�uˆr   )ro   rt   rv   ru   rq   rH   rI   rQ   s   @@r   rj   rj   ]   s    ù‡ € ÷Só S÷÷ ò r   rj   c                   óT   a a€ ] tR t^ot 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[ /# rU   r   )r    r!   s   "€r   r"   ÚEncoder.__annotate__p   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 rH   )r&   r'   ÚrangeÚnum_hidden_layersrj   Úlayers)r0   rV   r   r2   s   && €r   r'   ÚEncoder.__init__p   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   r=   Úoutput_hidden_statesr6   rd   ©r:   rf   r   r   )r    r!   s   "€r   r"   r€   t   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)r6   ©r„   )r0   r=   r‡   r6   Úencoder_statesr{   Úls   &&&&   r   rF   ÚEncoder.__call__t   sH   € ÷ "6˜!™¸4ˆØˆØ—”ˆAÙ�!”ˆAß#Ø!/°$Õ!6�àŠAñ ð Ð"Ð"r   rŠ   ©NNrI   rQ   s   @@r   r~   r~   o   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[ /# rU   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        V P                  V n        \        P                  ! V P                  V P                  4      V n        R# ))Úin_channelsr   Úkernel_sizeÚstrideN)r&   r'   rV   r]   ro   Ú
image_sizeÚ
patch_sizer*   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patches_per_sideÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingra   s   &&€r   r'   ÚVisionEmbeddings.__init__‡   s¾   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?ô	 
ˆÔð %)§O¡O°t·±Õ$FˆÔ!Ø×4Ñ4°aÕ7ˆÔØ!×-Ñ-ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÖr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   r=   Úpatch_attention_maskrd   re   )r    r!   s   "€r   r"   r’   š   s.   ø€ ÷ <ñ <™"Ÿ(™(ð <¹"¿(¹(ð <ÉbÏhÉhñ <r   c                óz  € VP                   w  r4rVV P                  V4      p\        P                  ! V^^R7      pVP                   ^,          p	Vf0   \        P                  ! \        P
                  ! V	4      V^34      p
EM”\        P
                  ! ^V P                  ,          R^V P                  ,          4      pVP                  ^8X  d.   VP                  R	4      P                  VR	4      RRV	13,          pMVP                  VR	4      RRV	13,          p\        P                  ! VR
,          P                  ^R7      ^4      p\        P                  ! VR,          P                  ^R7      ^4      p\        P                  ! W93\        P                  R7      p
\        V4       EFc  p\        Wß,          4      p\        Wï,          4      p\        P
                  ! V\        P                   R7      V,          p\        P
                  ! V\        P                   R7      V,          p\        P"                  ! VRRR7      p\        P"                  ! 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\%        VP                   ^ ,          V	4      pVRV W¯RV13&   EKf  	  VR,          pV P'                  V
4      pVe
   VX,          pVV,           pV# )r5   )Ú
start_axisÚend_axisNg      ð?ºNNN)Úaxis)Údtypeg        )Úa_minÚa_maxr7   )r§   r§   r   )r§   r   r§   gé!çýÿï?)r§   N)Nr§   )r§   r§   N)r   r›   r:   ÚflattenÚtileÚarangerœ   ÚndimÚsqueezer8   ÚmaximumÚsumÚzerosÚint32r‚   r   Úfloat32ÚclipÚminr    )r0   r=   r£   Ú
batch_sizeÚmax_im_hÚmax_im_wr   Úpatch_embedsÚ
embeddingsÚseq_lenÚposition_idsÚ
boundariesÚ	flat_maskÚnb_patches_hÚnb_patches_wÚ	batch_idxÚnb_hÚnb_wÚfractional_hÚfractional_wÚbucket_hÚbucket_wÚpos_idsÚ	valid_lenÚmask_expandedÚpos_embeddingss   &&&                       r   rF   ÚVisionEmbeddings.__call__š   s¯  € Ø,-¯G©GÑ)ˆ
˜hØ×+Ñ+¨AÓ.ˆÜ—Z’Z ¸ÀQÔGˆ
à×"Ñ" 1Õ%ˆàÒ'ÜŸ7š7¤2§9¢9¨WÓ#5¸
ÀA°ÓGŠLäŸšØ�D×-Ñ-Õ-¨s°A¸×8QÑ8QÕ4QóˆJð
 $×(Ñ(¨AÔ-Ø0×8Ñ8¸Ó<×DÑDÀZÐQSÓTØ�x˜�x�Kõ‘	ð 1×8Ñ8¸ÀRÓHÈÈHÈWÈHÈÕU�	ô Ÿ:š:Ð&:¸7Õ&C×&GÑ&GÈQÐ&GÓ&OÐQRÓSˆLÜŸ:š:Ð&:¸7Õ&C×&GÑ&GÈQÐ&GÓ&OÐQRÓSˆLäŸ8š8 ZÐ$9ÄÇÁÔJˆLä" :×.�	Ü˜<Õ2Ó3�Ü˜<Õ2Ó3�ô  "Ÿyšy¨´R·Z±ZÔ@À4ÕG�Ü!Ÿyšy¨´R·Z±ZÔ@À4ÕG�Ü!Ÿwšw |¸3ÀjÔQ�Ü!Ÿwšw |¸3ÀjÔQ�ô Ÿ6š6 ,¨wÕ"7¸:ÀgÕ;NÑ"NÐUVÔW�ÜŸ6š6 ,¨wÕ"7¸:ÀgÕ;NÑ"NÐUVÔW�ð ˜WÕ%¨×(AÑ(AÕAÀHÈWÕDUÕUß‘'˜"“+ð ô   §¡¨aÕ 0°'Ó:�	Ø6=¸j¸yÐ6I�¨
¨¨
Ð2Ô3ñ) /ð. & jÕ1ˆMà×0Ñ0°Ó>ˆð  Ò+Ø+¨mÕ;ˆNà .Õ0ˆ
ØÐr   )	rV   ro   r—   r�   rœ   rž   r›   r˜   r    rH   rI   rQ   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[ /# rU   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                  4      V n        R# )Úsiglip_vision_modelzUnsupported model type: N)rÔ   Úidefics3Úidefics3_visionÚsmolvlm_vision)r&   r'   Ú
model_typer(   r�   r¼   r~   Úencoderr*   rr   r]   Úpost_layernormra   s   &&€r   r'   ÚVisionModel.__init__Ú   st   ø€ Ü‰ÑÔØ ×+Ñ+ˆŒØ�?‰?ð #
ô 
ô Ð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   r=   r£   r‡   rd   rˆ   )r    r!   s   "€r   r"   rÒ   é   sH   ø€ ÷ 5ñ 5á�8‰8ð5ñ '¡r§x¡xÕ0ð5ñ '¡t�nð	5ñ
 
�‰ñ5r   c                ó  € V P                  W4      pVP                  V P                   P                  P                  P                  4      pV P                  WR R7      pV P                  V^ ,          4      pWQVR,          3# )N)r=   r‡   r6   r7   )r¼   Úastyper›   Úweightr©   rÙ   rÚ   )r0   r=   r£   r‡   Úencoder_outputsÚpooler_outputs   &&&&  r   rF   ÚVisionModel.__call__é   su   € ð �O‰O˜AÓ4ˆØ�H‰H�T—_‘_×4Ñ4×;Ñ;×AÑAÓBˆØŸ,™,ØÀð 'ó 
ˆð ×+Ñ+¨O¸AÕ,>Ó?ˆØ °Õ!4Ð4Ð4r   c                óÂ   € / pVP                  4        FH  w  r4R V9   d   K  RV9   d0   \        V4      '       d   WBV&   K,  VP                  ^ ^^^4      W#&   KD  WBV&   KJ  	  V# )r¾   zpatch_embedding.weight)Úitemsr   r9   )r0   ÚweightsÚsanitized_weightsÚkÚvs   &&   r   ÚsanitizeÚVisionModel.sanitize÷   sj   € ØÐØ—M‘M–O‰DˆAØ Ô"áØ)¨QÔ.ô
 % Q×'Ò'Ø+, aÓ(à+,¯;©;°q¸!¸QÀÓ+BÐ%Ó(à'( !Ó$ñ $ð  !Ð r   )r¼   rÙ   rØ   rÚ   rŽ   )
rJ   rK   rL   rM   r'   rF   ré   rN   rO   rP   rQ   s   @@r   rÐ   rÐ   Ù   s#   ù‡ € ÷?ó ?÷5ò 5÷!ò !r   rÐ   )Útypingr   Úmlx.coreÚcorer:   Úmlx.nnr*   rV   r   r   ÚModuler   rS   rj   r~   r�   rÐ   © r   r   Ú<module>rñ      sz   ðÝ å Ý å  òô 3%�—	‘	ô 3%ôlˆ"�)‰)ô ô�2—9‘9ô ô$#ˆb�i‰iô #ô.P�r—y‘yô Pôf0!�"—)‘)ö 0!r   