Model reference · open weights

iris

Image speridlabs Text→image 1 build Open weights 706 dl/mo

iris is an open-weight image model from speridlabs. iris-3b (FP32) weighs 6.0 GB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • Iris-3B is a 3.0B parameter text-to-image model developed by speridlabs that generates 1024-pixel images directly in pixel space without using a latent decoder.
  • It also supports monocular depth estimation and image restoration tasks, and it is released under the Apache 2.0 license.

Summary of the speridlabs/iris-3b model card, 2026-10-13

What it is

Released bysperidlabs
Released2026-10-05
Parameters3.0B
VRAM6.0 GB for the weights

What it runs on

Memory and cards for iris-3b (FP32)

6.0 GBweights, file size
5.0 GBworking memory, one 1024² image
537 MBruntime overhead
CardOne imageMemory
RTX 3060 12 GBtight11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What speridlabs says about iris

Read the model card

Generative priors are a promising foundation for downstream vision tasks. In this project we explore pixel-space generative models as an alternative to vision foundation models such as DINOv2.

Most image generators work in a compressed "latent" space and rely on a separate decoder to turn that into an image. Iris-3B skips that step: the network itself outputs every pixel, so nothing is lost to a lossy, texture-biased latent. You type a prompt, and you get a 1024-pixel image.

Iris-3B is not only an image generator. The same pixel-space prior, fine-tuned with no architectural change, is a general vision learner for dense tasks where detail matters: monocular depth estimation and image restoration and upscaling ship in this repo (see A general vision learner below).

Iris-3B Turbo, in the turbo/ folder, is a 4-step distilled version of Iris-3B: a 1024×1024 image in about 0.7 s on one H100.

Examples

Generated at native aspect ratios of about one megapixel with the default settings (CFG 3, 100 steps).

Get started

1. Install the code

git clone https://github.com/speridlabs/iris-3b.git
cd iris-3b
pip install -e .          # Python 3.11+, PyTorch 2.7.1+

2. Download the weights (about 12 GB for text-to-image; the depth/ and upscaler/ folders add about 12 GB each, turbo/ about 6 GB)

hf download speridlabs/iris-3b --local-dir iris-3b --exclude "depth/*" "upscaler/*" "turbo/*"

3. Generate an image

python scripts/sample.py --checkpoint iris-3b \
    --prompt "a red fox sleeping in fresh snow, golden hour"

The text encoder (Qwen3-VL-4B-Instruct) downloads automatically on the first run. You need an NVIDIA GPU with CUDA.

Tips

SettingDefaultWhat it does
--cfg-scale3How strictly the image follows the prompt. Higher values follow the prompt more literally but can look harsher.
--steps100Number of denoising steps. Fewer steps are faster but lose some detail.
--seed—Fix it to get the same image again.
--negative-prompt—Things you don't want in the image.
--txt-file—A text file with one prompt per line, for batches.

Default output is 1024×1024. Write prompts as plain descriptive English sentences.

Iris-3B Turbo

Iris-3B Turbo, in the turbo/ folder of this repo, is a 4-step distilled version of Iris-3B. Classifier-free guidance is baked into the weights, so each step is a single forward pass; a 1024×1024 image takes about 0.7 s on one H100 (batch 4). It is a full fine-tune of all 3B parameters, not a LoRA. Try it in the Turbo demo.

With the code installed (step 1 above):

hf download speridlabs/iris-3b --include "turbo/*" --local-dir iris-3b    # about 6 GB
python scripts/sample.py --checkpoint iris-3b/turbo \
    --prompt "a red fox sleeping in fresh snow, golden hour"

