Nodes/Iris-3B/Iris Sampler (Simple)
ComfyUI Node

Iris Sampler (Simple)

Six dropdowns, and one of them is a hidden 3x tax

By bani4kaskashka·Created 22 days ago·Updated 21 days ago· 13
Iris Sampler (Simple)
  • model
  • conditioning
  • image
  • IMAGE
◄modetext to image►
◄resolution1:1 square (1024x1024)►
◄qualityfast (30 steps)►
◄prompt_adherencenormal (cfg 3)►
◄image_strengthmedium (denoise 0.5)►
◄seed0►
◄batch_size1►

This is the node most people should be using. Iris Sampler (Simple) is the whole text-to-image pipeline wrapped in six presets: pick an aspect ratio, pick how hard to try, hit run. It's what the Simple and Image-to-Image example workflows ship with, and it's the right first stop before you go near the Advanced version.

What it's doing under the presets

Underneath, this is DPM-Solver++ running on a flow-matching schedule - the same solver family every current DiT uses, and the reason you don't get a Karras/scheduler dropdown here. Flow models have a straight path from noise to image and a shift parameter instead; the pack hard-codes the shift at 4, which is what the model was trained with. There's no VAE at the end of this, either. Iris predicts pixels, so the sampler hands you an IMAGE directly. No decode step, no colour-shift mystery, no VAE to swap.

The presets map to real numbers:

  • quality - fast is 30 steps, balanced is 50, best is 100. The model card default is 100, and the author notes it's roughly 3x slower than fast. Start at fast. On the author's reference card a fast 30-step 1 MP image was about 54 seconds.
  • prompt_adherence - loose is CFG 2, normal is CFG 3, strict is CFG 4.5. normal is the model card value. Unlike the distilled checkpoints that have eaten CFG as a parameter, this model genuinely uses guidance, so this dial does something.
  • resolution - eleven options from 21:9 through 9:21, all about 1 MP, plus match input image. Iris was fine-tuned at around one megapixel, so these aren't arbitrary: go much past it and you're generating at a size the model didn't learn.
  • image_strength - subtle / medium / strong, i.e. denoise 0.3 / 0.5 / 0.7. Only does anything in image-to-image mode.

seed is the usual 64-bit integer, and batch_size is images per run, 1 to 8.

The inputs and outputs that matter

model comes from Load Iris-3B Model, optionally via Load Iris LoRA. If that model has the Turbo LoRA attached, this node will refuse to run and tell you to use Iris Sampler (Turbo) instead - the Turbo LoRA bakes guidance in and this sampler would apply it twice.

conditioning comes from Iris Text Encode.

mode has two values: text to image and image to image. On image to image you also have to connect the optional image input, and the input gets scaled and centre-cropped to your chosen resolution - unless you picked match input image, which keeps the aspect ratio at about 1 MP. Same step count, same time as a text-to-image run.

The output is one IMAGE. Wire it to Save Image, or to Iris Upscale, or to anything else that eats an image.

Install

ComfyUI-Manager, search Iris-3B, or:

cd ComfyUI/custom_nodes
git clone https://github.com/bani4kaskashka/Iris-3B-Comfy-Nodes
pip install -r requirements.txt

The only extra package is omegaconf. Then restart ComfyUI and open Iris-3B Text to Image (Simple) from Templates - the shipped workflow ends with a 4x upscale group that's bypassed by default, so select it and hit Ctrl+B if you want it.

Where it goes wrong

"image to image needs an image connected to the sampler." You set the mode but left the image jack empty. The node tells you this in plain words, which is more than most packs manage.

It's slow and you don't know why. Check quality. best (100 steps) is a 3x tax over fast (30 steps) and on a 30-step model the visual difference is much smaller than the time difference.

"this model has a Turbo LoRA attached." Rewire to Iris Sampler (Turbo), or drop the Turbo LoRA. You can't mix the two paths in one run - though the model itself is untouched, so switching back and forth costs you nothing but a graph edit.

AMD users, this one's for you: start ComfyUI the normal way through main.py. That's what turns on the AOTriton flash-attention kernels; without them, attention falls back to a path that is genuinely much slower.

CategoryIris-3B

Inputs (10)

NameTypeDefaultDescription
modelIRIS_MODEL—
conditioningIRIS_CONDITIONING—
modeCOMBOtext to imageimage to image starts from the connected image instead of pure noise
resolutionCOMBO1:1 square (1024x1024)in image to image the input is cropped to this size, or keeps its own aspect ratio with match input image
qualityCOMBOfast (30 steps)100 steps is the model card default, about 3x slower than fast
prompt_adherenceCOMBOnormal (cfg 3)how strictly the image follows the prompt
image_strengthCOMBOmedium (denoise 0.5)image to image only: how much the image may change
seedINT00–18446744073709550000—
batch_sizeINT11–8images per run
imageoptIMAGEsource for image to image (ignored in text to image)

Outputs (1)

NameTypeDescription
IMAGEIMAGE—