+
    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
 R]P"                  4      tR# )é    )ÚOptionalN)ÚInputEmbeddingsFeatures)Úprocessing_paligemma©Ú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# )ÚPaliGemmaMultiModalProjectorc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€Ús/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/paligemma/paligemma.pyÚ__annotate__Ú)PaliGemmaMultiModalProjector.__annotate__   s   ø€ ÷ 
ñ 
™{ñ 
ó    c                ó°   <€ \         SV `  4        \        P                  ! VP                  P
                  VP                  P                  R R7      V n        R# )T)ÚbiasN)ÚsuperÚ__init__ÚnnÚLinearÚvision_configÚhidden_sizeÚprojection_dimÚlinear©Úselfr   Ú	__class__s   &&€r   r   Ú%PaliGemmaMultiModalProjector.__init__   s?   ø€ Ü‰ÑÔÜ—i’iØ× Ñ ×,Ñ,Ø× Ñ ×/Ñ/Øô
ˆŽ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                ó(   € V P                  V4      pV# ©N©r   )r!   r%   Úoutputs   && r   Ú__call__Ú%PaliGemmaMultiModalProjector.__call__   s   € Ø—‘˜Q“ˆØˆ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   ø€ ÷ Jñ J™{ñ Jr   c                óÚ   <€ \         SV `  4        VP                  V n        Wn        \	        VP
                  4      V n        \        VP                  4      V n	        \        V4      V n        R # r*   )r   r   Ú
model_typer   r	   r   Úvision_towerr   Útext_configÚlanguage_modelr   Úmulti_modal_projectorr    s   &&€r   r   ÚModel.__init__   sS   ø€ Ü‰ÑÔØ ×+Ñ+ˆŒØŒä'¨×(<Ñ(<Ó=ˆÔÜ+¨F×,>Ñ,>Ó?ˆÔÜ%AÀ&Ó%IˆÖ"r   c                ó˜   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          RS[ S[P                  ,          /# )r   Ú	input_idsÚpixel_valuesÚmask)r   r'   r(   )r   r   s   "€r   r   r:   %   sD   ø€ ÷ !
ñ !
á™BŸH™HÕ%ð!
ñ ™rŸx™xÕ(ð!
ñ ‘r—x‘xÕ ñ	!
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MuV P                  VP                  ^ ^^^4      P                  VP                  4      RR7      w  p p	VR,          P                  VP                  4      pV P                  V4      pV P                  WuW4      w  r«\        W«R7      # )N)Úinputs_embedsÚcached_image_featuresT)Úoutput_hidden_states)rG   Úattention_mask_4d)N:NNN)r   r?   ÚmodelÚembed_tokensÚgetr=   Ú	transposeÚastypeÚdtyper@   Ú_prepare_inputs_for_multimodal)r!   rC   rD   rE   ÚkwargsrG   ÚcachedÚimage_featuresÚhidden_stateÚ_Úfinal_inputs_embedsÚfinal_attention_mask_4ds   &&&&,       r   Úget_input_embeddingsÚModel.get_input_embeddings%   s  € ð ÒÜ*Ø"×1Ñ1×7Ñ7×DÑDÀYÓOôð ð ×+Ñ+×1Ñ1×>Ñ>¸yÓIˆà—‘Ð3°TÓ:ˆØÒØ#‰Nà!%×!2Ñ!2Ø×&Ñ& q¨!¨Q°Ó2×9Ñ9¸-×:MÑ:MÓNØ%)ð "3ó "ÑˆL˜!˜Qð
 *¨'Õ2×9Ñ9¸,×:LÑ:LÓMˆNØ!×7Ñ7¸ÓGˆNð ×/Ñ/Ø¨yóñ 	5Ðô
 'Ø-ô
ð 	
r   c                ó  € VP                   w   rVVP                   w  rxWP                  P                  R ,          ,          p	\        P                  ! WxV34      p
W0P                  P
                  8g  W0P                  P                  8g  ,          pW0P                  P
                  8H  pW0P                  P                  8H  p\        P                  ! VR4      p\        P                  ! WæRR7      p\        P                  ! VR4      p\        P                  ! WöRR7      p\        P                  ! WâV
4      p
\        P                  ! V\        P                  ! V
4      V
4      p
V
P                   ^,          V	P                   ^,          ,
          p\        P                  ! V	R^ V3R34      p	\        P                  ! VR4      p\        P                  ! VVRR7      p\        P                  ! VWš4      p
\        P                  ! V\        P                  ! V
4      V
4      p
\        P                  ! V^4      p\        P                  ! V^4      pVV,          pTp\        P                  ! V^4      p\        P                  ! V
4      p
V
V3# )g      à?)Úaxiséÿÿÿÿ)r   r   )Úshaper   r   r'   ÚzerosÚimage_token_indexÚpad_token_idÚexpand_dimsÚrepeatÚwhereÚ
zeros_likeÚpadr(   )r!   rT   rG   rC   Úattention_maskrV   Ú	embed_dimÚ
batch_sizeÚsequence_lengthÚscaled_image_featuresÚfinal_embeddingÚ	text_maskÚ
image_maskÚpad_maskÚtext_mask_expandedÚpad_mask_expandedÚpad_sizeÚimage_mask_expandedÚattention_mask_expanded_1Úattention_mask_expanded_2rX   s   &&&&&                r   rQ   Ú$Model._prepare_inputs_for_multimodalH   s  € ð )×.Ñ.‰ˆˆ1à&/§o¡oÑ#ˆ
Ø .·+±+×2IÑ2IÈ3Õ2NÕ OÐÜŸ(š( JÀÐ#KÓLˆà§+¡+×"?Ñ"?Ñ?ØŸ™×1Ñ1Ñ1õ
ˆ	ð §+¡+×"?Ñ"?Ñ?ˆ
Ø§¡× 8Ñ 8Ñ8ˆô  Ÿ^š^¨I°rÓ:ÐÜŸYšYÐ'9È2ÔNÐÜŸNšN¨8°RÓ8ÐÜŸIšIÐ&7ÈÔLÐô Ÿ(š(Ð#5ÀoÓVˆÜŸ(š(ØœrŸ}š}¨_Ó=¸ó
ˆð #×(Ñ(¨Õ+Ð.C×.IÑ.IÈ!Õ.LÕLˆÜ "§¢Ø! F¨Q°¨M¸6Ð#Bó!
Ðô !Ÿnšn¨Z¸Ó<ÐÜ ŸišiÐ(;¸YÈRÔPÐÜŸ(š(ØÐ!6ó
ˆô Ÿ(š(ØœrŸ}š}¨_Ó=¸ó
ˆô %'§N¢N°>À1Ó$EÐ!Ü$&§N¢N°>À1Ó$EÐ!Ø";Ð>WÕ"WÐØ"9ÐÜ"$§.¢.Ð1HÈ!Ó"LÐÜŸ(š( ?Ó3ˆØÐ 7Ð7Ð7r   c                óB   € V P                   P                  P                  # r*   )r?   rK   Úlayers)r!   s   &r   rx   ÚModel.layersy   s   € à×"Ñ"×(Ñ(×/Ñ/Ð/r   c          	      ó¢   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          /# )r   rC   rD   rE   Úcache)r'   r(   r   )r   r   s   "€r   r   r:   }   sM   ø€ ÷ ñ á—8‘8ðñ —h‘hðñ ‘r—x‘xÕ ð	ñ
 ™Ÿ™Õ!ñr   c                ó„   € V P                  WV4      pVP                  pVP                  pV P                  VVVVR 7      p	V	# ))Úinputsr{   rG   rE   )rY   rG   rJ   r?   )
r!   rC   rD   rE   r{   rR   Úinput_embeddings_featuresÚinput_embeddingsrX   Úlogitss
   &&&&&,    r   r-   ÚModel.__call__}   s\   € ð %)×$=Ñ$=Ø Tó%
Ð!ð 5×BÑBÐØ";×"MÑ"MÐà×$Ñ$ØØØ*Ø(ð	 %ó 
ˆð ˆr   )r   r?   r<   r@   r=   )NNN)NN)r/   r0   r1   r2   r   rY   rQ   Úpropertyrx   r-   r3   r4   r5   r6   s   @@r   r8   r8      sE   ù‡ € ÷Jó J÷!
ò !
òF/8ðb ñ0ó ð0÷÷ ò r   r8   )Útypingr   Úmlx.coreÚcorer'   Úmlx.nnr   Úbaser   Ú r   r   r   Úlanguager   Úvisionr	   ÚModuler   r8   © r   r   Ú<module>r�      s?   ðÝ å Ý å *Ý "Ý Ý #Ý ô 2§9¡9ô ôvˆB�I‰Iö vr   