+
    UV-jÒ  ã                   óÂ   € ^ RI Ht ^ RIHt ^ RIHt ^ RIt^RI	H
t
 ^RIHt ^RIHt ^RIHt ^RIHt  ! R R	]P&                  4      t ! R
 R]P&                  4      tR# )é    )ÚOptionalN)ÚInputEmbeddingsFeatures)Úprocessing_llava©ÚModelConfig)ÚLanguageModel)ÚVisionModelc                   ó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# )ÚLlavaMultiModalProjectorc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€Úk/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/llava/llava.pyÚ__annotate__Ú%LlavaMultiModalProjector.__annotate__   s   ø€ ÷ 
ñ 
™{ñ 
ó    c                óp  <€ \         SV `  4        \        P                  ! VP                  P
                  VP                  P
                  R R7      V n        \        P                  ! 4       V n	        \        P                  ! VP                  P
                  VP                  P
                  R R7      V n
        R# )T)ÚbiasN)ÚsuperÚ__init__ÚnnÚLinearÚvision_configÚhidden_sizeÚtext_configÚlinear_1ÚGELUÚgeluÚlinear_2©Úselfr   Ú	__class__s   &&€r   r   Ú!LlavaMultiModalProjector.__init__   s}   ø€ Ü‰ÑÔÜŸ	š	Ø× Ñ ×,Ñ,¨f×.@Ñ.@×.LÑ.LÐSWô
ˆŒô —G’G“IˆŒ	ÜŸ	š	Ø×Ñ×*Ñ*¨F×,>Ñ,>×,JÑ,JÐQUô
ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   ÚxÚreturn©ÚmxÚarray)r   r   s   "€r   r   r      s#   ø€ ÷ ñ ™"Ÿ(™(ð ¡r§x¡xñ r   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# ©N)r   r!   r"   )r$   r(   s   &&r   Ú__call__Ú!LlavaMultiModalProjector.__call__   s0   € Ø�M‰M˜!ÓˆØ�I‰I�a‹LˆØ�M‰M˜!ÓˆØˆr   )r!   r   r"   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r/   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r%   r   s   @@r   r   r      s   ù‡ € ÷
ó 
÷÷ ð r   r   c                   ó€   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 4       tRV3R lR llt	R	t
VtV ;t# )ÚModelc                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚModel.__annotate__!   s   ø€ ÷ Tñ T™{ñ Tr   c                óü   <€ \         SV `  4        Wn        \        VP                  4      V n        \        VP                  4      V n        \        V4      V n
        VP                  V n        VP                  V n        R # r.   )r   r   r   r	   r   Úvision_towerr   r   Úlanguage_modelr   Úmulti_modal_projectorÚvision_feature_layerÚvision_feature_select_strategyr#   s   &&€r   r   ÚModel.__init__!   sb   ø€ Ü‰ÑÔØŒÜ'¨×(<Ñ(<Ó=ˆÔÜ+¨F×,>Ñ,>Ó?ˆÔÜ%=¸fÓ%EˆÔ"Ø$*×$?Ñ$?ˆÔ!Ø.4×.SÑ.SˆÖ+r   c                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# )r   Ú	input_idsÚpixel_values)r   r+   r,   )r   r   s   "€r   r   r<   *   s5   ø€ ÷ .Jñ .Já™BŸH™HÕ%ð.Jñ ™rŸx™xÕ(ñ.Jr   c                ó   € Vf0   \        V P                  P                  P                  V4      R7      # V P                  P                  P                  V4      pVP	                  RR 4      pVe   TpMæV P                  VP                  ^ ^^^4      RR7      Ev rxW€P                  ,          p	\        V P                  \        4      '       d   V P                  R8X  d
   V	R,          p	MaV P                   U
u. uF  q¨V
,          NK  	  pp
V P                  R8X  d   V Uu. uF  qÌR,          NK  	  pp\        P                  ! VRR7      p	V P                  V	4      pV P                  WdV4      p\        VR7      # u up
i u upi )	N)Úinputs_embedsÚcached_image_featuresT)Úoutput_hidden_statesÚdefault)Úaxis)ºNNN:é   NNéÿÿÿÿ)r   r?   ÚmodelÚembed_tokensÚgetr>   Ú	transposerA   Ú
isinstanceÚintrB   r+   Úconcatenater@   Ú$_merge_input_ids_with_image_features)r$   rE   rF   ÚkwargsrH   ÚcachedÚimage_featuresÚ_Úhidden_statesÚselected_image_featureÚ	layer_idxÚhs_poolÚhsÚfinal_inputs_embedss   &&&,          r   Úget_input_embeddingsÚModel.get_input_embeddings*   s�  € ð ÒÜ*Ø"×1Ñ1×7Ñ7×DÑDÀYÓOôð ð
 ×+Ñ+×1Ñ1×>Ñ>¸yÓIˆà—‘Ð3°TÓ:ˆØÒØ#‰Nð !%× 1Ñ 1Ø×&Ñ& q¨!¨Q°Ó2Èð !2ó !ÑˆQð
 &3×3LÑ3LÕ%MÐ"ä˜$×3Ñ3´S×9Ò9Ø×6Ñ6¸)ÔCØ-CÀEÕ-JÐ*øð ?C×>WÒ>WóÙ>W° )×,Ð,Ñ>Wð ð ð ×6Ñ6¸)ÔCÙ3:Ó;±7¨R %Ÿy˜y±7�GÐ;Ü)+¯ª¸ÀbÔ)IÐ&ð "×7Ñ7Ð8NÓOˆNð #×GÑGØ¨9ó
