+
    UV-j‰&  ã                  ó^  € ^ 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t^ RIHt ^ RIHtHtHtHt ^ RIHtHt ^ R	IHtHt ^ R
IHtHtHt ^ RIH t  ^ RI!H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI'H(t( ]R,          t)]! RRR7       ! R R4      4       t* ! R R4      t+R R lt,R R lt-R R lt.R# )é    )ÚannotationsN)Ú	dataclass)ÚPath)ÚLiteral)ÚImage)ÚBonsaiVariantÚdefault_model_pathÚget_variantÚvalidate_dimensions)Údownload_modelÚvalidate_model_layout)ÚDEFAULT_QUANT_GROUP_SIZEÚ _require_native_quantized_matmul)Úload_text_encoder_4bitÚload_transformerÚload_vae)Úprepare_packed_latents)Úencode_prompt)ÚFlowMatchEulerDiscreteScheduler)ÚTilingConfig)ÚFlux2TokenizerT)ÚfrozenÚslotsc                  ó^   € ] tR t^%t$ RtR]R&   RtR]R&   RtR]R&   RtR]R	&   R
t	R]R&   Rt
R# )ÚBonsaiRuntimeConfigTÚboolÚevict_text_encoderFÚevict_transformerÚbucketed_seq_lenÚautoÚTiledVAEÚ	tiled_vaeé   ÚintÚmax_sequence_length© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r   r   r"   r%   Ú__static_attributes__r&   ó    Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/mlx_vlm/models/bonsai/pipeline.pyr   r   %   s8   ‡ à#Ð˜Ó#Ø#Ð�tÓ#Ø"Ð�dÓ"Ø €IˆxÓ Ø"Ð˜×"r-   r   c                  óø   € ] tR t^.tRRRR/R R llt]R)RRRRR	R
RRRR
RRRRRRRR/	R R lll4       tR^*R^RRRRRRRRRR/R R lltR^*R^RRRRRRRRRR/R R lltR  R! lt	R" R# lt
R$ R% ltR& R' ltR(tR# )*ÚBonsaiImageÚvariantÚternaryÚruntime_configNc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   r1   ústr | BonsaiVariantÚ
model_pathz
str | Pathr3   zBonsaiRuntimeConfig | NoneÚreturnÚNoner&   )Úformats   "r.   Ú__annotate__ÚBonsaiImage.__annotate__/   s4   € ÷ 8ñ 8ð %ð8ð ð	8ð
 3ð8ð 
ñ8r-   c               	óH  € \        V4      V n        \        V4      V n        T;'       g    \	        4       V n        \        V P                  4      V n        \        V P                  4      V n	        R V n
        R V n        / V n        \        V P                  P                  4       R # ©N)r
   r1   r   r7   r   r3   r   Ú	tokenizerr   Útext_encoderÚtransformerÚvaeÚprompt_cacheÚ_check_quantized_matmulÚ	precision)Úselfr1   r7   r3   s   &$$$r.   Ú__init__ÚBonsaiImage.__init__/   sz   € ô # 7Ó+ˆŒÜ/°
Ó;ˆŒØ,×EÐEÔ0CÓ0EˆÔÜ'¨¯©Ó8ˆŒÜ2°4·?±?ÓCˆÔØˆÔØˆŒØTVˆÔÜ §¡× 6Ñ 6Ö7r-   r7   Ú
models_dirÚdownloadTÚtokenr   r   Fr   r"   r    r%   r#   c               óD   € V ^8„  d   QhRRRRRRRRRR	R
RRRRRRRRRRR/# )r5   r1   r6   r7   zstr | Path | NonerI   rJ   r   rK   z
str | Noner   r   r   r"   r!   r%   r$   r8   z'BonsaiImage'r&   )r:   s   "r.   r;   r<   A   s…   € ÷ Oñ Oà$ðOð &ð	Oð
 &ðOð ðOð ðOð !ðOð  ðOð ðOð ðOð !ðOð 
ñOr-   c       	        	ó–   € \        V4      pVf"   V'       d   \        W³VR7      pM\        W³4      p\        VVVV	V
R7      pV ! W²VR7      # )N)rI   rK   )r   r   r   r"   r%   )r1   r7   r3   )r
   r   r	   r   )Úclsr1   r7   rI   rJ   rK   r   r   r   r"   r%   ÚspecÚconfigs   &&$$$$$$$$$  r.   Úfrom_pretrainedÚBonsaiImage.from_pretrained@   sU   € ô ˜7Ó#ˆØÒßÜ+¨DÈuÔU‘
