+
    UV-jé  ã                   ó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 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   &     Úm/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/gemma3/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^Pt 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__Q   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__Q   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   W   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__W   s1   € Ø�H‰H�Q‹KˆØ×Ñ˜qÓ!ˆØ�H‰H�Q‹KˆØˆr   )r\   r_   r`   rI   rQ   s   @@r   rS   rS   P   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   re   )r:   rg   r   )r    r!   s   "€r   r"   rm   i   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   )rr   ru   rv   rw   )r0   r=   r6   ÚrÚhs   &&&  r   rF   ÚEncoderLayer.__call__i   sD   € Ø�N‰N˜4×+Ñ+¨AÓ.°Ó5ˆØ�EˆØ�H‰H�T×%Ñ% aÓ(Ó)ˆØ�uˆr   )rp   ru   rw   rv   rr   rH   rI   rQ   s   @@r   rk   rk   ^   s    ù‡ € ÷Só S÷÷ ò r   rk   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[ /# rU   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 rH   )r&   r'   ÚrangeÚnum_hidden_layersrk   Úlayers)r0   rV   r   r2   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   r=   Úoutput_hidden_statesr6   re   ©r:   rg   r   r   )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)r6   ©r…   )r0   r=   rˆ   r6   Úencoder_statesr|   Úls   &&&&   r   rF   ÚEncoder.__call__u   sH   € ÷ "6˜!™¸4ˆØˆØ—”ˆAÙ�!”ˆAß#Ø!/°$Õ!6�àŠAñ ð Ð"Ð"r   r‹   )NNrI   rQ   s   @@r   r   r   p   s    ù‡ € ÷Vó V÷#÷ #ò #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# )Ú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        \        P                  ! V P                  V P                  4      V n        R# ))Úin_channelsr   Úkernel_sizeÚstrideN)r&   r'   rV   r]   rp   Ú
image_sizeÚ
patch_sizer*   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embeddingra   s   &&€r   r'   ÚVisionEmbeddings.__init__ˆ   s°   ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?ô	 
ˆÔð !ŸO™O¨t¯©Õ>À1ÕDˆÔØ!×-Ñ-ˆÔÜ"$§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rd   rf   )r    r!   s   "€r   r"   r’   š   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                ó  € V P                  V4      p\        P                  ! V^^R7      p\        P                  ! \        P
                  ! V P                  4      R,          4      pTpW@P                  V4      ,          pV# )r5   )Ú
start_axisÚend_axis)N:NNN)r›   r:   Úflattenrg   ÚnpÚaranger�   rŸ   )r0   r=   Úpatch_embeddingsÚposition_idsÚ
embeddingss   &&   r   rF   ÚVisionEmbeddings.__call__š   sg   € Ø×/Ñ/°Ó2ÐÜŸ:š:Ð&6À1ÈqÔQÐÜ—x’x¤§	¢	¨$×*<Ñ*<Ó =¸gÕ FÓGˆØ%ˆ
Ø×-Ñ-¨lÓ;Õ;ˆ
ØÐr   )rV   rp   r—   rœ   r�   r›   r˜   rŸ   rI   rQ   s   @@r   r�   r�   ‡   s    ù‡ € ÷Só S÷$÷ ð 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# )ÚSigLipVisionModelc                ó    <€ V ^8„  d   QhRS[ /# rU   r   )r    r!   s   "€r   r"   ÚSigLipVisionModel.__annotate__¤   s   ø€ ÷ ?ñ ?™|ñ ?r   c                ó®   <€ \         SV `  4        \        V4      V n        \	        V4      V n        \        P                  ! VP                  4      V n	        R # rH   )
r&   r'   r�   rª   r   Úencoderr*   rs   r]   Úpost_layernormra   s   &&€r   r'   ÚSigLipVisionModel.__init__¤   s<   ø€ Ü‰ÑÔÜ*¨6Ó2ˆŒÜ˜v“ˆŒÜ Ÿlšl¨6×+=Ñ+=Ó>ˆÖr   c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[ P                  /# ©r   r=   rˆ   re   r‰   )r    r!   s   "€r   r"   r¯   ª   s5   ø€ ÷ 5ñ 5á�8‰8ð5ñ '¡t�nð5ñ 
�‰ñ	5r   c                ó�   € V P                  V4      pV P                  WR R7      pV P                  V^ ,          4      pWAVR,          3# )N)r=   rˆ   r6   r7   ©rª   r±   r²   )r0   r=   rˆ   Úencoder_outputsÚpooler_outputs   &&&  r   rF   ÚSigLipVisionModel.__call__ª   sQ   € ð
 �O‰O˜AÓˆàŸ,™,ØÀð 'ó 
ˆð ×+Ñ+¨O¸AÕ,>Ó?ˆà °Õ!4Ð4Ð4r   r·   rH   rI   rQ   s   @@r   r­   r­   £   s   ù‡ € ÷?ó ?÷5÷ 5ò 5r   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   ø€ ÷ 6ñ 6™|ñ 6r   c                ó¸   <€ \         SV `  4        VP                  V n        V P                  R9  d   \        RV P                   24      h\	        V4      V n        R# )Úsiglip_vision_modelzUnsupported model type: N)rÀ   Úgemma3Úgemma3_vision)r&   r'   Ú
model_typer(   r­   Úvision_modelra   s   &&€r   r'   ÚVisionModel.__init__»   sM   ø€ Ü‰ÑÔØ ×+Ñ+ˆŒØ�?‰?Ð"TÔTÜÐ7¸¿¹Ð7HÐIÓJÐJä-¨fÓ5ˆÖr   c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[ P                  /# rµ   r‰   )r    r!   s   "€r   r"   r¾   Ã   s1   ø€ ÷ :ñ :Ù—‘ð:Ù19¹$µð:á	�‰ñ:r   c                ó$   € V P                  W4      # rH   )rÄ   )r0   r=   rˆ   s   &&&r   rF   ÚVisionModel.__call__Ã   s   € ð × Ñ  Ó9Ð9r   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   r9   )r0   ÚweightsÚsanitized_weightsÚkÚvs   &&   r   ÚsanitizeÚVisionModel.sanitizeÈ   s_   € ØÐØ—M‘M–O‰DˆAØ'¨1Ô,ô
 % Q×'Ò'Ø+, aÓ(à+,¯;©;°q¸!¸QÀÓ+BÐ%Ó(à'( !Ó$ñ $ð !Ð r   )rÃ   rÄ   rH   )
rJ   rK   rL   rM   r'   rF   rÏ   rN   rO   rP   rQ   s   @@r   r¼   r¼   º   s#   ù‡ € ÷6ó 6÷:ò :÷
!ò !r   r¼   )Útypingr   Úmlx.coreÚcorer:   Úmlx.nnr*   Únumpyr¦   rV   r   r   ÚModuler   rS   rk   r   r�   r­   r¼   © r   r   Ú<module>rØ      sŠ   ðÝ å Ý Û å  òô 3%�—	‘	ô 3%ôlˆ"�)‰)ô ô�2—9‘9ô ô$#ˆb�i‰iô #ô.�r—y‘yô ô85˜Ÿ	™	ô 5ô.!�"—)‘)ö !r   