+
    UV-j«  ã                   ó�   € ^ RI Ht ^ RIHt ^ RIH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# )
é    )ÚOptionalN)ÚInputEmbeddingsFeatures)Úprocessing_moondream3©ÚModelConfig)ÚLanguageModel)ÚVisionModelc                   óÖ   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V3R lR lltRV3R lR llt]R	 4       t	]R
 4       t
]R 4       t]R 4       t]R 4       tR tRtVtV ;t# )ÚModelc                ó    <€ V ^8„  d   QhRS[ /# )é   Úconfigr   )ÚformatÚ__classdict__s   "€Úu/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/moondream3/moondream3.pyÚ__annotate__ÚModel.__annotate__   s   ø€ ÷ 6ñ 6™{ñ 6ó    c                óº   <€ \         SV `  4        Wn        VP                  V n        \	        VP
                  4      V n        \        VP                  4      V n	        R # ©N)
ÚsuperÚ__init__r   Ú
model_typer	   Úvision_configÚvisionr   Útext_configÚtext)Úselfr   Ú	__class__s   &&€r   r   ÚModel.__init__   sD   ø€ Ü‰ÑÔØŒØ ×+Ñ+ˆŒÜ! &×"6Ñ"6Ó7ˆŒÜ! &×"4Ñ"4Ó5ˆŽ	r   c          	      ó²   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          RS[S[ P                  ,          /# )r   ÚinputsÚinputs_embedsÚpixel_valuesÚmask©ÚmxÚarrayr   )r   r   s   "€r   r   r      sX   ø€ ÷ Vñ Vá—‘ðVñ  ¡§¡Õ)ðVñ ™rŸx™xÕ(ð	Vñ
 ‘r—x‘xÕ ñVr   c                ó¢   € Vf:   V P                   ! W3/ VB pVP                  pVP                  e   VP                  pV P                  WWER7      # )N)r#   r%   Úcache)Úget_input_embeddingsr#   Úattention_mask_4dr   )r   r"   r#   r$   r%   r*   ÚkwargsÚinput_embeddings_featuress   &&&&&&, r   Ú__call__ÚModel.__call__   s]   € ð Ò Ø(,×(AÒ(AØñ)Ø(.ñ)Ð%ð 6×CÑCˆMØ(×:Ñ:ÒFØ0×BÑB�à�y‰y˜À4ˆyÓUÐUr   c                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# )r   r"   r$   r&   )r   r   s   "€r   r   r   (   s,   ø€ ÷ 2
ñ 2
á—‘ð2
ñ ™rŸx™xÕ(ñ2
r   c                óæ  € V P                   P                  P                  V4      pVf   \        VR7      # VP	                  RR 4      pVP	                  RR 4      pVP
                  pVP                  V4      pVP	                  RR 4      pVe   Tp	MV P                  VVVR7      p	VP                  ^ ,          p
VR
,          pV	P                  ^,          p^V,           pVP                  ^,          V8”  d*   VRVR 1R3,          p\        P                  ! W¹V.^R7      pM\        P                  ! W¹.^R7      p^V,           pVP                  ^,          pV P                  VVR R7      p\        VVR	7      # )N)r#   Ú	num_cropsÚcrop_layoutsÚcached_image_features)r3   r4   ºNNN)Úaxis)r*   )r#   r,   )r6   :Né   Nr6   )r   ÚmodelÚwter   ÚgetÚdtypeÚastyper   Úshaper'   ÚconcatenateÚ_create_prefix_attention_mask)r   r"   r$   r-   r#   r3   r4   r<   ÚcachedÚimage_featuresÚBÚ	bos_embedÚnum_vision_tokensÚ
text_startÚtext_embedsÚfinal_embedsÚ
prefix_lenÚseq_lenr,   s   &&&,               r   r+   ÚModel.get_input_embeddings(   su  € ð Ÿ	™	Ÿ™×+Ñ+¨FÓ3ˆàÒÜ*¸ÔGÐGà—J‘J˜{¨DÓ1ˆ	Ø—z‘z .°$Ó7ˆà×#Ñ#ˆØ#×*Ñ*¨5Ó1ˆà—‘Ð3°TÓ:ˆØÒØ#‰Nà!Ÿ[™[ØØ#Ø)ð )ó ˆNð �L‰L˜�OˆØ! (Õ+ˆ	à*×0Ñ0°Õ3ÐØÐ*Õ*ˆ
à×Ñ˜qÕ! JÔ.Ø'¨¨:©;¸Ð(9Õ:ˆKÜŸ>š>Ø¨KÐ8¸qô‰Lô Ÿ>š>¨9Ð*EÈAÔNˆLàÐ*Õ*ˆ
Ø×$Ñ$ QÕ'ˆØ ×>Ñ>Ø�Z tð ?ó 
Ðô 'Ø&Ø/ô
ð 	
r   c                óP   <€ V ^8„  d   QhRS[ RS[ RS[S[P                  ,          /# )r   rJ   rI   Úreturn)Úintr   r'   r(   )r   r   s   "€r   r   r   \   s.   ø€ ÷ 	6ñ 	6Ùð	6Ù(+ð	6á	‘"—(‘(Õ	ñ	6r   c                óÄ   € Ve   R # \         P                  ! \         P                  ! W3\         P                  ) 4      ^R7      pRVR V1R V13&   VP	                  ^^W4      # )N)Úkg        )r'   ÚtriuÚfullÚinfÚreshape)r   rJ   rI   r*   Úcausals   &&&& r   r@   Ú#Model._create_prefix_attention_mask\   s[   € ð ÒÙä—’œŸš 'Ð!3´b·f±f°WÓ=ÀÔCˆØ+.ˆˆ{�
ˆ{˜K˜Z˜KÐ'Ñ(à�~‰~˜a  GÓ5Ð5r   c                óB   € V P                   P                  P                  # r   )r   r9   Úblocks©r   s   &r   ÚlayersÚModel.layersg   s   € à�y‰y�‰×%Ñ%Ð%r   c                óB   € V P                   P                  P                  # r   )r   r   Úhead_dimrY   s   &r   r]   ÚModel.head_dimk   s   € à�{‰{×&Ñ&×/Ñ/Ð/r   c                óB   € V P                   P                  P                  # r   )r   r   Únum_key_value_headsrY   s   &r   Ú
n_kv_headsÚModel.n_kv_headso   s   € à�{‰{×&Ñ&×:Ñ:Ð:r   c                ó   € V P                   # r   )r   rY   s   &r   Úlanguage_modelÚModel.language_models   s   € à�y‰yÐr   c                ó   € V P                   # r   )r   rY   s   &r   Úvision_modelÚModel.vision_modelw   s   € à�{‰{Ðr   c                óø  € / pVP                  4        Fã  w  r4TpVP                  R 4      '       d   V\        R 4      R pVP                  R4      '       d   KE  RV9   d   KN  VR8X  d   RpMDVP                  R4      '       d   M,VP                  R4      '       d   RV\        R4      R ,           pVP                  R	4      '       d-   VP                  R
4      '       g   RV\        R	4      R ,           pWBV&   Kå  	  V# )zmodel.Nzregion.Úposition_idsztext.wteztext.model.wte.weightztext.lm_headztext.ztext.model.zvision.zvision.proj_mlpzvision.encoder.)ÚitemsÚ
startswithÚlen)r   ÚweightsÚ	sanitizedrP   ÚvÚnew_keys   &&    r   ÚsanitizeÚModel.sanitize{   só   € Øˆ	Ø—M‘M–O‰DˆAØˆGà×!Ñ! (×+Ò+Ø!¤# h£- /Ð2�à×!Ñ! )×,Ò,Ùà Ô(Ùà˜*Ô$Ø1‘Ø×#Ñ# N×3Ò3ØØ×#Ñ# G×,Ò,Ø'¨'´#°g³,°.Ð*AÕA�à×!Ñ! )×,Ò,°W×5GÑ5GØ!÷6ò 6ð ,¨g´c¸)³nÐ6FÐ.GÕG�à!"�gÓñ1 $ð4 Ðr   )r   r   r   r   )NNNNr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r/   r+   r@   ÚpropertyrZ   r]   ra   rd   rg   rr   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   r   s   @@r   r   r      sž   ù‡ € ÷6ó 6÷Vò V÷&2
ò 2
÷h	6ò 	6ð ñ&ó ð&ð ñ0ó ð0ð ñ;ó ð;ð ñó ðð ñó ð÷ò r   r   )Útypingr   Úmlx.coreÚcorer'   Úmlx.nnÚnnÚbaser   Ú r   r   r   Úlanguager   r   r	   ÚModuler   © r   r   Ú<module>r†      s/   ðÝ å Ý å *Ý #Ý Ý #Ý ôJˆB�I‰Iö Jr   