ä/°ÓA�
Ü$Ø1Ø/Ø-ØØ 3ô
ˆñ ˜4ÀvÔNÐNr-   ÚseedÚstepsÚwidthÚheightÚguidanceç      ð?c               ó<   € V ^8„  d   QhRRRRRRRRRRRR	R
RRRRR/	# )r5   ÚpromptÚstrrS   r$   rT   rU   rV   rW   Úfloatr%   ú
int | Noner"   úbool | Noner8   úImage.Imager&   )r:   s   "r.   r;   r<   ^   sd   € ÷ 
ñ 
àð
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð (ð
ð ð
ð 
ñ
r-   c               	óF   € \        V P                  VVVVVVVVR 7      4      # ))rS   rT   rU   rV   rW   r%   r"   )Ú_to_pilÚgenerate_array)	rF   rZ   rS   rT   rU   rV   rW   r%   r"   s	   &&$$$$$$$r.   ÚgenerateÚBonsaiImage.generate^   s<   € ô Ø×ÑØØØØØØ!Ø$7Ø#ð  ó 	ó
ð 	
r-   c               ó<   € V ^8„  d   QhRRRRRRRRRRRR	R
RRRRR/	# )r5   rZ   r[   rS   r$   rT   rU   rV   rW   r\   r%   r]   r"   r^   r8   úmx.arrayr&   )r:   s   "r.   r;   r<   w   so   € ÷ M(ñ M(àðM(ð ð	M(ð
 ðM(ð ðM(ð ðM(ð ðM(ð (ðM(ð ðM(ð 
ñM(r-   c          
     	óš  € \        WER 7       V^8  d   \        RV 24      hV'       g   \        R4      hT;'       g    V P                  P                  p	V P	                  WR7      w  r«RpRpVe   VR8”  d   V P	                  RV	R7      w  rÍV P                  4        \        VVVR7      w  rïpp\        V^,          V^,          ,          VR7      pV P                  p\        V4       FŠ  pV! VVV
VVVP                  V,          R	7      pVe;   Ve7   V! VVVVVVP                  V,          R	7      pVVVV,
          ,          ,           pVP                  VVVR
7      p\        P                  ! V4       KŒ  	  VP                  VP                  ^ ,          VVVP                  R,          4      pVP!                  ^ ^^^4      pV P"                  P%                  VV P'                  WTVR7      R7      pV P                  P(                  '       d9   RV n        RV n        \,        P.                  ! 4        \        P0                  ! 4        \3        V4      # ))rU   rV   zsteps must be >= 1, got zprompt must not be empty)r%   NrX   Ú )rS   rV   rU   )Úimage_seq_lenÚnum_inference_steps)ÚlatentsÚ
latent_idsÚprompt_embedsÚtext_idsrW   Útimestep)ÚnoiseÚ
step_indexrk   )rV   rU   Úoverride)Útiling_configéÿÿÿÿ)r   Ú
ValueErrorr3   r%   Ú_encode_promptÚ_ensure_transformer_and_vaer   r   Ú_predictÚrangeÚ	timestepsÚstepÚmxÚevalÚreshapeÚshapeÚ	transposerB   Údecode_packed_latentsÚ_resolve_tilingr   rA   ÚgcÚcollectÚclear_cacheÚ_to_image_array)rF   rZ   rS   rT   rU   rV   rW   r%   r"   Úmax_seqrm   rn   Únegative_prompt_embedsÚnegative_text_idsrk   rl   Úlatent_heightÚlatent_widthÚ	schedulerÚpredictÚirp   Únegative_noiseÚpackedÚdecodeds   &&$$$$$$$                r.   rb   ÚBonsaiImage.generate_arrayw   sL  € ô 	 %Õ7Ø�1Œ9ÜÐ7¸°wÐ?Ó@Ð@ßÜÐ7Ó8Ð8à%×PÐP¨×)<Ñ)<×)PÑ)PˆØ"&×"5Ñ"5Øð #6ó #
Ñˆð "&ÐØ ÐØÒ H¨s¤NØ8<×8KÑ8KØ¨ð 9Ló 9Ñ5Ð"ð 	×(Ñ(Ô*ä;QØØØô<
Ñ8ˆ˜]¨Lô
 4Ø! R�<¨E°R­KÕ8Ø %ô
ˆ	ð —-‘-ˆÜ�u–ˆAÙØØ%Ø+Ø!Ø!Ø"×,Ñ,¨QÕ/ôˆEð &Ò1Ð6GÒ6SÙ!(Ø#Ø)Ø"8Ø.Ø%Ø&×0Ñ0°Õ3ô"�ð '¨°U¸^Õ5KÕ)LÕL�Ø—n‘n¨5¸QÈ�nÓPˆGÜ�GŠG�GÖñ) ð, —‘Ø�M‰M˜!Õ˜m¨\¸7¿=¹=ÈÕ;Ló
ˆð ×!Ñ! ! Q¨¨1Ó-ˆØ—(‘(×0Ñ0ØØ×.Ñ.Ø°Yð /ó ð 1ó 
ˆð ×Ñ×0×0Ð0Ø#ˆDÔØˆDŒHÜ�JŠJŒLÜ�NŠNÔÜ˜wÓ'Ð'r-   c               ó$   € V ^8„  d   QhRRRRRR/# )r5   rZ   r[   r%   r$   r8   ztuple[mx.array, mx.array]r&   )r:   s   "r.   r;   r<   Æ   s$   € ÷  ñ  Øð Ø36ð à	"ñ r-   c               	ó$  € WV P                   P                  3pV P                  P                  V4      pVe   V# V P                  f   \        V P                  4      V n        \        VV P                  V P                  VV P                   P                  R7      w  rV\        P                  ! WV4       WV3V P                  V&   V P                   P                  '       d2   R V n        \        P                  ! 4        \        P                  ! 4        WV3# )N)rZ   r?   r@   r%   Úbucketed)r3   r   rC   Úgetr@   r   r7   r   r?   r|   r}   r   rƒ   r„   r…   )rF   rZ   r%   ÚkeyÚcachedÚembedsrn   s   &&$    r.   rv   ÚBonsaiImage._encode_promptÆ   sá   € ð ¨D×,?Ñ,?×,PÑ,PÐQˆØ×"Ñ"×&Ñ& sÓ+ˆØÒØˆMØ×ÑÒ$Ü 6°t·±Ó GˆDÔÜ(ØØ—n‘nØ×*Ñ*Ø 3Ø×(Ñ(×9Ñ9ô
Ñˆô 	�Š�Ô!Ø"(Ð!3ˆ×Ñ˜#ÑØ×Ñ×1×1Ð1Ø $ˆDÔÜ�JŠJŒLÜ�NŠNÔØÐÐr-   c               ó   € V ^8„  d   QhRR/# )r5   r8   r9   r&   )r:   s   "r.   r;   r<   Þ   s   € ÷ "ñ "¨Tñ "r-   c                	ó¾   € V P                   f0   \        V P                  V P                  P                  4      V n         V P
                  f   \        4       V n        R # R # r>   )rA   r   r7   r1   rE   rB   r   )rF   s   &r.   rw   Ú'BonsaiImage._ensure_transformer_and_vaeÞ   sC   € Ø×ÑÒ#Ü/°·±ÀÇÁ×AWÑAWÓXˆDÔØ�8‰8ÒÜ“zˆDŽHñ r-   c               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R/# )
r5   rk   rf   rl   rm   rn   rW   r\   ro   r8   r&   )r:   s   "r.   r;   r<   ä   sR   € ÷ 
ñ 
ð ð
ð ð	
ð
  ð
ð ð
ð ð
ð ð
ð 
ñ
r-   c          	     	ó0   € V P                  VVVVVR R7      # )N)Úhidden_statesÚencoder_hidden_statesro   Úimg_idsÚtxt_idsrW   )rA   )rF   rk   rl   rm   rn   rW   ro   s   &$$$$$$r.   rx   ÚBonsaiImage._predictä   s.   € ð ×ÑØ!Ø"/ØØØØð  ó 
ð 	
r-   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r5   rV   r$   rU   rr   r^   r8   zTilingConfig | Noner&   )r:   s   "r.   r;   r<   ÷   s,   € ÷ 
ñ 
Øð
Ø%(ð
Ø4?ð
à	ñ
r-   c               	óü   € VR J d   \        4       # VRJ d   R# V P                  P                  pVR8X  d   \        4       # VR8X  d   R# \        W4      ^\        4       P                  ,          8¼  d   \        4       # R# )TFNÚonÚoff)r   r3   r"   ÚmaxÚvae_decode_tile_size)rF   rV   rU   rr   Úmodes   &$$$ r.   r‚   ÚBonsaiImage._resolve_tiling÷   s{   € ð �tÓÜ“>Ð!Ø�uÓÙØ×"Ñ"×,Ñ,ˆØ�4Œ<Ü“>Ð!Ø�5Œ=Ùô �6Ó! Q¬«×)LÑ)LÕ%LÔLô ‹Nð	
ð ð	
r-   )r7   rC   r3   r@   r?   rA   rB   r1   )r2   )r'   r(   r)   r*   rG   ÚclassmethodrQ   rc   rb   rv   rw   rx   r‚   r,   r&   r-   r.   r0   r0   .   sL  † ð8ð (1ð8ð
 6:÷8ð" ñOð )-ð	Oð
 )-ðOð ðOð !ðOð $(ðOð #(ðOð "'ðOð %ðOð $'÷Oó ðOð:
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð +/ð
ð "&÷
ð2M(ð ð	M(ð
 ðM(ð ðM(ð ðM(ð ðM(ð +/ðM(ð "&÷M(õ^ õ0"õ
÷&
ñ 
r-   r0   c               ó    € V ^8„  d   QhRRRR/# )r5   Údecoded_latentsrf   r8   r&   )r:   s   "r.   r;   r;   
  s   € ÷ ñ  Xð °(ñ r-   c                ó`  € \         P                  ! V ^,          R,           ^ ^4      p\         P                  ! VR4      P                  \         P                  4      pV^ÿ,          P                  4       P                  \         P                  4      pV^ ,          p\         P                  ! V4       V# )r5   g      à?)r   r5   é   é   )r|   Úclipr€   ÚastypeÚfloat32ÚroundÚuint8r}   )r¯   ÚimagesÚimages   &  r.   r†   r†   
  sw   € Ü�WŠW�_ qÕ(¨3Õ.°°1Ó5€FÜ�\Š\˜& ,Ó/×6Ñ6´r·z±zÓB€FØ�s�l×!Ñ!Ó#×*Ñ*¬2¯8©8Ó4€FØ�1�I€EÜ‡G‚GˆE„NØ€Lr-   c               ó    € V ^8„  d   QhRRRR/# )r5   Úimage_arrayrf   r8   r_   r&   )r:   s   "r.   r;   r;     s   € ÷ "ñ "˜ð " kñ "r-   c                óZ   € \         P                  ! V 4      p\        P                  ! V4      # r>   )ÚnpÚarrayr   Ú	fromarray)r»   r¾   s   & r.   ra   ra     s   € Ü�HŠH�[Ó!€EÜ�?Š?˜5Ó!Ð!r-   c               ó    € V ^8„  d   QhRRRR/# )r5   rE   r[   r8   r9   r&   )r:   s   "r.   r;   r;     s   € ÷ ñ  sð ¨tñ r-   c                ó¢   € V R 8X  d   ^M
V R8X  d   ^MRpVf   R#  \        V\        4       R#   \         d   p\        RT  R24      ThRp?ii ; i)Ú1bitÚ2bitNz6The installed MLX runtime does not support the Bonsai zx quantized matmul path. Use the PrismML MLX revision pinned by the original demo, or another MLX build with this kernel.)r   r   Ú	ExceptionÚRuntimeError)rE   ÚbitsÚexcs   &  r.   rD   rD     sg   € Ø˜VÔ#‰1¨i¸6Ô.A©Àt€DØ‚|ÙðÜ(¨Ô/GÖHøÜô ÜØDØˆkð RðRó
ð ð		ûðús   œ. ®A¹A	Á	A)r    r§   r¨   )/Ú
__future__r   rƒ   Údataclassesr   Úpathlibr   Útypingr   Úmlx.coreÚcorer|   Únumpyr½   ÚPILr   Úmlx_vlm.models.bonsai.configr   r	   r
   r   Úmlx_vlm.models.bonsai.downloadr   r   Ú'mlx_vlm.models.bonsai.klein_fast.blocksr   r   Úmlx_vlm.models.bonsai.weightsr   r   r   Úmlx_vlm.models.flux2.latentr   Úmlx_vlm.models.flux2.promptr   Úmlx_vlm.models.flux2.schedulerr   Úmlx_vlm.models.flux2.tilingr   Úmlx_vlm.models.flux2.tokenizerr   r!   r   r0   r†   ra   rD   r&   r-   r.   Ú<module>rÙ      s”   ðÝ "ã 	Ý !Ý Ý å Û Ý ÷ó ÷ Q÷÷ñ õ
 ?Ý 5Ý JÝ 4Ý 9àÐ&Õ'€ñ �$˜dÔ#÷#ð #ó $ð#÷Y
ñ Y
õxõ"÷
r-   