Sakura — Iris-3B (GGUF)
Community quantization of speridlabs/iris-3b (3 B parameter pixel-space diffusion transformer, no VAE) for stable-diffusion.cpp, used with the official Qwen3-VL-4B-Instruct text encoder. Independent work, not made or endorsed by speridlabs or Alibaba/Qwen. Apache-2.0.
Sample generations
Image model Q8_0 (Sakura-Iris-3B-Q8_0-4.15GiB.gguf) and the official Qwen3-VL-4B-Instruct Q8_0 text encoder, stable-diffusion.cpp (Vulkan, Radeon 8060S), 1024x1024, 30 steps, CFG 3, dpm++2m. One seed per prompt, all nine prompts are shown, no re-rolls and no selection. About 213 to 738 s per image including model loading (the spread comes from other jobs running on the same GPU; the fastest image is the undisturbed one); the whole-GPU memory counter peaked at 29.7 GiB while generating (other jobs were running on the same GPU, so this is an upper bound). The images were made with stable-diffusion.cpp.
The same nine prompts and seeds are used in the sibling repository Sakura-Iris-3B-Uncensored-GGUF with our abliterated encoder, so the two sets can be compared. Seeds 1202, 1302, 1305, 1306, 1105, 1103, 1503, 1506, 1406 in the order shown; the prompts are the captions of the images above.
What you need to run it
Iris-3B has no VAE: do not pass --vae.
| Part | 🟦 stable-diffusion.cpp | 🟧 ComfyUI |
|---|---|---|
| Image model (pick one) | Sakura-Iris-3B-Q8_0-4.15GiB.gguf (best), Sakura-Iris-3B-Q6_K-3.66GiB.gguf, Sakura-Iris-3B-Q5_K_M-3.40GiB.gguf or Sakura-Iris-3B-Q4_K_M-3.14GiB.gguf (smallest), passed with --diffusion-model |
not tested. ComfyUI has no native Iris support (checked 2026-10-11). Our GGUF files carry no general.architecture tag and use the original Iris tensor names; the third-party node RealRebelAI/ComfyUI-Iris-3B expects the tag iris (or wan), so these files will most likely not load there. We did not run that node. |
| Text encoder | the official Qwen/Qwen3-VL-4B-Instruct-GGUF, file Qwen3VL-4B-Instruct-Q8_0.gguf (3.99 GiB, recommended) or Qwen3VL-4B-Instruct-Q4_K_M.gguf, passed with --llm; not included in this repository |
the original Hugging Face folder Qwen/Qwen3-VL-4B-Instruct (the original Iris code downloads it by itself) |
| VAE | none (pixel space) | none |
| Program | sd-cli / sd-server of stable-diffusion.cpp master with Iris support (since commit f89d9b1, 2026-10-10; we used release master-956-1b0ba10, Vulkan), not included |
– |
An abliterated text encoder for the same image models is in Sakura-Iris-3B-Uncensored-GGUF.
Files
| File | Size | What it is |
|---|---|---|
Sakura-Iris-3B-Q8_0-4.15GiB.gguf |
4.15 GiB | image model (DiT), Q8_0 |
Sakura-Iris-3B-Q6_K-3.66GiB.gguf |
3.66 GiB | image model (DiT), Q6_K |
Sakura-Iris-3B-Q5_K_M-3.40GiB.gguf |
3.40 GiB | image model (DiT), Q5_K (file name carries the standard label Q5_K_M so the Hub recognises it) |
Sakura-Iris-3B-Q4_K_M-3.14GiB.gguf |
3.14 GiB | image model (DiT), Q4_K (file name carries the standard label Q4_K_M) |
SHA256SUMS, LICENSE, NOTICE |
checksums of all files, Apache-2.0 text, notices and the list of changes |
Why the image files are not smaller: stable-diffusion.cpp keeps 3.05 GiB of the model in FP32 at every quantization level: the FFN w2 weights (row length 6826 is not divisible by the quantization block size, 2.21 GiB) and the text adapter, timestep embedder and small tensors (0.83 GiB, excluded by its own rule). In our files the w2 weights are stored as F16 (saves 1.04 GiB; with the sd.cpp default rule they would stay FP32 and the files would be 4.19 / 4.44 / 4.71 / 5.20 GiB). The F16 variant was within ±0.6 dB PSNR of the default rule in every pair we compared (one image each, see below).
Run with stable-diffusion.cpp
sd-cli \
--diffusion-model Sakura-Iris-3B-Q5_K_M-3.40GiB.gguf \
--llm Qwen3VL-4B-Instruct-Q8_0.gguf \
--steps 30 --cfg-scale 3 --sampling-method dpm++2m --diffusion-fa \
-W 1024 -H 1024 -p "your prompt" -o out.png
Width and height must be multiples of 16, prompts are limited to 300 tokens. The original model card uses 100 steps and CFG 3 with a DPM-Solver++ order-2 sampler. We measured and made the images with 30 steps and the dpm++2m sampler of stable-diffusion.cpp.
Steps (Q8_0 image model made with the sd.cpp default rule, 5.20 GiB, not shipped; same prompt and seed, 1024x1024, one image each):
| Steps | Time per image | What we saw |
|---|---|---|
| 8 | 61 s | usable preview, but rough: over-sharpened, distorted background, plastic-looking surfaces |
| 20 | 145 s | clean, close to 30 steps |
| 30 | 211 to 309 s | clean (setting of the tables below) |
| 50 | 366 s | clean |
| 100 | 838 s | clean (original default; measured with nothing else running) |
All times include model loading and were measured on a Radeon 8060S (Vulkan); the 30- and 50-step times were taken while other jobs were running on the machine. Iris is not a distilled model: 8 steps is a preview setting, 20 to 30 steps is a good compromise.
Image-model quality (what we measured)
Reference: the official FP32 model.safetensors run by the same program with the same encoder (official Qwen3-VL-4B-Instruct Q8_0 GGUF), 1024x1024, 30 steps, CFG 3, dpm++2m, seed 42, same machine, prompt "A small orange cat sitting on a blue chair in a sunny room, natural colors, realistic photograph." One image per file, so differences of about one dB or less are noise, and the order of Q5_K_M and Q4_K_M is not resolved by PSNR. Higher is closer to the FP32 reference; a diffusion model changes details even with tiny weight changes, so these are deviation numbers, not a quality score.
| File | Size | PSNR vs FP32 | SSIM vs FP32 |
|---|---|---|---|
| Q8_0 | 4.15 GiB | 26.97 dB | 0.868 |
| Q6_K | 3.66 GiB | 24.69 dB | 0.844 |
| Q5_K_M | 3.40 GiB | 20.10 dB | 0.775 |
| Q4_K_M | 3.14 GiB | 20.04 dB | 0.695 |
For the same prompt with the sd.cpp default rule (w2 FP32, not shipped): Q8_0 26.84 dB / 0.875, Q6_K 25.23 dB / 0.863, Q5_K_M 20.01 dB / 0.777, Q4_K_M 20.19 dB / 0.703. A second prompt (a travel poster with the word "LISBOA") was measured for the default-rule Q8_0 (19.80 dB / 0.813) and Q4_K_M (15.41 dB / 0.604) and for Q4_K_M with w2 as F16 (15.49 dB / 0.600); the text is rendered correctly in all three. Peak whole-GPU memory with nothing else running: 13.5 GiB for the default-rule Q8_0 (5.20 GiB, not shipped) at 100 steps (2.2 GiB were in use before), 19.0 GiB for the FP32 original at 30 steps. We did not measure the memory of the other quantizations with nothing else running.
What we changed (Apache License 2.0, section 4)
Sakura-Iris-3B-*.gguf: made withsd-cli -M convertdirectly from the official FP32model.safetensorsof speridlabs/iris-3b (sha256a90e1f4c197bac8491f82078def68884b6a3527ea7fc97a693e3e367372aa80f, checked against the Hub), with--type q8_0|q6_K|q5_K|q4_Kand--tensor-type-rules "mlp(_x|_y)?\.w2\.weight$=f16". Modified files.LICENSEis the Apache License 2.0 text of the original repository;NOTICEcarries the original notice and this list of changes.
License and use
Apache License 2.0 (LICENSE), same as Iris-3B. Iris-3B is by speridlabs; this is an independent community release. Part of the Sakura Image collection.
Credits
- Original model: speridlabs/iris-3b (speridlabs); text encoder Qwen/Qwen3-VL-4B-Instruct (Qwen / Alibaba).
- GGUF conversion and inference: leejet/stable-diffusion.cpp (MIT).
中文说明 · 樱花 (Simplified Chinese)
English above. 本节为上文的中文翻译(Sakura = 樱花 yīnghuā);完整的独立中文版见 README_zh.md。
Sakura — Iris-3B(GGUF)
这是 speridlabs/iris-3b(3 B 参数的像素空间扩散 Transformer,没有 VAE)面向 stable-diffusion.cpp 的社区量化版本,配合 官方 的 Qwen3-VL-4B-Instruct 文本编码器使用。属于独立工作,并非 speridlabs 或 Alibaba/Qwen 制作或认可。Apache-2.0。
示例生成
Q8_0 图像模型(Sakura-Iris-3B-Q8_0-4.15GiB.gguf)与官方 Qwen3-VL-4B-Instruct Q8_0 文本编码器,stable-diffusion.cpp(Vulkan,Radeon 8060S),1024x1024、30 步、CFG 3、dpm++2m。每条提示词只用一个种子,展示的是全部九条提示词,没有重抽,也没有挑选。每张图约 213 到 738 秒(含模型加载);生成期间整块 GPU 的显存计数器峰值为 29.7 GiB(同一块 GPU 上还有其他任务在运行,因此这是上限)。这些图片由 stable-diffusion.cpp 生成。
同样的九条提示词和种子也用于姊妹仓库 Sakura-Iris-3B-Uncensored-GGUF(使用我们消融后的编码器),两组图片可以对照。种子依次为 1202, 1302, 1305, 1306, 1105, 1103, 1503, 1506, 1406;提示词即上方图片的说明文字。
运行所需文件
Iris-3B 没有 VAE:不要传入 --vae。
| 部分 | 🟦 stable-diffusion.cpp | 🟧 ComfyUI |
|---|---|---|
| 图像模型(四选一) | Sakura-Iris-3B-Q8_0-4.15GiB.gguf(最佳)、Sakura-Iris-3B-Q6_K-3.66GiB.gguf、Sakura-Iris-3B-Q5_K_M-3.40GiB.gguf 或 Sakura-Iris-3B-Q4_K_M-3.14GiB.gguf(最小),通过 --diffusion-model 传入 |
未测试。 ComfyUI 没有原生的 Iris 支持(2026-10-11 核查)。我们的 GGUF 文件不带 general.architecture 标签,并沿用 Iris 原始的张量名称;第三方节点 RealRebelAI/ComfyUI-Iris-3B 要求标签为 iris(或 wan),因此这些文件很可能无法在其中加载。我们没有运行过该节点。 |
| 文本编码器 | 官方 Qwen/Qwen3-VL-4B-Instruct-GGUF,文件 Qwen3VL-4B-Instruct-Q8_0.gguf(3.99 GiB,推荐)或 Qwen3VL-4B-Instruct-Q4_K_M.gguf,通过 --llm 传入;不包含在本仓库中 |
原始 Hugging Face 文件夹 Qwen/Qwen3-VL-4B-Instruct(原版 Iris 代码会自行下载) |
| VAE | 无(像素空间) | 无 |
| 程序 | 支持 Iris 的 stable-diffusion.cpp master 版本的 sd-cli / sd-server(自 commit f89d9b1,2026-10-10 起支持;我们使用的是发行版 master-956-1b0ba10,Vulkan 构建),不包含 |
– |
同一批图像模型配套的消融文本编码器见 Sakura-Iris-3B-Uncensored-GGUF。
文件
| 文件 | 大小 | 说明 |
|---|---|---|
Sakura-Iris-3B-Q8_0-4.15GiB.gguf |
4.15 GiB | 图像模型(DiT),Q8_0 |
Sakura-Iris-3B-Q6_K-3.66GiB.gguf |
3.66 GiB | 图像模型(DiT),Q6_K |
Sakura-Iris-3B-Q5_K_M-3.40GiB.gguf |
3.40 GiB | 图像模型(DiT),Q5_K(文件名使用标准标签 Q5_K_M,以便 Hub 识别) |
Sakura-Iris-3B-Q4_K_M-3.14GiB.gguf |
3.14 GiB | 图像模型(DiT),Q4_K(文件名使用标准标签 Q4_K_M) |
SHA256SUMS、LICENSE、NOTICE |
全部文件的校验和、Apache-2.0 文本、声明以及改动清单 |
为什么图像文件不更小: stable-diffusion.cpp 在每个量化级别都把模型中的 3.05 GiB 保留为 FP32:FFN 的 w2 权重(行长度 6826 不能被量化块大小整除,2.21 GiB)以及文本适配器、时间步嵌入器和小张量(0.83 GiB,按它自己的规则排除)。在我们的文件中,w2 权重以 F16 存储(节省 1.04 GiB;按 sd.cpp 默认规则它们会保持 FP32,文件大小会是 4.19 / 4.44 / 4.71 / 5.20 GiB)。在我们比较的每一对中,F16 变体与默认规则的 PSNR 相差不超过 ±0.6 dB(每个文件一张图,见下文)。
使用 stable-diffusion.cpp 运行
sd-cli \
--diffusion-model Sakura-Iris-3B-Q5_K_M-3.40GiB.gguf \
--llm Qwen3VL-4B-Instruct-Q8_0.gguf \
--steps 30 --cfg-scale 3 --sampling-method dpm++2m --diffusion-fa \
-W 1024 -H 1024 -p "your prompt" -o out.png
宽度和高度必须是 16 的倍数,提示词限制为 300 个 token。原版模型卡使用 100 步、CFG 3 和 DPM-Solver++ order-2 采样器。我们的测量和图片使用 30 步以及 stable-diffusion.cpp 的 dpm++2m 采样器。
步数(使用 sd.cpp 默认规则制作的 Q8_0 图像模型,5.20 GiB,未提供;相同提示词和种子,1024x1024,每个设置一张图):
| 步数 | 每张图耗时 | 我们看到的 |
|---|---|---|
| 8 | 61 秒 | 可用的预览,但粗糙:过度锐化、背景扭曲、表面像塑料 |
| 20 | 145 秒 | 干净,接近 30 步 |
| 30 | 211 到 309 秒 | 干净(下方表格使用的设置) |
| 50 | 366 秒 | 干净 |
| 100 | 838 秒 | 干净(原版默认值;测量时机器上没有其他任务) |
所有耗时都包含模型加载,在 Radeon 8060S(Vulkan)上测得;30 步和 50 步的耗时是在机器上还有其他任务运行时取得的。Iris 不是蒸馏模型:8 步只是预览设置,20 到 30 步是不错的折中。
图像模型质量(我们的测量)
参照:官方 FP32 的 model.safetensors,由同一程序、同一编码器(官方 Qwen3-VL-4B-Instruct Q8_0 GGUF)运行,1024x1024、30 步、CFG 3、dpm++2m、种子 42、同一台机器,提示词为 "A small orange cat sitting on a blue chair in a sunny room, natural colors, realistic photograph."。每个文件只有一张图,因此约一个 dB 或更小的差异属于噪声,Q5_K_M 和 Q4_K_M 的先后顺序也无法用 PSNR 分辨。数值越高越接近 FP32 参照;即使权重只有微小变化,扩散模型也会改变细节,因此这些是 偏离度 数值,而不是质量评分。
| 文件 | 大小 | 相对 FP32 的 PSNR | 相对 FP32 的 SSIM |
|---|---|---|---|
| Q8_0 | 4.15 GiB | 26.97 dB | 0.868 |
| Q6_K | 3.66 GiB | 24.69 dB | 0.844 |
| Q5_K_M | 3.40 GiB | 20.10 dB | 0.775 |
| Q4_K_M | 3.14 GiB | 20.04 dB | 0.695 |
同一提示词下使用 sd.cpp 默认规则(w2 为 FP32,未提供):Q8_0 26.84 dB / 0.875,Q6_K 25.23 dB / 0.863,Q5_K_M 20.01 dB / 0.777,Q4_K_M 20.19 dB / 0.703。第二条提示词(带有单词 "LISBOA" 的旅游海报)测量了默认规则的 Q8_0(19.80 dB / 0.813)和 Q4_K_M(15.41 dB / 0.604),以及 w2 为 F16 的 Q4_K_M(15.49 dB / 0.600);三者的文字都渲染正确。机器上没有其他任务时整块 GPU 的显存峰值:默认规则的 Q8_0(5.20 GiB,未提供)在 100 步时为 13.5 GiB(运行前已占用 2.2 GiB),FP32 原版在 30 步时为 19.0 GiB。其他量化版本在没有其他任务时的显存我们没有测量。
我们改动了什么(Apache License 2.0,第 4 节)
Sakura-Iris-3B-*.gguf:使用sd-cli -M convert直接由 speridlabs/iris-3b 的官方 FP32model.safetensors制作(sha256a90e1f4c197bac8491f82078def68884b6a3527ea7fc97a693e3e367372aa80f,已与 Hub 核对),参数为--type q8_0|q6_K|q5_K|q4_K和--tensor-type-rules "mlp(_x|_y)?\.w2\.weight$=f16"。已修改文件。LICENSE是原始仓库的 Apache License 2.0 文本;NOTICE包含原始声明和上述改动清单。
许可与使用
Apache License 2.0(LICENSE),与 Iris-3B 相同。Iris-3B 由 speridlabs 制作;本仓库是独立的社区发布。属于 Sakura Image 合集。
致谢
- 原始模型:speridlabs/iris-3b(speridlabs);文本编码器 Qwen/Qwen3-VL-4B-Instruct(Qwen / Alibaba)。
- GGUF 转换与推理:leejet/stable-diffusion.cpp(MIT)。