Emu 3.5 T2I Sampler V2
The daily driver for text-to-image on Emu
- model
- tokenizer
- vq_model
- image
- text_response
- reasoning
This is the node you'll actually use. Emu 3.5 T2I Sampler V2 is the pack's flagship text-to-image generator - the V2 rewrite of the original sampler with the two things that make Emu usable day-to-day: separate sampling knobs for text and image tokens, and tiled decoding so large images stop OOMing smaller cards.
Quick reality check on what "sampling" means here, because it changes how you think about the controls. Emu 3.5 is a native autoregressive multimodal model, not a diffusion model. It doesn't denoise latents over K steps; it predicts the next token, one at a time, over a unified token space where image content is a sequence of visual tokens from a VQ-VAE codebook. So "generation" is a single long rollout - text tokens, then image tokens, until the end-of-image marker - and every knob below shapes that rollout. It's also why it's slow: a 1024x1024 is about 4,000 image tokens, and even a 96GB Blackwell card manages only ~5 tokens per second. Budget over ten minutes per image and let it run.
The inputs that matter
- prompt - natural language; Emu rewards detailed descriptions.
- aspect_ratio -
1:1,4:3,3:4,16:9,9:16,3:2,2:3,21:9,9:21. Picks the token-grid size (1:1 = 64x64 latents = 1024x1024; 16:9 = 752x1360, etc.). - cfg_scale - guidance, default 5.0, applied via the logits processor against an unconditional prompt.
- seed - fixed for reproducibility.
The optional sampling controls are where V2 earns its keep:
- image_top_k (default 5120) and image_temperature (1.0) - how the visual tokens get sampled. The model was trained with image_top_k around 5120; raising temperature adds variety, lowering it tightens up coherence.
- text_top_k (1024) and text_temperature (1.0) - same idea for the text/planning tokens the model emits around the image.
- tiled_decode (default off) and tile_size (32) - decode the visual token stream in tiles instead of one big grid. Slightly slower, but it's the lever that keeps 1024x1024 outputs alive on 24GB cards.
Outputs
- image (
IMAGE) - the render. Wire to a preview or Save Image. - text_response (
STRING) - any text the model generated alongside the image. - reasoning (
STRING) - chain-of-thought when present.
Install
cd ComfyUI/custom_nodes
git clone --recursive https://github.com/EricRollei/Emu35-Comfyui-Nodes.git emu35
cd emu35
pip install -r requirements.txt
Models in ComfyUI/models/emu35/: BAAI/Emu3.5-Image (34B) plus BAAI/Emu3.5-VisionTokenizer, or wikeeyang/Emu35-Image-NF4 for the 24GB path. Feed it from Emu 3.5 Loader V2 - that combination (V2 loader + V2 sampler) is the pack's recommended pipeline, and the loader's eager attention default matters on Blackwell GPUs.
The 24GB survival guide
On a single 4090 with NF4 weights, the community recipe is: keep the VQ model on CPU (Loader V2 vq_device=cpu), run a Memory Manager on clear_cache between jobs, enable tiled_decode for anything above 512x512, and launch ComfyUI with --lowvram plus --reserved-vram tuned upward. Expect roughly 19 minutes for a 512x512. Slow? Yes. But that's the price of running a 34B autoregressive image model on a consumer card - and it does work.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | EMU_MODEL | — | |
| tokenizer | EMU_TOKENIZER | — | |
| vq_model | EMU_VQ | — | |
| prompt | STRING | A beautiful sunset over mountains | — |
| aspect_ratio | COMBO | 9 options: 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, +3 | |
| cfg_scale | FLOAT | 5.01–20 | — |
| seed | INT | 00–18446744073709550000 | — |
| image_top_kopt | INT | 5120100–131072 | — |
| image_temperatureopt | FLOAT | 1.00.1–2 | — |
| text_top_kopt | INT | 1024100–10000 | — |
| text_temperatureopt | FLOAT | 1.00.1–2 | — |
| tiled_decodeopt | BOOLEAN | false | — |
| tile_sizeopt | INT | 3216–64 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| text_response | STRING | — |
| reasoning | STRING | — |