+
    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 ^RIHt R R	 lt ! R
 R]P*                  4      t ! R R]P*                  4      t ! R R]P*                  4      tR# )é    N)ÚOptional)ÚInputEmbeddingsFeatures)Úprocessing_idefics3©ÚModelConfig)ÚLanguageModel)ÚVisionModelc                óx   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  /# )é   Úfinal_embeddingÚimage_mask_expandedÚscaled_image_features©ÚmxÚarray)Úformats   "Úq/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/idefics3/idefics3.pyÚ__annotate__r      s2   € ÷ ñ Ü—X‘XðäŸ™ðô Ÿ8™8ñó    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   )Úshaper   Úflattenr   ÚnpÚwhereÚuint32Úreshape)r   r   r   Úfinal_embedding_shapeÚscaled_image_features_flattenedÚfinal_embedding_flattenedÚimage_mask_expanded_flattenedÚimage_positionss   &&&     r   Úmasked_scatterr"      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                   óD   a a€ ] tR t^$t oV3R lV 3R lltR tRtVtV ;t# )ÚMLPc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfigr   )r   Ú__classdict__s   "€r   r   ÚMLP.__annotate__%   s   ø€ ÷ Cñ C™{ñ Cr   c                óæ   <€ \         SV `  4        VP                  P                  VP                  ^,          ,          pVP
                  P                  p\        P                  ! W#RR7      V n        R# )r   F)ÚbiasN)	ÚsuperÚ__init__Úvision_configÚhidden_sizeÚscale_factorÚtext_configÚnnÚLinearÚproj)Úselfr'   Ú
