+
    UV-j¹,  ã                   ó‚  € ^ RI t ^ RIHt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 R]P,                  4      t ! R R]P,                  4      t ! R R]P,                  4      tR# )é    N)ÚOptionalÚTuple)ÚInputEmbeddingsFeatures)Úprocessing_idefics2©Ú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/idefics2/idefics2.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                   óT   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VtV ;t# )ÚIdefics2PerceiverAttentionc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfigr   )r   Ú__classdict__s   "€r   r   Ú'Idefics2PerceiverAttention.__annotate__%   s   ø€ ÷ Eñ E™{ñ Er   c                ó,  <€ \         SV `  4        VP                  P                  pVP                  P
                  ;V n        pVP                  P                  ;V n        pVP                  P                  pVR,          V n
        \        P                  ! W#V,          RR7      V n        \        P                  ! W$V,          RR7      V n        \        P                  ! W$V,          RR7      V n        \        P                  ! W5,          VRR7      V n        R# )g      à?F©ÚbiasNg      à¿)ÚsuperÚ__init__Útext_configÚhidden_sizeÚperceiver_configÚresampler_n_headsÚn_headsÚnum_key_value_headsÚ
n_kv_headsÚresampler_head_dimÚscaleÚnnÚLinearÚq_projÚk_projÚv_projÚo_proj)Úselfr(   Údimr4   r6   Úhead_dimÚ	__class__s   &&    €r   r/   Ú#Idefics2PerceiverAttention.__init__%   sÇ   ø€ Ü‰ÑÔà× Ñ ×,Ñ,ˆØ!'×!8Ñ!8×!JÑ!JÐJˆŒ�wØ'-×'>Ñ'>×'RÑ'RÐRˆŒ˜*à×*Ñ*×=Ñ=ˆØ˜t•^ˆŒ
ä—i’i ¨xÕ%7¸eÔDˆŒÜ—i’i °(Õ%:ÀÔGˆŒÜ—i’i °(Õ%:ÀÔGˆŒÜ—i’i Õ 2°C¸eÔDˆŽr   c                óæ   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  ,          RS[S[S[ P                  S[ P                  3,          ,          RS[ P                  /# )r   ÚxÚkvÚmaskÚcacheÚreturn)r   r   r   r   )r   r)   s   "€r   r   r*   4   si   ø€ ÷ #ñ #á�8‰8ð#ñ �H‰Hð#ñ ‘r—x‘xÕ ð	#ñ
 ™™bŸh™h©¯©Ð0Õ1Õ2ð#ñ 
�‰ñ#r   c                ó8  € VP                   w  rVpWbP                   ^,          ,           p\        P                  ! W!.RR7      p	V P                  V4      p
V P	                  V	4      pV P                  V	4      pV
P                  WVV P                  R4      P                  ^ ^^^4      p
VP                  WXV P                  R4      P                  ^ ^^^4      pVP                  WXV P                  R4      P                  ^ ^^^4      pVe7   Vw  rÞ\        P                  ! WÛ.^R7      p\        P                  ! Wì.^R7      p\        P                  P                  W«WÀP                  R7      pVP                  ^ ^^^4      P                  WVR4      pV P                  V4      # )é   ©Úaxis)r8   éþÿÿÿéÿÿÿÿ)r   r   Úconcatenater;   r<   r=   r   r4   Ú	transposer6   ÚfastÚscaled_dot_product_attentionr8   r>   )r?   rE   rF   rG   rH   ÚBÚLÚDÚ
kv_seq_lenÚhidden_statesÚqueriesÚkeysÚvaluesÚ	key_cacheÚvalue_cacheÚoutputs   &&&&&           r   Ú__call__Ú#Idefics2PerceiverAttention.__call__4   sc  € ð —'‘'‰ˆˆaØŸ™ !�•_ˆ
ÜŸš¨ w°RÔ8ˆà—+‘+˜a“.ˆØ�{‰{˜=Ó)ˆØ—‘˜]Ó+ˆð —/‘/ !¨¯©°bÓ9×CÑCÀAÀqÈ!ÈQÓOˆØ�|‰|˜A¨4¯?©?¸BÓ?×IÑIÈ!ÈQÐPQÐSTÓUˆØ—‘ ¨t¯©ÀÓC×MÑMØˆq�!�Qó
ˆð ÒØ%*Ñ"ˆIÜ—>’> 9Ð"3¸!Ô<ˆDÜ—^’^ [Ð$9ÀÔBˆFä—‘×5Ñ5Ø˜6¯©ð 6ó 
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸BÓ?ˆØ�{‰{˜6Ó"Ð"r   )r<   r4   r6   r>   r;   r8   r=   ©NN©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r/   r_   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rB   r)   s   @@r   r%   r%   $   s    ù‡ € ÷Eó E÷#÷ #ò #r   r%   c                   óT   a a€ ] tR t^Vt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚIdefics2PerceiverLayerc                ó    <€ V ^8„  d   QhRS[ /# r'   r   )r   r)   s   "€r   r   Ú#Idefics2PerceiverLayer.__annotate__W   s   ø€ ÷ Qñ Q™{ñ Qr   c                ó°  <€ \         SV `  4        VP                  P                  V n        VP                  P
                  V n        VP                  P                  V n        VP                  P                  V n	        \        P                  ! V P                  V P                  R 7      V n        \        P                  ! V P                  V P                  R 7      V n        \        V4      V n        \        P                  ! V P                  V P                  R 7      V n        \#        V P                  V P                  ^,          V P                  4      V n        R# ©)ÚepsN)r.   r/   r0   r1   r2   Úresampler_n_latentsÚ	n_latentsÚresampler_depthÚdepthÚrms_norm_epsr9   ÚRMSNormÚinput_latents_normÚinput_context_normr%   Ú	self_attnÚpost_attention_layernormÚMLPÚmlp©r?   r(   rB   s   &&€r   r/   ÚIdefics2PerceiverLayer.__init__W   sñ   ø€ Ü‰ÑÔØ!×-Ñ-×9Ñ9ˆÔØ×0Ñ0×DÑDˆŒØ×,Ñ,×<Ñ<ˆŒ
Ø"×.Ñ.×;Ñ;ˆÔä"$§*¢*¨T×-=Ñ-=À4×CTÑCTÔ"UˆÔÜ"$§*¢*¨T×-=Ñ-=À4×CTÑCTÔ"UˆÔÜ3°FÓ;ˆŒÜ(*¯
ª
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ô �t×'Ñ'¨×)9Ñ)9¸AÕ)=¸t×?OÑ?OÓPˆŽr   c                ó’   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  ,          RS[ P                  /# )r   rE   rX   rG   rI   ©r   r   r   )r   r)   s   "€r   r   rn   f   sH   ø€ ÷ ñ á�8‰8ðñ —x‘xðñ ‘r—x‘xÕ ð	ñ
 
�‰ñr   c                óØ   € V P                  V4      pV P                  V4      pV P                  WEVR 7      pW,           pTpV P                  V4      pV P	                  V4      pWd,           pV# ©©rG   )rx   ry   rz   r{   r}   )r?   rE   rX   rG   ÚlatentsÚcontextÚrs   &&&&   r   r_   ÚIdefics2PerceiverLayer.__call__f   sl   € ð ×)Ñ)¨!Ó,ˆØ×)Ñ)¨-Ó8ˆà—.‘. ¸�.Ó=ˆà•+ˆØˆà×/Ñ/°Ó8ˆØ—(‘(˜7Ó#ˆØ•+ˆØˆr   )	ru   r1   ry   rx   r}   rs   r{   rv   rz   ©Nrb   rj   s   @@r   rl   rl   V   s    ù‡ € ÷Qó Q÷÷ ò r   rl   c                   óT   a a€ ] tR t^zt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚIdefics2PerceiverResamplerc                ó    <€ V ^8„  d   QhRS[ /# r'   r   )r   r)   s   "€r   r   Ú'Idefics2PerceiverResampler.__annotate__{   s   ø€ ÷ 
Vñ 
V™{ñ 
Vr   c                óì  <€ \         SV `  4        VP                  P                  V n        VP                  P
                  V n        \        P                  ! V P                  V P                  34      V n	        \        VP                  P                  4       Uu. uF  p\        V4      NK  	  upV n        \        P                  ! V P                  VP                  P                   R 7      V n        R# u upi rp   )r.   r/   r0   r1   r2   rr   rs   r   Úonesr…   Úrangert   rl   Úlayersr9   rw   rv   Únorm)r?   r(   Ú_rB   s   && €r   r/   Ú#Idefics2PerceiverResampler.__init__{   s¶   ø€ Ü‰ÑÔØ!×-Ñ-×9Ñ9ˆÔØ×0Ñ0×DÑDˆŒä—w’w §¡°×0@Ñ0@ÐAÓBˆŒô ˜6×2Ñ2×BÑBÔCó
áC�ô # 6Ö*ÙCñ
ˆŒô —J’J˜t×/Ñ/°V×5GÑ5G×5TÑ5TÔUˆŽ	ùò	
s   ÂC1c                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# )r   rE   rG   r�   )r   r)   s   "€r   r   r�   ‡   s(   ø€ ÷ ñ ™"Ÿ(™(ð ©(±2·8±8Õ*<ñ r   c                óô   € \         P                  ! V P                  ^ R7      p\         P                  ! W1P                  ^ ,          ^ R7      pV P
                   F  pV! W1VR7      pK  	  V P                  V4      # )r   rL   r„   )r   Úexpand_dimsr…   Úrepeatr   r‘   r’   )r?   rE   rG   ÚhÚlayers   &&&  r   r_   Ú#Idefics2PerceiverResampler.__call__‡   sX   € ä�NŠN˜4Ÿ<™<¨aÔ0ˆÜ�IŠI�aŸ™ �¨!Ô,ˆà—[”[ˆEÙ�a Ô&ŠAñ !ð �y‰y˜‹|Ðr   )r1   r…   r‘   rs   r’   r‰   rb   rj   s   @@r   r‹   r‹   z   s    ù‡ € ÷
Vó 
V÷÷ ò r   r‹   c                   óD   a a€ ] tR t^’t oV 3R ltV3R lR ltRtVtV ;t# )r|   c                óÒ   <€ \         SV `  4        \        P                  ! WR R7      V n        \        P                  ! W#R R7      V n        \        P                  ! WR R7      V n        R# )Fr,   N)r.   r/   r9   r:   Ú	gate_projÚ	down_projÚup_proj)r?   r@   Ú
hidden_dimÚoutput_sizerB   s   &&&&€r   r/   ÚMLP.__init__“   sD   ø€ Ü‰ÑÔÜŸš 3¸Ô?ˆŒÜŸš :ÀÔGˆŒÜ—y’y °uÔ=ˆŽr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   rI   r   )r   r)   s   "€r   r   ÚMLP.__annotate__™   s   ø€ ÷ Lñ L™RŸX™Xñ Lr   c                ó–   € V P                  \        P                  ! V P                  V4      4      V P	                  V4      ,          4      # r‰   )rŸ   r9   Úsilurž   r    )r?   rE   s   &&r   r_   ÚMLP.__call__™   s0   € Ø�~‰~œbŸgšg d§n¡n°QÓ&7Ó8¸4¿<¹<È»?ÕJÓKÐKr   )rŸ   rž   r    rb   rj   s   @@r   r|   r|   ’   s   ù‡ € õ>÷L÷ Lð Lr   r|   c                   óT   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VtV ;t# )ÚIdefics2Connectorc                ó    <€ V ^8„  d   QhRS[ /# r'   r   )r   r)   s   "€r   r   ÚIdefics2Connector.__annotate__ž   s   ø€ ÷ Fñ F™{ñ Fr   c                óà   <€ \         SV `  4        \        VP                  P                  VP
                  P                  VP
                  P                  4      V n        \        V4      V n	        R # r‰   )
r.   r/   r|   Úvision_configr1   r0   Úintermediate_sizeÚmodality_projectionr‹   Úperceiver_resamplerr~   s   &&€r   r/   ÚIdefics2Connector.__init__ž   sW   ø€ Ü‰ÑÔÜ#&Ø× Ñ ×,Ñ,Ø×Ñ×0Ñ0Ø×Ñ×*Ñ*ó$
ˆÔ ô $>¸fÓ#EˆÖ r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   rE   rI   r   )r   r)   s   "€r   r   r¬   ¨   s#   ø€ ÷ ñ ™"Ÿ(™(ð ±"·(±(ñ r   c                óL   € V P                  V4      pV P                  WR 7      pV# rƒ   ©r°   r±   )r?   rE   rG   s   &&&r   r_   ÚIdefics2Connector.__call__¨   s*   € Ø×$Ñ$ QÓ'ˆØ×$Ñ$ QÐ$Ó2ˆØˆr   rµ   r‰   rb   rj   s   @@r   rª   rª   �   s    ù‡ € ÷Fó F÷÷ ò 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
R
tVtV ;t# )ÚModelc                ó    <€ V ^8„  d   QhRS[ /# r'   r   )r   r)   s   "€r   r   ÚModel.__annotate__¯   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	   r0   Úlanguage_modelrª   Ú	connectorr~   s   &&€r   r/   ÚModel.__init__¯   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º   ¸   s9   ø€ ÷ MJñ MJá™BŸH™HÕ%ðMJñ ™rŸx™xÕ(ñMJr   c                ó(  € 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fX   \        P                  ! VP                  ^ 4      VP                  ^4      VP                  ^4      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:rK   NNg        rL   .)Údtype:NNNÚcached_image_featuresT)Úpatch_attention_maskÚoutput_hidden_states)rO   rN   éýÿÿÿ)rO   rN   )Úgetr   r¾   Úembed_tokensr   r   r   ÚprodÚsumr   Útolistr   r�   ÚsizeÚboolr(   r®   Ú
patch_sizerQ   r½   ÚastyperÇ   r¿   Ú_prepare_inputs_for_multimodal)r?   rÂ   rÃ   ÚkwargsrÅ   rÆ   Ú
batch_sizeÚ
num_imagesÚnum_channelsÚheightÚwidthÚnb_values_per_imageÚreal_images_maskÚreal_images_indsrÓ   Ú	patches_hÚ	patches_wÚreshapedrÉ   ÚcachedÚimage_featuresÚpooler_outputr“   Úfinal_inputs_embedss   &&&,                    r   Úget_input_embeddingsÚModel.get_input_embeddings¸   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Ø×"Ñ" 1Ó% |×'8Ñ'8¸Ó';¸\×=NÑ=NÈqÓ=QÐRÜ—g‘gô$Ñ ð $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_indexrÏ   r   Úbroadcast_tor   rÑ   Ú
ValueErrorr#   )r?   rã   rÆ   rÂ   Ú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                óB   € V P                   P                  P                  # r‰   )r¾   Úmodelr‘   )r?   s   &r   r‘   ÚModel.layers  s   € à×"Ñ"×(Ñ(×/Ñ/Ð/r   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   rÂ   rÃ   rG   r   )r   r)   s   "€r   r   rº     s5   ø€ ÷ ñ á—8‘8ðñ —h‘hðñ �h‰hñ	r   c                óh   € V P                   ! W3/ VB pV P                  VVVP                  R 7      pV# ))ÚinputsrH   rÆ   )ræ   r¾   rÆ   )r?   rÂ   rÃ   rG   rH   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)r?   ÚweightsÚkÚvs   &&  r   ÚsanitizeÚModel.sanitize0  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(   r¿   r¾   r¼   r½   ra   r‰   )rc   rd   re   rf   r/   ræ   rÕ   Úpropertyr‘   r_   r  rg   rh   ri   rj   s   @@r   r¸   r¸   ®   sK   ù‡ € ÷3ó 3÷MJò MJò^ð& ñ0ó ð0÷ò ÷$ò r   r¸   )rý   Útypingr   r   Úmlx.coreÚcorer   Úmlx.nnr9   Únumpyr   Úbaser   Ú r   r(   r   Úlanguager	   Úvisionr
   r#   ÚModuler%   rl   r‹   r|   rª   r¸   © r   r   Ú<module>r     sŽ   ðÛ 	ß "å Ý Û å *Ý !Ý Ý #Ý õô*/# §¡ô /#ôd!˜RŸY™Yô !ôH §¡ô ô0Lˆ"�)‰)ô Lô˜Ÿ	™	ô ô"XˆB�I‰Iö Xr   