+
    UV-j{"  ã                   óž   € ^ RI t ^ 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 t ! R R	]P(                  4      tR# )
é    N)ÚOptional)ÚInputEmbeddingsFeatures©ÚModelConfig)ÚLanguageModel)ÚCallableModuleListÚVisionModelc                 óV  € V P                   P                  p\        V R R4      pVR8X  d"   \        P                  ! V P
                  V4      # \        P                  ! RV4      pV'       d³   \        VP                  ^4      4      p\        4       pVP                  \        P                  ! V P
                  V4      4       \        ^V4       FL  pVP                  \        P                  ! 4       4       VP                  \        P                  ! W4      4       KN  	  V# \        RV 24      h)Úmm_projector_typeÚ
mlp2x_geluÚlinearz^mlp(\d+)x_gelu$zUnknown projector type: )Útext_configÚhidden_sizeÚgetattrÚnnÚLinearÚmm_hidden_sizeÚreÚmatchÚintÚgroupr   ÚappendÚrangeÚGELUÚ
ValueError)Úconfigr   Úprojector_typeÚmlp_gelu_matchÚ	mlp_depthÚmodulesÚ_s   &      Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/fastvlm/fastvlm.pyÚbuild_vision_projectorr#      sâ   € Ø×$Ñ$×0Ñ0€KÜ˜VÐ%8¸,ÓG€NØ˜Ô!Ü�yŠy˜×.Ñ.°Ó<Ð<ä—X’XÐ1°>ÓB€NßÜ˜×,Ñ,¨QÓ/Ó0ˆ	Ü$Ó&ˆØ�‰”r—y’y ×!6Ñ!6¸ÓDÔEÜ�q˜)Ö$ˆAØ�N‰Nœ2Ÿ7š7›9Ô%Ø�N‰Nœ2Ÿ9š9 [Ó>Ö?ñ %ð ˆÜ
Ð/°Ð/?Ð@Ó
AÐAó    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
R
tVtV ;t# )ÚModelc                ó    <€ V ^8„  d   QhRS[ /# )é   r   r   )ÚformatÚ__classdict__s   "€r"   Ú__annotate__ÚModel.__annotate__!   s   ø€ ÷ ;ñ ;™{ñ ;r$   c                ó¸   <€ \         SV `  4        Wn        \        VP                  4      V n        \        VP                  4      V n        \        V4      V n
        R # ©N)ÚsuperÚ__init__r   r	   Úvision_configÚvision_towerr   r   Úlanguage_modelr#   Úmm_projector)Úselfr   Ú	__class__s   &&€r"   r0   ÚModel.__init__!   sF   ø€ Ü‰ÑÔØŒÜ'¨×(<Ñ(<Ó=ˆÔÜ+¨F×,>Ñ,>Ó?ˆÔÜ2°6Ó:ˆÖ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   ÚmxÚarray)r)   r*   s   "€r"   r+   r,   (   sI   ø€ ÷  Jñ  Já™BŸH™HÕ%ð Jñ ™rŸx™xÕ(ð Jñ ‘r—x‘xÕ ñ	 Jr$   c                óX  € Vf0   \        V P                  P                  P                  V4      R7      # V P                  P
                  P                  pVP                  ^ ,          P                  P                  P                  pVP                  V4      pVP                  RR 4      pVe   TpM_V P	                  VP                  ^ ^^^4      4      w  r˜p	VP                  w  r«rÍVP                  W«V,          V4      pV P!                  V4      pV P#                  W�V4      p\        VR7      # )N)Úinputs_embedsÚcached_image_features)r   r3   ÚmodelÚembed_tokensr2   Úvision_modelÚpatch_embedÚblocksÚreparam_convÚweightÚdtypeÚastypeÚgetÚ	transposeÚshapeÚreshaper4   Úprepare_inputs_for_multimodal)r5   r:   r;   r<   ÚkwargsrE   Úmodel_dtypeÚcachedÚimage_featuresr!   ÚBÚHÚWÚCÚfinal_inputs_embedss   &&&&,          r"   Úget_input_embeddingsÚModel.get_input_embeddings(   s  € ð ÒÜ*Ø"×1Ñ1×7Ñ7×DÑDÀYÓOôð ð ×'Ñ'×4Ñ4×@Ñ@ˆØ!×(Ñ(¨Õ+×8Ñ8×?Ñ?×EÑEˆØ#×*Ñ*¨;Ó7ˆà—‘Ð3°TÓ:ˆØÒØ#‰Nà#'×#4Ñ#4°\×5KÑ5KÈAÈqÐRSÐUVÓ5WÓ#XÑ ˆA˜qØ'×-Ñ-‰JˆA�!Ø+×3Ñ3°A¸1µu¸aÓ@ˆNØ!×.Ñ.¨~Ó>ˆNà"×@Ñ@Ø tó
