+
    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   &     Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/llava/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T;V n        p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  rgpVP                  w  ršp	VP                  WgVR4      P                  ^ ^^^4      pVP                  WjVR4      P                  ^ ^^^4      pVP                  WjVR4      P                  ^ ^^^4      p\        P                  P                  WW0P                  VR7      pVP                  ^ ^^^4      P                  WgR4      pV P                  V4      # )é   )r)   Úmaskéÿÿÿÿ)r,   r-   r.   r   r   ÚreshapeÚ	transposeÚmxÚfastÚscaled_dot_product_attentionr)   r/   )r0   ÚqueriesÚkeysÚvaluesr6   r   ÚBÚLÚDr   ÚSÚoutputs   &&&&&       r   Ú__call__ÚAttention.__call__=   s  € Ø—+‘+˜gÓ&ˆØ�{‰{˜4Ó ˆØ—‘˜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,   r)   r.   )NNNNNF©N©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r'   rE   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r2   r!   s   @@r   r   r      s   ù‡ € ÷ Lõ  L÷D%ô %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©r0   rU   r2   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   ÚxÚreturn©r:   Úarray)r    r!   s   "€r   r"   rV   X   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                óh   € V P                  V P                  V4      4      pV P                  V4      pV# rG   ©rZ   r]   r^   )r0   rc   s   &&r   rE   ÚMLP.__call__X   s,   € Ø×Ñ˜tŸx™x¨›{Ó+ˆØ�H‰H�Q‹KˆØˆr   rh   rH   rP   s   @@r   rR   rR   Q   s    ù‡ € ÷Kó K÷÷ ð r   rR   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[ /# rT   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_norm1rR   ÚmlpÚlayer_norm2r_   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   rc   r6   rd   )r:   rf   r   )r    r!   s   "€r   r"   rm   i   s3   ø€ ÷ ñ ™"Ÿ(™(ð ©(±2·8±8Õ*<ð ÉÏÉñ r   c                ó¬   € V P                  V4      pV P                  W3W24      pW,           pV P                  V4      pV P                  V4      pW,           # rG   )ru   rr   rw   rv   )r0   rc   r6   Úys   &&& r   rE   ÚEncoderLayer.__call__i   sM   € Ø×Ñ˜QÓˆØ�N‰N˜1 Ó)ˆØ�EˆØ×Ñ˜QÓˆØ�H‰H�Q‹KˆØ�uˆr   )rp   ru   rw   rv   rr   rG   rH   rP   s   @@r   rk   rk   ^   s    ù‡ € ÷Só S÷÷ ò r   rk   c                   ó>   a a€ ] tR t^rt oV3R lV 3R lltRtVtV ;t# )ÚEncoderc                ó    <€ V ^8„  d   QhRS[ /# rT   r   )r    r!   s   "€r   r"   ÚEncoder.__annotate__s   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 rG   )r&   r'   ÚrangeÚnum_hidden_layersrk   Úlayers)r0   rU   r   r2   s   && €r   r'   ÚEncoder.__init__s   s9   ø€ Ü‰ÑÔÜ5:¸6×;SÑ;SÔ5TÓUÑ5T°”| FÖ+Ñ5TÑUˆŽùÒUs   §A)r„   )rI   rJ   rK   rL   r'   rM   rN   rO   rP   s   @@r   r~   r~   r   s   ù‡ € ÷V÷ Vó Vr   r~   c                   óP   a a€ ] tR t^xt 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[ /# rT   r   )r    r!   s   "€r   r"   ÚVisionEmbeddings.__annotate__y   s   ø€ ÷ Sñ S™|ñ Sr   c                óÈ  <€ \         SV `  4        Wn        VP                  V n        VP
                  V n        VP                  V n        VP                  R 8X  d   RpRV n        M(Rp\        P                  ! VP                  34      V n        \        P                  ! VP                  V P                  V P                  V P                  VR7      V n        V P
                  V P                  ,          ^,          V n        VP                  R8X  d   V P                  ^,           MV P                  V n        \        P"                  ! V P                   V P                  4      V n        R# )Úsiglip_vision_modelTNF)Úin_channelsr   Úkernel_sizeÚstrider   Úclip_vision_model)r&   r'   rU   r[   rp   Ú
image_sizeÚ
patch_sizeÚ
model_typeÚclass_embeddingr:   Úzerosr*   ÚConv2dÚnum_channelsÚpatch_embeddingÚnum_patchesÚnum_positionsÚ	EmbeddingÚposition_embedding)r0   rU   r   r2   s   && €r   r'   ÚVisionEmbeddings.__init__y   s  ø€ Ü‰ÑÔØŒØ×+Ñ+ˆŒØ ×+Ñ+ˆŒØ ×+Ñ+ˆŒà×ÑÐ 5Ô5ØˆDØ#'ˆDÕ àˆDÜ#%§8¢8¨V×-?Ñ-?Ð,AÓ#BˆDÔ ä!ŸyšyØ×+Ñ+ØŸ™ØŸ™Ø—?‘?Øô 
ˆÔð !ŸO™O¨t¯©Õ>À1ÕDˆÔð × Ñ Ð$7Ô7ð ×Ñ˜qÖ à×!Ñ!ð 	Ôô
 #%§,¢,¨t×/AÑ/AÀ4Ç>Á>Ó"RˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rb   re   )r    r!   s   "€r   r"   r‰   —   s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                ó   € VP                   ^ ,          pV P                  V4      p\        P                  ! V^^R7      pV P                  P
                  R8X  d   TpMPVP                   R,          p\        P                  ! V P                  V^V34      p\        P                  ! Wc3^R7      p\        P                  ! \        P                  ! V P                  4      R,          4      pW@P                  V4      ,          pV# )r   )Ú