input_sizeÚoutput_sizeÚ	__class__s   &&  €r   r-   ÚMLP.__init__%   sR   ø€ Ü‰ÑÔØ×)Ñ)×5Ñ5¸×9LÑ9LÈaÕ9OÕPˆ
Ø×(Ñ(×4Ñ4ˆÜ—I’I˜j¸EÔBˆŽ	r   c                ó$   € V P                  V4      # ©N©r4   )r5   Úxs   &&r   Ú__call__ÚMLP.__call__+   s   € Ø�y‰y˜‹|Ðr   r<   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r-   r>   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r8   r(   s   @@r   r$   r$   $   s   ù‡ € ÷Có C÷ò r   r$   c                   óN   a a€ ] tR t^/t oV3R lV 3R lltRR ltR tRtVtV ;t	# )ÚIdefics3Connectorc                ó    <€ V ^8„  d   QhRS[ /# r&   r   )r   r(   s   "€r   r   ÚIdefics3Connector.__annotate__0   s   ø€ ÷ /ñ /™{ñ /r   c                óf   <€ \         SV `  4        VP                  V n        \        V4      V n        R # r;   )r,   r-   r0   r$   Úmodality_projection©r5   r'   r8   s   &&€r   r-   ÚIdefics3Connector.__init__0   s(   ø€ Ü‰ÑÔØ"×/Ñ/ˆÔÜ#& v£;ˆÖ r   c                óø  € VP                   w  r4p\        VR ,          4      ;rgVP                  W6Wu4      pVP                  W6\        Wr,          4      WR,          4      pVP                  ^ ^^^4      pVP                  V\        Wr,          4      \        Wb,          4      WR^,          ,          4      pVP                  ^ ^^^4      pVP                  V\        WB^,          ,          4      WR^,          ,          4      pV# )g      à?)r   Úintr   Ú	transpose)r5   r=   r0   ÚbszÚseqÚ	embed_dimÚheightÚwidths   &&&     r   Úpixel_shuffleÚIdefics3Connector.pixel_shuffle5   sÓ   € ØŸg™gÑˆ�)Ü˜S #�X›Ð&ˆØ�I‰I�c 5Ó4ˆØ�I‰I�c¤3 uÕ';Ó#<¸iÕ>VÓWˆØ�K‰K˜˜1˜a Ó#ˆØ�I‰IØÜ�Õ$Ó%Ü�Õ%Ó&Ø q�Õ)ó	
ˆð �K‰K˜˜1˜a Ó#ˆØ�I‰I�cœ3˜s°A¥oÕ6Ó7¸ÐTUÅoÕ9VÓWˆØˆr   c                ó^   € V P                  WP                  4      pV P                  V4      pV# r;   )rX   r0   rM   )r5   Úimage_hidden_statess   &&r   r>   ÚIdefics3Connector.__call__E   s2   € Ø"×0Ñ0Ð1D×FWÑFWÓXÐØ"×6Ñ6Ð7JÓKÐØ"Ð"r   )rM   r0   )r   )
r@   rA   rB   rC   r-   rX   r>   rD   rE   rF   rG   s   @@r   rI   rI   /   s   ù‡ € ÷/ó /ô
÷ #ò #r   rI   c                   ó†   a a€ ] tR t^Kt 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   )r   r(   s   "€r   r   ÚModel.__annotate__L   s   ø€ ÷ 3ñ 3™{ñ 3r   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_modelr   r1   Úlanguage_modelrI   Ú	connectorrN   s   &&€r   r-   ÚModel.__init__L   sR   ø€ Ü‰ÑÔØ ×+Ñ+ˆŒØŒä'¨×(<Ñ(<Ó=ˆÔÜ+¨F×,>Ñ,>Ó?ˆÔÜ*¨6Ó2ˆŽr   c                ón   <€ V ^8„  d   QhRS[ S[P                  ,          RS[ S[P                  ,          /# ©r   Ú	input_idsÚpixel_values)r   r   r   )r   r(   s   "€r   r   r`   U   s9   ø€ ÷ MJñ MJá™BŸH™HÕ%ðMJñ ™rŸx™xÕ(ñMJr   c                ó4  € VP                  R R4      pVf&   \        V P                  P                  V4      R7      # V P                  P                  V4      pVP                  w  rgr‰p
VP                  Wg,          W‰V
4      p\        P                  ! VP                  R,          4      pVR8H  P                  RR7      V8g  p\        P                  ! V4      ^ ,          P                  4       pW-R3,          pVf^   \        P                  ! VP                  ^ ,          VP                  ^,          VP                  ^,          3\        P                  R7      pM VP                  Wg,          Wš4      pWM,          pV P                  P                  P                   pVP                  w  rip
Wž,          pW®,          pVRRWþ,          1RVV,          13,          pVP                  WoVVV4      pVP#                  ^ ^^^^4      pVP                  RR7      ^ 8„  pVP                  R	R4      pVe   TpMTV P%                  VP#                  ^ ^^^4      VR
R7      vppVP'                  VP(                  4      pV P+                  V4      pV P-                  VWQ4      p\        VR7      # )Úpixel_attention_maskN)Úinputs_embeds:é   NNg        )Úaxis.)Údtype:NNNÚcached_image_featuresT)Úpatch_attention_maskÚoutput_hidden_states)éÿÿÿÿéþÿÿÿéýÿÿÿ)rt   ru   )Úgetr   rd   Úembed_tokensr   r   r   ÚprodÚsumr   Útolistr   ÚonesÚbool_r'   r.   Ú
patch_sizerR   rc   Úastyperp   re   Ú_prepare_inputs_for_multimodal)r5   ri   rj   Úkwargsrl   rm   Ú
batch_sizeÚ
num_imagesÚnum_channelsrV   rW   Únb_values_per_imageÚreal_images_maskÚreal_images_indsr~   Ú	patches_hÚ	patches_wÚreshapedrr   ÚcachedÚimage_featuresÚpooler_outputÚ_Úfinal_inputs_embedss   &&&,                    r   Úget_input_embeddingsÚModel.get_input_embeddingsU   s©  € ð  &Ÿz™zÐ*@À$ÓGÐàÒÜ*Ø"×1Ñ1×>Ñ>¸yÓIôð ð ×+Ñ+×8Ñ8¸ÓCˆà>J×>PÑ>PÑ;ˆ
 °eØ#×+Ñ+ØÕ# \¸5ó
ˆô
 !Ÿgšg l×&8Ñ&8¸Õ&<Ó=ÐØ(¨CÑ/×4Ñ4Øð 5ó 
à ñ!Ðô Ÿ8š8Ð$4Ó5°aÕ8×?Ñ?ÓAÐØ#°cÐ$9Õ:ˆàÒ'Ü#%§7¢7Ø×#Ñ# AÕ&¨×(:Ñ(:¸1Õ(=¸|×?QÑ?QÐRSÕ?TÐUÜ—h‘hô$Ñ ð $8×#?Ñ#?ØÕ'¨ó$Ð ð $8Õ#IÐ à—[‘[×.Ñ.×9Ñ9ˆ
Ø$8×$>Ñ$>Ñ!ˆ
˜Eð Õ(ˆ	ØÕ'ˆ	ð (ØÐ'�Õ'Ð'Ð)A¨9°zÕ+AÐ)AÐAõ
ˆð ×#Ñ#Ø :¨y¸*ó
ˆð ×%Ñ%Øˆq�!�Q˜ó
ˆð
  (Ÿ|™|°˜|Ó:¸QÑ>Ðà—‘Ð3°TÓ:ˆØÒØ#‰Nà $× 1Ñ 1Ø×&Ñ& q¨!¨Q°Ó2Ø%9Ø%)ð !2ó !ÐˆM˜Að +×1Ñ1°,×2DÑ2DÓEˆNØ!Ÿ^™^¨NÓ;ˆNà"×AÑAØ˜Mó
Ðô 'Ð5HÔIÐIr   c                óH  € W0P                   P                  8H  pVP                  4       pVR,          p\        P                  ! WBP
                  4      pVP
                  ^ ,          pVP                  4       pWqP                  8w  d   \        RV RV 24      h\        W$V4      pV# ).z6Image features and image tokens do not match: tokens: z, features ).N)	r'   Úimage_token_indexrz   r   Úbroadcast_tor   ÚsizeÚ
ValueErrorr"   )r5   rŒ   rm   ri   Úspecial_image_maskÚn_image_tokensÚn_image_featuresÚn_image_mask_elementss   &&&&    r   r€   Ú$Model._prepare_inputs_for_multimodal¤   sª   € Ø&¯+©+×*GÑ*GÑGÐØ+×/Ñ/Ó1ˆØ/°	Õ:ÐÜŸ_š_Ð-?×ATÑATÓUÐà)×/Ñ/°Õ2ÐØ 2× 6Ñ 6Ó 8ÐØ ×$7Ñ$7Ô7ÜØHÈÐHXÐXcÐdtÐcuÐvóð ô 'Ø¨~ó
ˆð Ðr   c                ó.   € V P                   P                  # r;   )rd   Úlayers)r5   s   &r   r�   ÚModel.layers·   s   € à×"Ñ"×)Ñ)Ð)r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rh   r   )r   r(   s   "€r   r   r`   »   s'   ø€ ÷ ñ á—8‘8ðñ —h‘hñr   c                óh   € V P                   ! W3/ VB pV P                  VVVP                  R 7      pV# ))ÚinputsÚcacherm   )r�   rd   rm   )r5   ri   rj   r¢   r�   Úinput_embeddings_featuresÚlogitss   &&&&,  r   r>   ÚModel.__call__»   sM   € ð %)×$=Ò$=Øñ%
Ø'-ñ%
Ð!ð ×$Ñ$ØØØ3×AÑAð %ó 
ˆð
 ˆr   c           	     óÒ  € VP                  4        UUu/ uFa  w  r#\        P                  ! R V4      '       d   VP                  R^4      ^,           M#\        P                  ! RV4      '       d   RV 2MTVbKc  	  pppVP                  4        UUu/ uFA  w  r#\        P                  ! RV4      '       d   RVP                  R^4      ^,           2MTVbKC  	  pppV# u uppi u uppi )z^model\.Ú.z
^lm_head\.zlanguage_model.z^text_model\.)ÚitemsÚreÚmatchÚsplit)r5   ÚweightsÚkÚvs   &&  r   ÚsanitizeÚModel.sanitizeÌ   sõ   € ð  Ÿ™œô
ñ (‘�ô —8’8˜K¨×+Ò+ð —7‘7˜3 “? 1Õ%Ñ&ä/1¯xªx¸Àq×/IÒ/I˜¨ sÑ+ÈqØòñ (ð 	ñ 
ð$  Ÿ™œô

ñ (‘�ô —8’8Ø$Ø÷ò ð " !§'¡'¨#¨q£/°!Õ"4Ð!5Ñ6ð
 Øòñ (ð 	ñ 

ð ˆùó+
ùó

s   ”ACÁ/CÂAC#)r'   re   rd   rb   rc   )NNr;   )r@   rA   rB   rC   r-   r�   r€   Úpropertyr�   r>   r¯   rD   rE   rF   rG   s   @@r   r^   r^   K   sK   ù‡ € ÷3ó 3÷MJò MJò^ð& ñ*ó ð*÷ò ÷"ò r   r^   )r©   Útypingr   Úmlx.coreÚcorer   Úmlx.nnr2   Únumpyr   Úbaser   Ú r   r'   r   Úlanguager   Úvisionr	   r"   ÚModuler$   rI   r^   © r   r   Ú<module>r½      sZ   ðÛ 	Ý å Ý Û å *Ý !Ý Ý #Ý õô*ˆ"�)‰)ô ô#˜Ÿ	™	ô #ô8WˆB�I‰Iö Wr   