+
    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Ht ^RIHt  ! R R	]P(                  4      tR
 R lt ! R R]P(                  4      tR# )é    )ÚOptionalN)ÚInputEmbeddingsFeatures)Úprocessing_gemma3©ÚModelConfig)ÚLanguageModelÚRMSNorm)Ú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# )ÚGemma3MultiModalProjectorc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€Úm/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/gemma3/gemma3.pyÚ__annotate__Ú&Gemma3MultiModalProjector.__annotate__   s   ø€ ÷ 
ñ 
™{ñ 
ó    c                óœ  <€ \         SV `  4        \        P                  ! VP                  P
                  VP                  P
                  34      V n        \        VP                  P
                  VP                  P                  R 7      V n
        \        VP                  P                  VP                  P                  ,          4      V n        \        VP                  P                  R,          4      V n        V P                  V P                   ,          V n        \$        P&                  ! V P"                  V P"                  R7      V n        R# ))Úepsç      à?)Úkernel_sizeÚstrideN)ÚsuperÚ__init__ÚmxÚonesÚvision_configÚhidden_sizeÚtext_configÚmm_input_projection_weightr	   Úlayer_norm_epsÚmm_soft_emb_normÚintÚ
image_sizeÚ
patch_sizeÚpatches_per_imageÚmm_tokens_per_imageÚtokens_per_sider   ÚnnÚ	AvgPool2dÚavg_pool©Úselfr   Ú	__class__s   &&€r   r   Ú"Gemma3MultiModalProjector.__init__   sô   ø€ Ü‰ÑÔÜ*,¯'ª'Ø×!Ñ!×-Ñ-¨v×/AÑ/A×/MÑ/MÐNó+
ˆÔ'ô !(Ø× Ñ ×,Ñ,°&×2FÑ2F×2UÑ2Uô!
ˆÔô "%Ø× Ñ ×+Ñ+¨v×/CÑ/C×/NÑ/NÕNó"
ˆÔô  # 6×#5Ñ#5×#IÑ#IÈ3Õ#NÓOˆÔØ×1Ñ1°T×5IÑ5IÕIˆÔÜŸšØ×(Ñ(°×1AÑ1Aô
ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   ÚxÚreturn©r   Úarray)r   r   s   "€r   r   r   !   s#   ø€ ÷ 8ñ 8™"Ÿ(™(ð 8¡r§x¡xñ 8r   c                óä  € VP                   w  r#pVP                  ^ ^^4      pVP                  W$V P                  V P                  4      pVP                  ^ ^^^4      pV P	                  V4      pVP                  ^ ^^^4      P                  ^4      pVP                  ^ ^^4      pV P                  V4      p\        P                  ! RWpP                  4      pVP                  VP                  4      # )r   zbtm,md->btd)ÚshapeÚ	transposeÚreshaper)   r.   Úflattenr%   r   Úeinsumr#   ÚastypeÚdtype)	r0   r4   ÚbÚ_ÚlÚreshaped_vision_outputsÚpooled_vision_outputsÚnormed_vision_outputsÚprojected_vision_outputss	   &&       r   Ú__call__Ú"Gemma3MultiModalProjector.__call__!   së   € Ø—'‘'‰ˆˆaà"#§+¡+¨a°°AÓ"6ÐØ"9×"AÑ"AØ�$×(Ñ(¨$×*@Ñ*@ó#
Ðð
 #:×"CÑ"CÀAÀqÈ!ÈQÓ"OÐØ $§¡Ð.EÓ FÐØ 5× ?Ñ ?ÀÀ1ÀaÈÓ K× SÑ SÐTUÓ VÐØ 5× ?Ñ ?ÀÀ1ÀaÓ HÐà $× 5Ñ 5Ð6KÓ LÐä#%§9¢9ØÐ0×2QÑ2Qó$
Ð ð (×.Ñ.¨q¯w©wÓ7Ð7r   )r.   r   r#   r%   r)   r+   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rG   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r1   r   s   @@r   r   r      s   ù‡ € ÷
ó 
÷$8÷ 8ð 8r   r   c                óx   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  /# )r   Úfinal_embeddingÚimage_mask_expandedÚscaled_image_featuresr6   )r   s   "r   r   r   7   s2   € ÷ ñ Ü—X‘XðäŸ™ðô Ÿ8™8ñr   c                 óV  € V P                   p\        P                  ! V4      p\        P                  ! V 4      p\        P                  ! V4      p\        P                  ! \        P
                  ! V4      ^ ,          \        P                  4      pWEV&   \        P                  ! WS4      p V # )r   )r9   r   r<   r7   ÚnpÚwhereÚuint32r;   )rR   rS   rT   Úfinal_embedding_shapeÚscaled_image_features_flattenedÚfinal_embedding_flattenedÚimage_mask_expanded_flattenedÚimage_positionss   &&&     r   Úmasked_scatterr^   7   sƒ   € ð ,×1Ñ1ÐÜ&(§j¢jÐ1FÓ&GÐ#Ü "§
¢
¨?Ó ;ÐÜ$&§J¢JÐ/BÓ$CÐ!ô —h’hœrŸxšxÐ(EÓFÀqÕIÌ2Ï9É9ÓU€OØ1P˜oÑ.ô —j’jÐ!:ÓR€OàÐr   c                   óŠ   a a€ ] tR t^Lt oV3R lV 3R lltR
V3R lR llt]R 4       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__M   s   ø€ ÷ Gñ G™{ñ G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 # ©N)r   r   Ú
model_typer   r
   r    Úvision_towerr   r"   Úlanguage_modelr   Úmulti_modal_projectorr/   s   &&€r   r   ÚModel.__init__M   sS   ø€ Ü‰ÑÔØ ×+Ñ+ˆŒØŒä'¨×(<Ñ(<Ó=ˆÔÜ+¨F×,>Ñ,>Ó?ˆÔÜ%>¸vÓ%FˆÖ"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   r7   )r   r   s   "€r   r   rb   V   sD   ø€ ÷ &
ñ &
á™BŸH™HÕ%ð&
ñ ™rŸx™xÕ(ð&
ñ ‘r—x‘xÕ ñ	&
r   c           	     óL  € 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MSV P                  VP                  ^ ^^^4      P                  VP                  4      RR7      w  p p	V P                  V4      pV P                  V P                  P                  V P                  P                  V P                  P                  VVVV4      w  r«\        W«R7      # )N)Úinputs_embedsÚcached_image_featuresT)Úoutput_hidden_states)ro   Úattention_mask_4d)r   rg   ÚmodelÚembed_tokensÚgetrf   r:   r>   r?   rh   Úprepare_inputs_for_multimodalr   r!   Úpad_token_idÚimage_token_index)r0   rk   rl   rm   Úkwargsro   ÚcachedÚimage_featuresÚhidden_staterA   Úfinal_inputs_embedsÚfinal_attention_mask_4ds   &&&&,       r   Úget_input_embeddingsÚModel.get_input_embeddingsV   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ð
 "×7Ñ7¸ÓEˆNð ×.Ñ.Ø—‘×'Ñ'Ø—‘×(Ñ(Ø—‘×-Ñ-ØØØØóñ 	5Ðô 'Ø-ô
ð 	
r   c                óŽ  € VP                   w   rxVP                   w  ršW0R ,          ,          p\        P                  ! WšV34      pTpVe   TM^ pWR8g  WQ8g  ,          pWR8H  pWQ8H  p\        P                  ! VR4      p\        P                  ! VVRR7      p\        P                  ! VR4      p\        P                  ! VVRR7      p\        P                  ! VR4      p\        P                  ! VVRR7      p\        P
                  ! VWL4      p\        P
                  ! V\        P                  ! V4      V4      p\        VV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P                  VP                  4      V3# )r   )Úaxiséÿÿÿÿ)r9   r   ÚzerosÚexpand_dimsÚrepeatrW   Ú
zeros_liker^   r7   r>   r?   )r!   rw   rx   r{   ro   rk   Úattention_maskrA   Ú	embed_dimÚ
batch_sizeÚsequence_lengthrT   rR   Ú	text_maskÚ
image_maskÚpad_maskÚtext_mask_expandedÚpad_mask_expandedrS   Úattention_mask_expanded_1Úattention_mask_expanded_2r~   s   &&&&&&&               r   rv   Ú#Model.prepare_inputs_for_multimodal~   s›  € ð )×.Ñ.‰ˆˆ1à&/§o¡oÑ#ˆ
Ø .¸sÕ2BÕ CÐÜŸ(š( JÀÐ#KÓLˆà#ˆØ'3Ò'?‘|ÀQˆØÑ3¸	Ñ8QÕRˆ	ØÑ3ˆ
ØÑ,ˆô  Ÿ^š^¨I°rÓ:ÐÜŸYšYÐ'9¸9È2ÔNÐÜŸNšN¨8°RÓ8ÐÜŸIšIÐ&7¸ÈÔLÐÜ Ÿnšn¨Z¸Ó<ÐÜ ŸišiÐ(;¸YÈRÔPÐô Ÿ(š(Ð#5°}ÓVˆÜŸ(š(ØœrŸ}š}¨_Ó=¸ó
ˆô
 )ØÐ0Ð2Gó
ˆô %'§N¢N°>À1Ó$EÐ!Ü$&§N¢N°>À1Ó$EÐ!Ø";Ð>WÕ"WÐØ"9ÐÜ"$§.¢.Ð1HÈ!Ó"LÐÜŸ(š( ?Ó3ˆØ×%Ñ% m×&9Ñ&9Ó:Ð<SÐSÐSr   c                óB   € V P                   P                  P                  # rd   )rg   rs   Úlayers)r0   s   &r   r•   ÚModel.layers¯   s   € à×"Ñ"×(Ñ(×/Ñ/Ð/r   c          	      ó¢   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  ,          RS[S[ P                  ,          /# )r   rk   rl   rm   Úcache)r   r7   r   )r   r   s   "€r   r   rb   ³   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˜   ro   rm   )r   ro   rr   rg   )
r0   rk   rl   rm   r˜   ry   Úinput_embeddings_featuresro   rˆ   Úlogitss
   &&&&&,    r   rG   ÚModel.__call__³   sZ   € ð %)×$=Ñ$=Ø Tó%
Ð!ð 2×?Ñ?ˆØ2×DÑDˆà×$Ñ$ØØØ'Øð	 %ó 
ˆð ˆr   )r   rg   re   rh   rf   )NNN)NN)rI   rJ   rK   rL   r   r   Ústaticmethodrv   Úpropertyr•   rG   rM   rN   rO   rP   s   @@r   r`   r`   L   sV   ù‡ € ÷Gó G÷&
ò &
ðP ñ.Tó ð.Tð` ñ0ó ð0÷÷ ò r   r`   )Útypingr   Úmlx.coreÚcorer   Úmlx.nnr,   ÚnumpyrV   Úbaser   Ú r   r   r   Úlanguager   r	   Úvisionr
   ÚModuler   r^   r`   © r   r   Ú<module>r«      sH   ðÝ å Ý Û å *Ý Ý ß ,Ý ô&8 §	¡	ô &8õRô*{ˆB�I‰Iö {r   