The script reads the 4-step schedule from turbo/distill.yaml (σ = 1, 0.938, 0.833, 0.625, deterministic flow-Euler steps) and samples without CFG. The schedule is part of the model: --steps, --cfg-scale and --negative-prompt do not apply, while the prompt, --height, --width and --seed do. Turbo was distilled at about one megapixel in 7 aspect buckets: 1024×1024, 752×1344, 896×1344, 896×1200 and their transposes. The image above was generated on an H100 with --seed 6 and the prompt Colorful animated cartoon poster: a smiling shiba inu in aviator sunglasses behind the wheel of a low futuristic supercar, dynamic angle, neon sunset sky, with big bold vector lettering "IRIS TURBO" in the sky.

Benchmarks

ModelGenEvalDPG-BenchLongText-Bench (EN)OneIG-Bench (EN)
Iris-3B0.79886.520.8570.540
Iris-3B Turbo0.82086.680.8040.516
iris-3b-turbo-lora r2-10000.76085.050.7330.486
OneIG-Bench (EN)AlignmentTextReasoningStyleDiversity
Iris-3B0.8630.8890.2790.4490.220
Iris-3B Turbo0.8620.8480.2830.4330.154
iris-3b-turbo-lora r2-10000.8510.7210.2580.4450.153

All models at 1024×1024 with the official scorers and the same prompts and seeds; Iris-3B with its default sampling settings. The community adapter was run with its recommended settings through its own code. Turbo is slightly ahead of the base model on prompt following (GenEval, DPG-Bench) and behind it on long rendered text and on OneIG-Bench, where the gap is mostly text and diversity.

Training recipe

Turbo is distilled from Iris-3B with Trajectory Distribution Matching (TDM), data-free, as a full fine-tune of all 3B parameters in two stages. The trainer and both configs are in the code repository (scripts/distill.py).

Stage 1Stage 2 (released)
Steps (σ)6 (1, 0.926, 0.833, 0.714, 0.556, 0.333)4 (1, 0.938, 0.833, 0.625)
InitializationIris-3Bstudent: stage-1 EMA; fake network: stage 1
Student updates1,600500
Global batch6416
Student / fake-network LR1e-6 / 5e-62.5e-7 / 2.5e-6
EMA decay0.9990.9995
Prompts~981K~1.19M
  • Networks: frozen Iris-3B teacher, the student and a "fake" score network trained online on the student's outputs; deterministic flow-Euler step transitions.
  • Guidance: CFG 3.5 (empty negative prompt) baked into the teacher target; the student samples without CFG.
  • Optimizer: AdamW, betas (0, 0.999), weight decay 0, gradient clipping 1.0, constant LR, one fake update per student update.
  • Precision: FP32 weights under BF16 autocast.
  • Resolution: about 1 MP in 7 aspect buckets, one per global batch: 1024×1024, 752×1344, 896×1344, 896×1200 and their transp

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

How it works

How image models work

Text promptwhat to makeText encoderunderstands itDiffusion stepsdenoise to pixelsImagePNG / JPEGA diffusion model starts from noise and denoises it, guided by your prompt, into a finished image.

Running it yourself

Run it on a rented GPU

Rent a machine by the hour. ComfyUI is installed on it. Open ComfyUI through the tunnel and load the workflow from the model's card on Hugging Face; choose this model's file in its loader.

# on your rented machine (the ssh line is on its page in the console)
# get REPO FILE FOLDER: one file into /workspace/models/FOLDER, where ComfyUI loads it from
get() { hf download "$1" "$2" --local-dir /workspace/hf-files && mkdir -p "/workspace/models/$3" && mv "/workspace/hf-files/$2" "/workspace/models/$3/$4"; }

# the model (11.1 GB)
get speridlabs/iris-3b model.safetensors diffusion_models

start-comfyui
Renting a GPU: connect, tunnels, ComfyUI
# on your computer, in a second terminal: ComfyUI in your browser at http://localhost:8188
# HOST, PORT and BOOKING are your machine's, from its page in the console
ssh -o HostKeyAlias=axforge-BOOKING -o StrictHostKeyChecking=accept-new -L 8188:localhost:8188 dev@HOST -p PORT
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms