IF Stage I
A ComfyUI node in Zuellni/IF with 9 inputs and 1 output.
- model
- positive
- negative
- IMAGES
Here's the DeepFloyd IF reality check: Stage I generates a 64×64 image. That's the native output resolution, and it looks like a postage stamp. Don't panic - that's by design. DeepFloyd works in pixel space, so Stage I's tiny output is a real RGB image (not latents), and the whole point of the pipeline is that Stage II and III turn that stamp into a 1K picture. If you're coming from Stable Diffusion where the sampler spits out a finished 512/1024 image, this node will feel wrong until you understand the cascade.
What it is
IF Stage I is the text-to-image engine of the IF stack. It takes the T5 embeddings from IF Encode and the model from IF Load Stage I, runs the diffusion process in pixel space, and returns IMAGES. Those images are meant to feed IF Stage II, but there's nothing stopping you from saving the 64×64 thumbnails directly - some people run Stage I as a fast "composition sketch" step and then throw away the pipeline, treating it like a prompt-to-layout tool.
The inputs that matter
| Input | Default | What it does |
|---|---|---|
| width / height | 64 / 64 | 8–128, step 8. Stage I's sweet spot is small; pushing past 64 costs quality and time. |
| batch_size | 1 | 1–64. Each batch entry costs a full diffusion run, so don't set 8 to "save time" - you won't. |
| seed | 0 | Standard. |
| steps | 20 | 1–10000. 20 is a good floor for this model; 30–40 if you want stability on hard prompts. |
| cfg | 8.0 | DeepFloyd likes the 7–8 band. Below ~5 it ignores your prompt; above ~12 it burns. |
Plus the three wire-in sockets: model (S1_MODEL), positive (POSITIVE), negative (NEGATIVE). No VAE, no CLIP, no KSampler - the node does the whole diffusion internally.
How it works
Under the hood it calls the diffusers pipeline with your embeddings, guidance_scale=cfg, and a ComfyUI progress bar, then normalizes the raw output tensor to [0,1] and converts it to the standard IMAGE format. One detail worth knowing: it passes num_images_per_prompt=batch_size, so batch is built inside the diffusion call rather than by repeating the prompt - every image in the batch gets its own sampling run, seeded from the same seed.
The workflow reality
Stage I is the slow, VRAM-hungry heart of the pipeline. The full chain is Stage I → Stage II → Stage III, and each stage is a separate diffusion pass, so a single final image costs three full generations. On a 12GB card with offloading you're looking at minutes per image. This is not a "generate 20 in a loop" workflow - budget accordingly, and use Image Batch or manual batching to amortize.
Install and the usual IF caveats
Part of Zuellni/ComfyUI-Custom-Nodes - Manager (search "Zuellni") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Zuellni/ComfyUI-Custom-Nodes
Requirements: diffusers, accelerate, transformers, sentencepiece, bitsandbytes. You need the HF token (gated model, accept terms, huggingface-cli login). And the pack is archived - the author's README calls IF "a lot of issues," so treat this as working but unmaintained code. If Stage I errors on load, check your diffusers version and your token before anything else.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | S1_MODEL | — | |
| positive | POSITIVE | — | |
| negative | NEGATIVE | — | |
| width | INT | 648–128 | — |
| height | INT | 648–128 | — |
| batch_size | INT | 11–64 | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.000–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGES | IMAGE | — |