Ðô 'Ð5HÔIÐIùòùò
 <s   Ã4E6ÄE;c                ón  € V P                   P                  p\        P                  ! W48H  4      ^,          P	                  4       pVP
                  w  rgpVP                  RV4      p	V	P                  VP                  4      p	\        V4      p
V	P
                  ^ ,          V
8”  d   \        R4      hW’RVR3&   V# )rN   z\Llava model supports only one image per input. Please check your input_ids and pixel_values.rM   rO   )r   Úimage_token_indexÚnpÚwhereÚtolistÚshapeÚreshapeÚastypeÚdtypeÚlenÚ
ValueError)r$   rZ   rH   rE   re   Úimage_positionsÚ
num_imagesr[   Úvision_hidden_sizeÚreshaped_image_hidden_statesÚnum_positions_neededs   &&&&       r   rW   Ú*Model._merge_input_ids_with_image_featuresZ   sÀ   € ð !ŸK™K×9Ñ9Ðô Ÿ(š( 9Ñ#AÓBÀ1ÕE×LÑLÓNˆØ,:×,@Ñ,@Ñ)ˆ
Ð)à'5×'=Ñ'=¸bÐBTÓ'UÐ$ð (D×'JÑ'JØ×Ñó(
Ð$ô
  # ?Ó3Ðà'×-Ñ-¨aÕ0Ð3GÔGäØnóð ð 0L�a˜¨!Ð+Ñ,ØÐr   c                óB   € V P                   P                  P                  # r.   )r?   rP   Úlayers)r$   s   &r   rv   ÚModel.layersv   s   € à×"Ñ"×(Ñ(×/Ñ/Ð/r   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   rE   rF   Úmaskr*   )r   r   s   "€r   r   r<   z   s5   ø€ ÷ ñ á—8‘8ðñ —h‘hðñ �h‰hñ	r   c                óf   € V P                  W4      pV P                  VVVVP                  R 7      pV# ))ry   ÚcacherH   )rb   r?   rH   )r$   rE   rF   ry   r{   rX   Úinput_embeddings_featuresÚlogitss   &&&&&,  r   r/   ÚModel.__call__z   sC   € ð %)×$=Ñ$=¸iÓ$VÐ!Ø×$Ñ$ØØØØ3×AÑAð	 %ó 
ˆð ˆr   )r   r?   r@   rA   rB   r>   )NNr.   )r1   r2   r3   r4   r   rb   rW   Úpropertyrv   r/   r5   r6   r7   r8   s   @@r   r:   r:       sF   ù‡ € ÷Tó T÷.Jò .Jò`ð8 ñ0ó ð0÷÷ ò r   r:   )Útypingr   Úmlx.coreÚcorer+   Úmlx.nnr   Únumpyrf   Úbaser   Ú r   r   r   Úlanguager   Úvisionr	   ÚModuler   r:   © r   r   Ú<module>r‹      sB   ðÝ å Ý Û å *Ý Ý Ý #Ý ô˜rŸy™yô ô$iˆB�I‰Iö ir   