Ðô 'Ð5HÔIÐIr$   c           	     óš	  € Ve‹   \         P                  ! VRR7      pVP                  RR7      p\         P                  ! WE4       VP	                  4       pVP	                  4       p\        W$V4       UUUu. uF  w  rgpWgWx,            NK  	  ppppV P                  P                  p	V Uu. uF  qfV	8H  NK	  	  p
pV
 Uu. uF  q»P                  4       NK  	  pp\         P                  ! W¬,           4       V Uu. uF  qÝP                  4       NK  	  pp. p^ p\        V4       EF  w  ppVV,          pV^ 8X  dk   W,          pV P                  P                  P                  V4      p\         P                  ! VVR,          .^ R7      pVP                  V4       V^,          pK�  V
V,          pR.\        P                   ! \        P"                  ! V4      4      ^ ,          P	                  4       ,           VP$                  ^ ,          .,           p. p\'        \)        V4      ^,
          4       F3  pVP                  VVV,          ^,           VV^,           ,           4       K5  	  VR,          pV P                  P                  P                  \         P                  ! V4      4      p\         P*                  ! VV4      p. p\'        V^,           4       FF  pVP                  VV,          4       VV8  g   K$  W,          pV^,          pVP                  V4       KH  	  \         P                  ! V4      pVP                  V4       EK  	  V P                  P,                  e)   V Uu. uF  pVR V P                  P,                   NK  	  pp\/        R V 4       4      p. p\        V4       F÷  w  ppVP$                  ^ ,          p Tp!VV 8”  dÅ   V P                  P0                  R8X  dV   \         P                  ! \         P2                  ! VV ,
          VP$                  ^,          3VP4                  R7      V3^ R7      p!MT\         P                  ! V\         P2                  ! VV ,
          VP$                  ^,          3VP4                  R7      3^ R7      p!VP                  V!4       Kù  	  \         P6                  ! V4      pV# u upppi u upi u upi u upi u upi )N)Úaxis:r   r   N:é   NNc              3   óF   "  € T F  qP                   ^ ,          x € K  	  R# 5i)r   N)rM   )Ú.0Úxs   & r"   Ú	<genexpr>Ú6Model.prepare_inputs_for_multimodal.<locals>.<genexpr>–   s   é € Ð;Ñ*: Q—g‘g˜a—j’jÓ*:ùs   ‚!Úleft)rI   éÿÿÿÿ)r=   ÚargmaxÚsumÚevalÚtolistÚzipr   Úimage_token_indexÚitemÚ	enumerater3   rB   rC   Úconcatenater   ÚnpÚwherer>   rM   r   ÚlenÚsplitÚtokenizer_model_max_lengthÚmaxÚtokenizer_padding_sideÚzerosrI   Ústack)"r5   rS   r:   r<   ÚstartsÚlengthsÚcur_input_idsÚstartÚlengthrj   Úimage_masksÚmÚnum_images_listÚnÚnew_input_embedsÚcur_image_idxÚ	batch_idxÚ
