+
    UV-jí  ã                   ó˜   € ^ RI HtHtHt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 R]	P(                  4      tR# )	é    )ÚDictÚListÚTupleÚUnionN)ÚInputEmbeddingsFeatures©ÚModelConfig)ÚLanguageModel)ÚVisionModelc                   ó€   a a€ ] tR t^t oV3R lV 3R llt]R 4       tR
V3R lR lltR
V3R lR lltR t	R	t
VtV ;t# )ÚModelc                ó    <€ 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/molmo/molmo.pyÚ__annotate__ÚModel.__annotate__   s   ø€ ÷ >ñ >™{ñ >ó    c                ó˜   <€ \         SV `  4        Wn        \        VP                  4      V n        \        VP                  4      V n        R # ©N)	ÚsuperÚ__init__r   r
   Útext_configÚlanguage_modelr   Úvision_configÚvision_tower)Úselfr   Ú	__class__s   &&€r   r   ÚModel.__init__   s9   ø€ Ü‰ÑÔØŒÜ+¨F×,>Ñ,>Ó?ˆÔÜ'¨×(<Ñ(<Ó=ˆÖr   c                óB   € V P                   P                  P                  # r   )r   ÚmodelÚlayers)r   s   &r   r$   ÚModel.layers   s   € à×"Ñ"×(Ñ(×/Ñ/Ð/r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Ú	input_idsÚpixel_values)ÚmxÚarray)r   r   s   "€r   r   r      s+   ø€ ÷ 9Gñ 9Gá—8‘8ð9Gñ —h‘hñ9Gr   c                óÜ  € VP                   ^8X  d
   VR,          pVP                  w  rEVP                  RR4      pVP                  RR4      pVf2   V P                  P                  P                  V4      p\        VR7      # V P                  P                  P                  P                  P                  p	VP                  V	4      pVP                   ^8X  dR   \        P                  ! V^ 4      pVe   \        P                  ! V^ 4      MRpVe   \        P                  ! V^ 4      MRpVP                  RR4      p
V
e   T
pRpMV P                  W'4      w  r¼VP                  R,          w  rÞVP                  WMV,          R4      pVP                  WMV,          4      p\         P"                  ! V^ 8¬  4      ^ ,          P%                  4       p\        P&                  ! V4      p\        P(                  ! VR	,          ^VP                  ^,          .4      pV P                  P                  P                  V4      pVVV,          Wo,          3;;,          VV,          ,          uu&   \        VR7      # )
z3Get input embeddings with image features merged in.NÚimage_input_idxÚimage_masks)Úinputs_embedsÚcached_image_features:é   é   N)NºNNNéÿÿÿÿ)r2   N)ÚndimÚshapeÚgetr   r#   Úwter   r   Ú	image_vitÚpatch_embeddingÚweightÚdtypeÚastyper)   Úexpand_dimsÚreshapeÚnpÚwhereÚtolistÚarangeÚtile)r   r'   r(   ÚkwargsÚ
batch_sizeÚseq_lenr,   r-   r.   r;   ÚcachedÚimage_featuresÚ	cls_embedÚ	num_imageÚ	num_patchÚvalidÚ	batch_idxÚinput_embeddingss   &&&,              r   Úget_input_embeddingsÚModel.get_input_embeddings   s"  € ð �>‰>˜QÔØ! 'Õ*ˆIà'Ÿo™oÑˆ
à Ÿ*™*Ð%6¸Ó=ˆØ—j‘j °Ó5ˆàÒØ ×/Ñ/×5Ñ5×9Ñ9¸)ÓDˆMÜ*¸ÔGÐGð ×!Ñ!×+Ñ+×;Ñ;×BÑB×HÑHˆØ#×*Ñ*¨5Ó1ˆà×Ñ Ô!ÜŸ>š>¨,¸Ó:ˆLà2=Ò2I”—’˜{¨AÔ.Ètð ð
 #Ò.ô —’˜°Ô2àð ð —‘Ð3°TÓ:ˆØÒØ#ˆNØ‰Ià(,×(9Ñ(9¸,Ó(TÑ%ˆNð  .×3Ñ3°CÕ8Ñˆ	ð (×/Ñ/°
È	Õ<QÐSUÓVˆØ)×1Ñ1°*È)Õ>SÓTˆä—’˜¨AÑ-Ó.¨qÕ1×8Ñ8Ó:ˆÜ—I’I˜jÓ)ˆ	Ü—G’G˜I gÕ.°°N×4HÑ4HÈÕ4KÐ0LÓMˆ	à×.Ñ.×4Ñ4×8Ñ8¸ÓCÐØ˜ 5Õ)¨?Õ+AÐA×BÀnØõG
õ 	
ÓBô 'Ð5EÔFÐFr   c                óü   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[S[S[S[ P                  S[S[S[ P                  S[ P                  3,          ,          3,          3,          /# )r   r'   r(   ÚmaskÚreturn)r)   r*   r   Ústrr   r   r   )r   r   s   "€r   r   r   S   sn   ø€ ÷ ñ á—8‘8ðñ —h‘hðñ �h‰hð	ñ 
‰c‘5™Ÿ™¡4©©b¯h©h¹¿¹Ð.@Õ(AÕ#BÐBÕCÐCÕ	Dñr   c                ón   € V P                   ! W3/ VB pVP                  pV P                  VVVVR 7      pV# ))r.   rR   Úcache)rO   r.   r   )	r   r'   r(   rR   rV   rD   Úembedding_outputrN   Úlogitss	   &&&&&,   r   Ú__call__ÚModel.__call__S   sQ   € ð  ×4Ò4°YÑWÐPVÑWÐØ+×9Ñ9Ðð ×$Ñ$ØØ*ØØð	 %ó 
ˆð ˆr   c                ój   € R  pVP                  4        UUu/ uF  w  r4V! V4      VbK  	  upp# u uppi )c                 ój   € R V 9   d   V P                  R R4      p RV 9   d   V P                  RR4      p V # )zmodel.transformerzlanguage_model.modelzmodel.vision_backboner   )Úreplace)Úkeys   &r   Útransform_keyÚ%Model.sanitize.<locals>.transform_keyj   s:   € Ø" cÔ)Ø—k‘kÐ"5Ð7MÓN�Ø&¨#Ô-Ø—k‘kÐ"9¸>ÓJ�ØˆJr   )Úitems)r   Úweightsr_   ÚkÚvs   &&   r   ÚsanitizeÚModel.sanitizei   s3   € ò	ð 18·±´Ô@±©¨‘˜aÓ  !Ò#±Ò@Ð@ùÓ@s   —/)r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Úpropertyr$   rO   rY   re   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r    r   s   @@r   r   r      sF   ù‡ € ÷>ó >ð ñ0ó ð0÷9Gò 9G÷vò ÷,Aò Ar   r   )Útypingr   r   r   r   Úmlx.coreÚcorer)   Úmlx.nnÚnnÚnumpyr?   Úbaser   r   r	   Úlanguager
   Úvisionr   ÚModuler   © r   r   Ú<module>rz      s4   ðß +Ó +å Ý Û å *Ý Ý #Ý ôdAˆB�I‰Iö dAr   