start_axisÚend_axisr‹   )Úaxisr7   )NºNNN)r   r—   r:   ÚflattenrU   r’   Úbroadcast_tor“   Úconcatenaterf   ÚnpÚaranger™   r›   )r0   rc   Ú
batch_sizeÚpatch_embeddingsÚ
embeddingsrp   Úcls_embeddingsÚposition_idss   &&      r   rE   ÚVisionEmbeddings.__call__—   sÍ   € Ø—W‘W˜Q•Zˆ
Ø×/Ñ/°Ó2ÐÜŸ:š:Ð&6À1ÈqÔQÐØ�;‰;×!Ñ!Ð%:Ô:Ø)‰Jà(×.Ñ.¨rÕ2ˆIÜŸ_š_Ø×$Ñ$ z°1°iÐ&@óˆNô Ÿš¨Ð(JÐQRÔSˆJä—x’x¤§	¢	¨$×*<Ñ*<Ó =¸gÕ FÓGˆà×-Ñ-¨lÓ;Õ;ˆ
ØÐr   )	r“   rU   rp   r�   r˜   r™   r—   r‘   r›   rH   rP   s   @@r   r‡   r‡   x   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# )ÚClipVisionModelc                ó    <€ V ^8„  d   QhRS[ /# rT   r   )r    r!   s   "€r   r"   ÚClipVisionModel.__annotate__«   s   ø€ ÷ ?ñ ?™|ñ ?r   c                ó:  <€ \         SV `  4        Wn        \        V4      V n        V P                  P
                  R 8X  d&   \        P                  ! VP                  4      V n	        \        V4      V n        \        P                  ! VP                  4      V n        R# )r�   N)r&   r'   rU   r‡   rª   r’   r*   rs   r[   Úpre_layrnormr~   ÚencoderÚpost_layernormr_   s   &&€r   r'   ÚClipVisionModel.__init__«   sk   ø€ Ü‰ÑÔØŒÜ*¨6Ó2ˆŒØ�;‰;×!Ñ!Ð%8Ô8Ü "§¢¨V×-?Ñ-?Ó @ˆDÔÜ˜v“ˆŒÜ Ÿlšl¨6×+=Ñ+=Ó>ˆÖr   c                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[ P                  /# ©r   rc   Úoutput_hidden_statesrd   ©r:   rf   r   r   )r    r!   s   "€r   r"   r±   ´   s5   ø€ ÷ 0ñ 0á�8‰8ð0ñ '¡t�nð0ñ 
�‰ñ	0r   c                óB  € V P                  V4      pV P                  P                  R 8X  d   V P                  V4      pV'       d   V3MRpV P                  P
                   F   pV! VRR7      pV'       g   K  W13,           pK"  	  V P                  VR,          4      pWQV3# )r�   N)r6   )r¢   r   r¢   )rª   rU   r’   r³   r´   r„   rµ   )r0   rc   r¹   Úencoder_statesÚlÚpooler_outputs   &&&   r   rE   ÚClipVisionModel.__call__´   s�   € ð
 �O‰O˜AÓˆØ�;‰;×!Ñ!Ð%8Ô8Ø×!Ñ! !Ó$ˆAç!5˜!™¸4ˆà—‘×$Ô$ˆAÙ�!˜$”ˆAß#Ñ#Ø!/°$Õ!6’ñ %ð
 ×+Ñ+¨A¨g­JÓ7ˆØ Ð/Ð/r   )rU   rª   r´   rµ   r³   rG   rH   rP   s   @@r   r¯   r¯   ª   s   ù‡ € ÷?ó ?÷0÷ 0ò 0r   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[ /# rT   r   )r    r!   s   "€r   r"   ÚVisionModel.__annotate__É   s   ø€ ÷ 4ñ 4™|ñ 4r   c                ó¸   <€ \         SV `  4        VP                  V n        V P                  R9  d   \        RV P                   24      h\	        V4      V n        R# )r�   zUnsupported model type: N)r�   r‹   )r&   r'   r’   r(   r¯   Úvision_modelr_   s   &&€r   r'   ÚVisionModel.__init__É   sM   ø€ Ü‰ÑÔà ×+Ñ+ˆŒØ�?‰?Ð"NÔNÜÐ7¸¿¹Ð7HÐIÓJÐJä+¨FÓ3ˆÖ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      # rG   )rÅ   )r0   rc   r¹   s   &&&r   rE   ÚVisionModel.__call__Ò   s   € ð × Ñ  Ó9Ð9r   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Å   rG   )
rI   rJ   rK   rL   r'   rE   rÐ   rM   rN   rO   rP   s   @@r   rÁ   rÁ   È   s#   ù‡ € ÷4ó 4÷:ò :÷
!ò !r   rÁ   )Útypingr   Úmlx.coreÚcorer:   Úmlx.nnr*   Únumpyr¦   rU   r   r   ÚModuler   rR   rk   r~   r‡   r¯   rÁ   © r   r   Ú<module>rÙ      s�   ðÝ å Ý Û å  òô 4%�—	‘	ô 4%ôn
ˆ"�)‰)ô 
ô�2—9‘9ô ô(Vˆb�i‰iô Vô/�r—y‘yô /ôd0�b—i‘iô 0ô<!!�"—)‘)ö !!r   