num_imagesÚcur_image_featuresÚcur_input_embeds_1Úcur_input_embedsÚimage_token_maskÚimage_token_indicesÚcur_input_ids_noimÚiÚsplit_sizesÚcur_input_embeds_no_imÚcur_new_input_embedsr`   Úmax_lenÚnew_input_embeds_paddedÚcur_new_embedÚcur_lenÚpaddeds"   &&&&                              r"   rO   Ú#Model.prepare_inputs_for_multimodalK   si  € àÒÜ—Y’Y˜t¨"Ô-ˆFØ—h‘h B�hÓ'ˆGÜ�GŠG�FÔ$Ø—]‘]“_ˆFØ—n‘nÓ&ˆGô 58¸	È7Ô4Sõá4SÑ0�M¨&ð  e¥nÓ5Ù4Sð ò ð !ŸK™K×9Ñ9ÐáDMó
ÙDM°=Ð.Ô.ÁIð 	ð 
ñ -8Ó8©K qŸ5™5ž7©KˆÐ8Ü
�Š�Õ-Ô.Ù-<Ó=©_¨Ÿ6™6ž8©_ˆÐ=àÐØˆÜ(1°)×(<Ñ$ˆI�}Ø(¨Õ3ˆJØ˜QŒØ%3Õ%BÐ"Ø%)×%8Ñ%8×%>Ñ%>×%KÑ%KØ!ó&Ð"ô $&§>¢>Ø'Ð);¸CÕ)@ÐAÈô$Ð ð !×'Ñ'Ð(8Ô9Ø Õ"�Ùð  +¨9Õ5Ðà�Ü—(’(œ2Ÿ8š8Ð$4Ó5Ó6°qÕ9×@Ñ@ÓBõCà ×&Ñ& qÕ)Ð*õ+ð  ð "$ÐÜœ3Ð2Ó3°aÕ7Ö8�Ø"×)Ñ)Ø!Ø+¨AÕ.°Õ2Ð5HÈÈQÍÕ5Oðöñ 9ð .¨bÕ1ˆKØ#×2Ñ2×8Ñ8×EÑEÜ—’Ð1Ó2ó Ðô &(§X¢XÐ.>ÀÓ%LÐ"à#%Ð Ü˜:¨�>Ö*�Ø$×+Ñ+Ð,BÀ1Õ,EÔFØ�z–>Ø)7Õ)FÐ&Ø! QÕ&�MØ(×/Ñ/Ð0BÖCñ +ô $&§>¢>Ð2FÓ#GÐ à×#Ñ#Ð$8×9ñY )=ð\ �;‰;×1Ñ1Ò=áEUó ÙEUÀ�Ð:�D—K‘K×:Ñ:Ó;ÑEUð ð  ô Ñ;Ñ*:Ó;Ó;ˆØ"$ÐÜ )Ð*:Ö ;ÑˆAˆ}Ø#×)Ñ)¨!Õ,ˆGØ"ˆFØ˜Ô Ø—;‘;×5Ñ5¸Ô?ÜŸ^š^äŸHšHØ!(¨7Õ!2°M×4GÑ4GÈÕ4JÐ KØ&3×&9Ñ&9ôð *ðð ô	‘Fô  Ÿ^š^à)ÜŸHšHØ!(¨7Õ!2°M×4GÑ4GÈÕ4JÐ KØ&3×&9Ñ&9ôðð ô	�Fð $×*Ñ*¨6Ö2ñ5 !<ô6 Ÿ8š8Ð$;Ó<ÐØÐùôCùò
ùò 9ùâ=ùòf s   Á5R2Â)R9Â<R>Ã6SÍ"Sc                óB   € V P                   P                  P                  # r.   )r3   rB   Úlayers)r5   s   &r"   r•   ÚModel.layers¶   s   € à×"Ñ"×(Ñ(×/Ñ/Ð/r$   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# r9   )r=   r>   )r)   r*   s   "€r"   r+   r,   º   s5   ø€ ÷ ñ á—8‘8ðñ —h‘hðñ �h‰hñ	r$   c                óh   € V P                  WV4      pV P                  VVVVP                  R 7      pV# ))r<   Úcacher@   )rY   r3   r@   )r5   r:   r;   r<   r™   rP   Úinput_embeddings_featuresÚlogitss   &&&&&,  r"   Ú__call__ÚModel.__call__º   sJ   € ð %)×$=Ñ$=Ø Tó%
Ð!ð ×$Ñ$ØØØØ3×AÑAð	 %ó 
ˆð ˆ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                 óÀ   € R V 9   d.   RV 9   d%   V P                  RR4      p V P                  RR4      p V # RV 9   d   V P                  RR4      # R	V 9  d
   R
V ,           # V # )r2   zmodel.vision_towerz%model.vision_tower.vision_tower.modelzvision_tower.vision_modelrE   zpatch_embed.blocksr4   zmodel.Ú r3   zlanguage_model.)Úreplace)Úkeys   &r"   Útransform_keyÚ%Model.sanitize.<locals>.transform_keyÎ   sq   € Ø Ô$Ø'¨3Ô.ØŸ+™+Ø?Ø3ó�Cð Ÿ+™+ mÐ5IÓJ�CØ�
Ø Ô$Ø—{‘{ 8¨RÓ0Ð0Ø sÔ*ð )¨3Õ.Ð.ØˆJr$   )Úitems)r5   Úweightsr£   ÚkÚvs   &&   r"   ÚsanitizeÚModel.sanitizeÍ   s3   € ò	ð" 18·±´Ô@±©¨‘˜aÓ  !Ò#±Ò@Ð@ùÓ@s   —/)r   r3   r4   r2   )NNNr.   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r0   rY   rO   Úpropertyr•   rœ   r©   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r6   r*   s   @@r"   r&   r&       sM   ù‡ € ÷;ó ;÷ Jò  JòFi ðV ñ0ó ð0÷ò ÷&Aò Ar$   r&   )r   Útypingr   Úmlx.coreÚcorer=   Úmlx.nnr   Únumpyrn   Úbaser   r   r   Úlanguager   Úvisionr   r	   r#   ÚModuler&   © r$   r"   Ú<module>r½      s:   ðÛ 	Ý å Ý Û å *Ý Ý #ß 3òBô$AˆB�I‰Iö Ar$   