Jianghu · 本地生图(替代豆包 Seedream)方案 v1
本地生图方案
Jianghu · 用本机 GPU 替代豆包 Seedream 5.0 Flash 的可行性与落地路径
v1 · 2026-10-07 · 全部硬件数据为本机实测,模型参数来自公开模型卡
一、结论先行
能替代,但建议「分类替换」而不是全线替换。
- 首选模型:Z-Image Turbo(6B,阿里通义,Apache 2.0) + GGUF 量化。
本机 ComfyUI 已原生支持,不用装任何插件。
- 透明背景:用 ComfyUI 内置的 BiRefNet 抠图节点(也是原生,无需插件)。
- 真正的收益不是「更快」,而是:无限量
不过敏感词风格可训 LoRA 离线批跑。
- 三个硬约束:1 8GB 显存刚好卡线;2 与 MiniMax H3 不能同时跑;
3 D 盘只剩 62.8GB(先清 20.6GB 废弃模型就好办)。
一句话决策:图标类(约 350 张,风格统一、硬边、易抠图)值得迁到本地; 人物立绘与背景图先做 A/B 对比,质量不达标就继续走豆包。
二、本机体检(实测)
8 GB 显存 VRAM
64 GB 系统内存
62.8 GB D 盘可用
0.39.0 ComfyUI
| 项目 | 实测值 | 对生图的影响 |
|---|---|---|
| GPU | NVIDIA RTX 3070 Ti · 8GB · sm_86 | 能跑量化模型;不支持原生 FP8 ⇒ 一律优先 GGUF,别用 FP8 版 |
| 当前显存占用 | 7151 / 8192 MiB | 已被 H3 占满跑图前必须让 H3 释放 |
| 系统内存 | 64GB,当前仅剩 8.5GB 空闲 | H3 把权重 offload 到内存了;跑图时内存也要腾 |
| CPU | i5-13400F · 10 核 16 线程 | 够用,不是瓶颈 |
| C 盘 | 82.5 GB 可用 | — |
| D 盘 | 62.8 GB 可用(ComfyUI 已占 61GB) | 偏紧刚好够装 8.4GB 新模型;清废弃模型后宽裕 |
| Y: / Z: 盘 | Synology DS120j 网络盘(\\DS120j\home / \video),各 2.0 TB 可用 | 不能放模型写入实测 43.6 / 19.6 MB/s,加载 4GB 模型要 1.5~3 分钟 |
| ComfyUI | v0.39.0 @ :8188 运行中,--lowvram --disable-mmap | 低显存档位已配好,可复用 |
| torch | 2.9.1+cu130 · Python 3.13.14 · bf16 ✅ | 环境齐备 |
| 已装插件 | ComfyUI-GGUF、ComfyUI-KJNodes | GGUF 加载器已就位,零安装成本 |
关键好消息:ComfyUI 已原生支持我们要用的两个模型
comfy/text_encoders/z_image.py ← Z-Image 文本编码器(Qwen3-4B) comfy/supported_models.py: class ZImage(Lumina2) ← Z-Image 主模型 comfy_extras/nodes_bg_removal.py ← BiRefNet 抠图节点(官方内置) 意味着不需要装第三方插件,只要把权重文件放到正确目录就能用 —— 这是本方案最大的成本优势。
三、候选模型筛选
先排除(8GB 显存装不下)
| 模型 | 参数量 | 量化后显存 | 结论 |
|---|---|---|---|
| FLUX.2 [dev] | 32B | 18–24 GB | 排除 |
| Qwen-Image | 20B | 12–13 GB | 排除 |
| HunyuanImage 3.0 | 80B MoE | 40 GB+ | 排除 |
| SD 3.5 Large | 8.1B | 12 GB | 排除 |
可跑的候选
| 模型 | 参数 | 8GB 可行性 | 中文提示词 | 许可 | 适配度 |
|---|---|---|---|---|---|
| Z-Image Turbo 阿里通义 2025-11 | 6B | GGUF Q4/Q5 约 3.6–4.2GB 舒适 | 好 Qwen3-4B 编码器 | Apache 2.0 | ★★★★★ |
| Z-Image Base 2026-01 | 6B | 同上 舒适 | 好 | Apache 2.0 | ★★★★ 可训 LoRA |
| SDXL 1.0(含各类微调) | 3.5B | fp16 约 7GB 卡线但成熟 | 弱 CLIP 编码器 | OpenRAIL++ | ★★★★ 生态最大 |
| FLUX.2 [klein] 4B | 4B | 官方称 ~8GB(含编码器 13GB) 边界 | 好 Qwen3-4B | Apache 2.0 | ★★★ 多参考图 |
| FLUX.1 [schnell] | 12B | GGUF Q4 约 7GB + T5 4.6GB 超 | 弱 T5 编码器 | Apache 2.0 | ★★ 慢 |
为什么 Z-Image Turbo 是第一选择(四条理由,按权重排序)
- 中文提示词原生支持 —— 它用 Qwen3-4B 做文本编码器,不是 CLIP / T5。
我们现有 350+ 条提示词都是中文写的(tools/gen_*.py 里),迁移时几乎不用重写。 SDXL / FLUX 系换过去,提示词要整体翻成英文且效果打折。
- 零安装成本 —— ComfyUI 0.39.0 已内置 Z-Image 支持,GGUF 插件也已装好。
- 8 步出图 —— 蒸馏模型,只跑 8 次前向(SDXL 要 20–30 步,FLUX 要 20+ 步),
在 8GB 卡上这一步就是 3 倍差距。
- Apache 2.0 —— 商用无限制,后面真上线了也不会有许可尾巴。
四、推荐组合与三张账
4.1 模型组合
| 角色 | 文件 | 放置目录 | 大小 |
|---|---|---|---|
| 主模型(DiT) | z_image_turbo-Q5_K_M.gguf | models/unet/ | 4.2 GB |
| 文本编码器 | qwen_3_4b-Q5_K_M.gguf | models/text_encoders/ | 3.0 GB |
| VAE | ae.safetensors | models/vae/ | 0.33 GB |
| 抠图(透明底) | birefnet.safetensors | models/background_removal/ | 0.9 GB |
| 合计 | ≈ 8.4 GB |
追求更快更稳可降到 Q4_K_M:主模型 3.6GB + 编码器 2.4GB = 6.0GB,画质损失很小。
4.2 显存账(8GB 卡线,逐项列)
DiT Q5 4.2GB 文本编码器 Q5 3.0GB VAE 0.33GB 激活/开销
合计约 7.5–8.0 GB,刚好卡线。两条应对:
- 文本编码器换成 Q4_K_M(2.4GB) —— 编码器量化对画质影响远小于主模型,这是最划算的一刀。
- 继续用
--lowvram,让 ComfyUI 在 DiT 和编码器之间轮换上卡,慢一些但绝不 OOM。
与 MiniMax H3 互斥(必须排班,不能并行)
H3 视频模型本机加载时 staged 15GB(靠 --lowvram 往 64GB 内存里 offload), 当前显存已占 7151MiB、系统内存只剩 8.5GB。此时再跑生图 必 OOM。
建议排班:图形批作业与视频批作业分开时段跑;或跑图前先让 ComfyUI 释放 H3 (POST /free 带 {"unload_models":true,"free_memory":true})。
4.3 磁盘账
D 盘现在 62.8GB 可用,新模型要 8.4GB → 装完剩 54GB。但这里有 20.6GB 是纯废料:
| 文件 | 大小 | 说明 |
|---|---|---|
| models/unet/minimax_h3_fl2va_pruned-UD-Q2_K_XL.gguf | 7.6 GB | 可删既定结论:H3 的 GGUF 一律不用,DiT 与文本编码器都走 safetensors + 原生加载器。这两个文件是当初试错留下的 |
| models/text_encoders/qwen3vl_32b_minimax_h3-Q2_K_M.gguf | 13 GB |
删掉后 D 盘回到 ≈ 83GB 可用,模型盘和输出盘都宽松了。建议先做,再下载。
五、下载与安装
5.1 下载(走 hf-mirror,已实测连通 0.57s)
`# 环境变量(临时) export HF_ENDPOINT=https://hf-mirror.com
1) 主模型 — city96 的 GGUF 量化
repo: city96/Z-Image-Turbo-gguf
huggingface-cli download city96/Z-Image-Turbo-gguf \ z_image_turbo-Q5_K_M.gguf --local-dir D:/ComfyUI/models/unet
2) 文本编码器(Qwen3-4B)
huggingface-cli download Comfy-Org/z_image_turbo \ split_files/text_encoders/qwen_3_4b.safetensors --local-dir D:/ComfyUI/models/text_encoders
3) VAE
huggingface-cli download Comfy-Org/z_image_turbo \ split_files/vae/ae.safetensors --local-dir D:/ComfyUI/models/vae
4) 抠图模型
huggingface-cli download Comfy-Org/BiRefNet \ birefnet.safetensors --local-dir D:/ComfyUI/models/background_removal`
下载必须并行分片 —— hf-mirror 单连接限速约 2.4MB/s,8 连接并行能到 40MB/s。 本机已有现成脚本:D:/MiniMax-H3/_meta/dl_parallel.py,直接复用它下这 8.4GB, 预计 5 分钟内完成;单连接硬下要 1 小时。
5.2 启动参数
沿用现有 run_h3.bat 的档位即可,如需单独给生图开实例,加一个:
".venv\Scripts\python.exe" main.py --lowvram --disable-mmap --port 8188 --disable-auto-launch REM 与 H3 同一个实例串行排队即可,不必另起进程(另起会抢显存)
5.3 首次验收(三步,缺一不可)
- 用官方模板 Workflow → Browse Templates → Image → Z-Image Turbo 跑一张 1024²,
确认出图 + 记录真实耗时(这一步之前所有速度都是估算,必须以实测定档)。
- 同一张图接 BiRefNet: Remove Background 模板,确认输出的 PNG alpha 通道为真透明
(务必用支持 alpha 的查看器,普通预览只显示 RGB,会误判成"抠图失败")。
- 拿一张 现成的装备图标(如
public/assets/equips/weapon_sword_gold.webp)
做图生图,对比豆包产出,判定风格能否保持一致。
六、与现有管线怎么Integrate
现在所有生图脚本(gen_equip_icons.py / gen_art_icons.py / gen_portraits.py / gen_idle_bg.py 等 13 个)都通过 tools/ark2.py 的 generate() 出图。接入本地最小改动是新写一个同签名的客户端:
`tools/comfy_img.py # 新增,对齐 tools/comfy_h3_client.py 的写法 generate(prompt, *, ref=None, size="1024x1024", background=None, output_format=None, out=None) -> dict
返回 {ok, error, path, bytes, elapsed} ← 与 ark2.generate 完全一致`
然后在各 gen_*.py 里加一个后端开关(对齐 gen_idle_video.py 已有的 --backend comfy_h3 模式):
python tools/gen_equip_icons.py --backend local # 本地 Z-Image python tools/gen_equip_icons.py --backend ark # 原豆包(默认,保证不破坏现状)
为什么同签名 + 双后端这么重要:13 个生成脚本的提示词、组装逻辑、mask 裁形全都复用了, 只要换出图这一环。而且灰度期可以「同一提示词两边各出一张」做 A/B, 不满意随时切回豆包 —— 零风险。
七、透明背景:两条路
| 方案 | 原理 | 在 8GB 卡上的可行性 | 适配度 |
|---|---|---|---|
| BiRefNet 抠图 推荐 | 先生成白底/纯色底图,再用分割模型抠出 alpha | 已内置约 0.9GB,单张耗时 1–2 秒,可与生图解耦、单独批量重跑 | ★★★★★ 图标是硬边纸板,几乎零失误 |
| LayerDiffuse | 训练一个理解透明层的模型,采样阶段直出 RGBA | 不适用只支持 SD1.5 / SDXL 底座,Z-Image 没有对应版本 | ★★ 边缘最干净但换模型 |
和豆包的机制差异(这点要提前知道)
豆包的 background:"transparent" 是图生图 + 输入必须自带 alpha, 路径是"参考图 → 透明输出"。本地方案是"文生图 → 抠图",生成端反而更自由(不强制给参考图), 但多了一步抠图。
对图标类(满版方形纸板,提示词本来就让模型画方形底板,程序用统一 mask 裁圆角)—— 抠图比豆包那条路更可控。对人物精灵/发丝边缘,需要实测验证,这是本方案的头号待验证项。
八、分类替代建议
| 素材类型 | 数量级 | 建议 | 理由 |
|---|---|---|---|
| 装备图标 | 97 张 | 迁本地 | 方形纸板 + 硬边,最容易被抠图和小模型搞定 |
| 功法图标 | 240 张 | 迁本地 | 量最大、风格要求统一 —— 正是 LoRA 的用武之地 |
| 资源/材料图标 | 10 张 | 迁本地 | 同上 |
| 人物头像/半身像 | 36 组 | 先 A/B | 质量要求最高(512² / 768×1152),且人设差异要靠大模型的理解力 |
| 动作精灵表 | 90+ 段 | 不动 | 已走本地 H3 视频抽帧,与本方案无关 |
| 挂机条带背景 | 12 区 × 3 段 | 留豆包 | 需要跨段构图基线严格对齐 + 大尺寸,8GB 卡出不了这个尺寸, 且现有 BASE_LINES 质检逻辑是针对 Seedream 产出调过的 |
| 3D 模型 / 全景 | — | 不动 | 走 Blender / 混元生3D 链路 |
先拿「功法图标 240 张」做试点:量最大、要求最同质、失败成本最低。
九、风险与待验证项
| # | 风险 | 等级 | 对策 |
|---|---|---|---|
| R1 | 8GB 显存卡线,实测可能触发 offload 导致速度腰斩 | 中 | 先测 Q5,不行退 Q4;编码器单独降档;坚持 --lowvram |
| R2 | 速度不一定比豆包快(估算 8–15 秒/张 + 抠图 2 秒) | 中 | 明确定位:本地赢在「批量 + 无限量 + 免拦截」,不是单张延迟。批 240 张约 40–60 分钟,挂夜里跑 |
| R3 | 与 H3 抢显存/内存 | 高 | 排班作业;跑图前 POST /free 卸 H3 |
| R4 | 人物发丝边缘抠不干净(豆包那条路没有这个问题) | 中 | 先用现成素材跑 5 张对比;必要时人物类保留豆包 |
| R5 | 出图风格和现有素材不统一(换模型 = 换"笔触") | 高 | 硬需求 → 训一个 Z-Image 风格 LoRA(Z-Image Base 专为微调发布)。 ⚠️ 8GB 训 LoRA 需降分辨率/rank,可能要在别处训 |
| R6 | Discord / 敏感词:本地模型无内容Review,反而少了一类麻烦 | 收益 | — |
十、下一步动作清单
- 腾空间:删掉 H3 的两个废弃 GGUF(20.6GB)→ D 盘回到 ~83GB。
- 下载:8.4GB 权重,用
dl_parallel.py多连接并行,约 5 分钟。
- 首次实测:官方模板跑通一张 1024²,记录真实耗时(定档用)。
- 抠图验证:BiRefNet 对「纸板图标」和「人物半身像」各测 5 张,看 alpha 质量。
- 写客户端:
tools/comfy_img.py,签名对齐ark2.generate。
- 试点:
gen_art_icons.py --backend local出 10 张对比豆包,老大定夺风格。
- 决策:风格通过 → 全量批跑;不通过 → 走 LoRA 微调路线再评一次。
需要老大先拍的三个板
- 能不能删那 20.6GB 废弃 H3 GGUF(腾空间)?
- 作业排班怎么定 —— 白天跑图 / 夜里跑视频,还是随用随切?
- 风格一致性如果第一轮不达标,愿不愿意走「训 LoRA」这条路(多花半天到一天)?
附录 A · 执行进展与实测数据(2026-10-08 凌晨)
全线跑通了。本机 Z-Image 出图 + BiRefNet 透明底都已落地,实测 8.3~8.6 秒/张(1024²,8 步)。
A.1 已完成
| # | 事项 | 结果 |
|---|---|---|
| 1 | 删废弃 H3 GGUF | ✅ 清掉 19.7GB,D 盘 62.8 → 83.0 GB 可用 |
| 2 | 下载 Z-Image 权重 | ✅ 11.75GB,用 ModelScope(60 MB/s),2 分钟下完 |
| 3 | 写 tools/comfy_img.py | ✅ generate() 签名对齐 ark2.generate,内置随用随切 |
| 4 | 跑通首张图 | ✅ 实测耗时见下表 |
| 5 | 透明底抠图 | ✅ RGBA 输出,背景 93.1% 透明,四角 α=0、主体 α=254 |
A.2 实际落盘的模型(与官方模板完全一致)
| 角色 | 文件 | 大小 | 说明 |
|---|---|---|---|
| DiT | z_image_turbo_int8_convrot.safetensors | 5.91 GB | int8_tensorwise + convrot,groupsize 256 |
| 文本编码器 | qwen_3_4b_fp8_mixed.safetensors | 5.37 GB | 788 个张量 |
| VAE | ae.safetensors | 0.32 GB | — |
| 抠图 | birefnet.safetensors | 0.42 GB | — |
A.3 实测耗时(3070 Ti 8GB,1024×1024,8 步)
| 场景 | 纯生成 | 总耗时 | 说明 |
|---|---|---|---|
| 第一张(含切换 + 加载权重) | 11.6 s | 13.7 s | 含 POST /free 卸 H3 + 11.8GB 权重上卡 |
| 第二张(模型已驻留) | 8.6 s | 8.6 s | — |
| 第三张 | 8.3 s | 8.3 s | 稳定 |
| 透明底(+BiRefNet 抠图) | 12.7 s | 13.1 s | 抠图本身只多花 1.1 s |
结论:比方案里的估算(8~15 秒)落在下限。批 100 张图标约 15 分钟;批 240 张功法图标约 35 分钟。
A.4 首轮 A/B 风格判断(诚实版)
对的:折纸质感、暖赭金手工纸底板、满版方形(可被现有 round_corners() 统一裁圆角)—— 三个关键特征都在。
不够的:精细度/华丽度明显低于现有 Seedream 素材。现有那把金币剑有云纹装饰、多层纸片叠压、纸纤维与折痕; 本地版是干净的几何折纸,形准但朴素。
判定:方向对,火候不够 —— 属于「提示词调优 / 训风格 LoRA」能解决的问题, 不是模型选错。按附录 B 的路线走:先调提示词(零成本),不够再云训 LoRA(¥4~8)。
A.5 这一轮踩到的坑(都已修进代码)
| # | 现象 | 根因 | 判据 |
|---|---|---|---|
| 1 | 下载器报「短读」,反复重试同一片 | 我手写的大小比真实值大 385,852 字节(6,201,387,148 vs 真实的 6,201,001,296) | 🔴 文件大小一律从 API 的 lfs.size 取,绝不手写 |
| 2 | 文件大小对得上,ComfyUI 却报 corrupt or invalid | 下载器的 sidecar/out/.part 状态不一致时, 它会新建一个全零稀疏文件,只补它"认为缺"的那一片 | 🔴 续传前先看 .part、out、.done.json 三者是否自洽; 怀疑文件损坏先验 header(前 8 字节 = header 长度,能读出 JSON 且张量末端 == 文件大小才算完整) |
| 3 | 抠图把主体抠掉、留下背景 | RemoveBackground 输出「前景=1」,而 JoinImageWithAlpha 内部还会再取一次反 (alpha = 1.0 - 输入) | 🔴 中间必须串一个 InvertMask,否则抠反 |
顺带修正的一条旧结论:下载源要换
原方案写的是「hf-mirror 8 连接 40MB/s」。实测 hf-mirror 会突然限流到 459 B/s(同一时刻 ModelScope 单连接 15.6 MB/s)。 换 ModelScope 后 11.75GB 只用 2 分钟(8 连接 60 MB/s)。
URL 形态:https://modelscope.cn/api/v1/models/<repo>/repo?Revision=master&FilePath=<urlencoded>, 支持 Range,Comfy-Org/* 在 ModelScope 有同名镜像。
附录 B · LoRA 微调:本机设备够不够?
结论:本机 8GB 不够 —— 属于「官方最低档还差 2~4GB」的边界外。 想训就租云卡,总成本约 ¥4~8,别在本机耗。
B.1 显存账(SimpleTuner 官方文档数据)
训练一个 rank-16 Z-Image LoRA(覆盖 MLP + 投影 + transformer block 全组件):
| 精度 / 量化 | 官方标称显存 | 本机 8GB | 说明 |
|---|---|---|---|
| 不量化基座(bf16) | 32–40 GB | 差得远 | 需要 24GB 以上的卡 |
| 基座 int8 量化 | 16–24 GB | 不够 | 3090/4090 舒适区 |
| 基座 NF4 量化(官方最低档) | 10–12 GB | 差 2~4GB | 官方原话:「绝对最低是单张 3080 10G」—— 连 10GB 卡都是"激进量化 + offload"才勉强 |
| 再叠 Ramtorch / group offload 硬压 | 未标称 | 赌一把 | 无官方保证;即使能跑,速度会掉到 10~30 小时级别 |
另外还有两个本机独有的卡点,跟显存无关:
- 磁盘:训练还要额外下 Z-Image Base 12GB + Qwen3-4B 训练版 8GB + VAE ≈ 20GB。
刚腾完 D 盘有 83GB,装得下,但会再吃掉四分之一。
- 独占机器:训练期间这台机器不能跑作品服务、不能出视频,而且 8GB 卡上训 10~30 小时 ——
对一台日常在用的开发机,这个代价比租卡贵多了。
B.2 推荐路线:云端租卡(便宜到意外)
AutoDL 官方价目表(2026):
| 卡型 | 显存 | 价格 | 够训 Z-Image LoRA 吗 |
|---|---|---|---|
| RTX 4090 | 24 GB | ¥1.88 / 小时(会员 95 折) | 舒适 |
| RTX 3090 | 24 GB | ¥1.32 / 小时 | 够 |
| RTX 5090 | 32 GB | ¥2.78 / 小时 | 宽裕 |
算总账:6B 模型 rank16 LoRA 跑 3000 步,4090 上约 1~2 小时(Z-Image 比 SDXL 慢些,留 2 小时余量) ⇒ ¥3.8 ~ ¥7.6。训完把 LoRA(几十 MB 到一百多 MB)下载回本机即可,推理还是在本机跑。
工具链(三选一,都支持 Z-Image)
| 工具 | Z-Image Base | Z-Image Turbo | 备注 |
|---|---|---|---|
| SimpleTuner | ✅ | ✅(需 assistant adapter) | 文档最全,有 Z-Image 专用 quickstart |
| ai-toolkit(Ostris) | ✅ | ✅ | 训练适配器作者自己写的,集成最好 |
| musubi-tuner | ✅ | 未确认 | 训 Base 没问题 |
训练集我们其实已经有了:社区建议的起步量是 10~20 张同风格图、rank 8~16、3000 步左右。 手上那 97 张装备图标本身就是同一套折纸风格 —— 天然的训练集,不用另找素材。 训出来的风格 LoRA 可以直接反过来喂给功法图标 240 张,一致性一次解决。
B.3 但先别急着训 —— 按这个顺序走
| # | 做法 | 成本 | 什么情况下停在这一步 |
|---|---|---|---|
| 1 | 固定 seed + 复用现有中文提示词模板 + 参考图 img2img | ¥0 | 出图和现有素材摆一起看不出违和 ⇒ 根本不用训 |
| 2 | 云端租卡训风格 LoRA | ¥4~8 | 训完风格统一了 ⇒ 收工 |
| 3 | 本机硬训(NF4 + group offload) | ¥0,但要占机 10~30 小时 | 不推荐。除非完全不想花钱、也不急着用 |
一个待实测项:LoRA 是在 Z-Image Base(bf16) 上训的,而本机推理用的是 int8_convrot 量化版。社区共识是「Train on Base, deploy anywhere」, 但 int8 convrot 量化基座 + LoRA 的叠加在 ComfyUI 里需要实测确认 (量化走的是 weight_patch,LoRA 也是,两者叠加理论上可行但要跑一遍才知道)。 若不兼容,退路是推理也切到 bf16 基座 + 更低的画布分辨率。
附录 C · Qwen-Image-2.1 评估与新画风(2026-10-11)
C.1 结论:本地生图换用 Qwen-Image-2.1 标准版
Z-Image 方案跑通后,本日又把 Qwen-Image-2.1 完整评估了一轮,结论是换用 Qwen-Image-2.1 标准版。三条理由:
- 原生 RGBA —— VAE 是 4 通道,采样阶段就出真 alpha,整条 BiRefNet 抠图链可以撤掉;
- 画风可控 —— 「折纸纸雕」风格会让模型主动画白边(见 C.4),改用「漫画 + 折纸硬边」后白边归零;
- 8GB 卡跑得动 —— 实测峰值显存 5.2~6.0 GB,比原方案更宽裕。
零升级成本 ComfyUI 0.39.0 已原生支持 class QwenImage21 / comfy/text_encoders/qwen_image21.py,不用升级、不用装插件、不动 H3 环境。
C.2 实测数据(RTX 3070 Ti 8GB)
| 配置 | 尺寸 | 步数 | 耗时 | 峰值显存 |
|---|---|---|---|---|
| turbo 版 | 1024×1024 | 8 | 24.1 s | 6022 MiB |
| turbo 版 | 1024×1536 | 8 | 18.1 s | 5244 MiB |
| 标准版 | 1024×1536 | 25 | 39~48 s | 5.2~5.5 GB |
权重(官方 Comfy-Org/Qwen-Image-2.1):主模型 6.76 GB + 文本编码器 8.71 GB + VAE 0.63 GB = 16.1 GB。
C.3 关键参数(照抄官方模板 + README)
| 项 | 值 | 说明 |
|---|---|---|
| 主模型 | qwen_image_2.1_int8_convrot | 标准版;turbo 版是 8 步蒸馏 |
| 文本编码器 | qwen3vl_8b_int8_convrot | Qwen3-VL 8B(比 Z-Image 的 4B 大一倍) |
| VAE | qwen_image_2.1_vae_bf16 | 64 通道 RGBA,原生透明 |
| CLIPLoader.type | qwen_image | 🔴 不是 lumina2(Z-Image 才是) |
| 步数 / cfg | 25 / 1.0 | turbo 版 8 步 |
| 采样器 / 调度器 | euler / simple | 官方模板值 |
| 尺寸 | 1024×1536 生成 → 768×1152 交付 | 由 EmptyLatentImage 决定 |
四个必踩的坑(都已写进代码)
1 cfg=1 时 negative_prompt 完全无效 —— 蒸馏模型不做 classifier-free guidance,负向提示词被直接忽略。要负向生效得把 cfg 提到 5 左右。
2 尺寸归 EmptyLatentImage 管,不是 TextEncodeQwenImage21.resolution(后者只管参考图 resize;它第 3 个 latent 输出在官方模板里是悬空的)。
3 QwenImage21Cache(device=cpu, dtype=int8) —— 前缀 KV 缓存放内存,8GB 卡的救命项。
4 与 MiniMax H3 显存互斥,跑图前必须让 H3 排空。判空要「连续 3 次队列都空」—— H3 批跑在任务间隙会空一下,只看一眼必误判。
C.4 白边根因:画风禁忌词表(本轮最值钱的一条经验)
白边不是 alpha 瑕疵,是模型主动画上去的。放大到绿底可见:约 8~10 px 宽的实心白色轮廓(alpha=255、RGB≈255),贴着人物外形走。
成因:「折纸纸雕 / 纸片层叠 / 手工纸纤维」这套描述把模型带进了「纸艺贴纸素材」的先验 —— 而纸艺素材在训练数据里普遍带白边,它就照着画。实测不透明像素里 8.9% 是这圈白边。
| 类别 | 词 | 白边实测 |
|---|---|---|
| 禁用 | 纸片层叠 / 手工纸纤维纹理 / 卡纸剪贴 / 纸艺质感 / 贴纸感 | 8.9% |
| 安全 | 硬线条 / 硬边块面 / 几何折角 / 直线锐角 / 顿挫感 / 块面体积 / 三层明暗 / 厚度边 / 投影纵深 / 3D 体积感 | ≈ 0 |
结论:要「硬线条」可以随便要;「纸片层叠 / 纸纤维」这类词一个都不能出现。换纯漫画风后白边自动归零,不需要任何负向提示词、不需要后处理。
附带说明:一度做过 tools/defringe.py 的后处理(替换边缘 RGB + 切描边 alpha)。既然根因是画风,该方案已放弃 —— 而且它会误切轮廓(全不透明像素从 23% 掉到 10%)。工具留作备用。
C.5 新画风:漫画 + 折纸硬边(三档)
提示词按段拼装:01_style + 02_solid_*(选一档) + 03_tail_full → 整条塞进 TextEncodeQwenImage21.prompt。
| 档 | 构图 | 白边 | 观感 |
|---|---|---|---|
| C 基线 | 01 + 03 | 0.21% | 折面平缓、偏平涂 |
| D 立体 | 01 + 02_solid_normal + 03 | 0.16% | 明确的亮/暗面,体积感起来了 |
| D2 强立体 | 01 + 02_solid_strong + 03 | 0.18% | 反差最大,最像低模 3D(已选档) |
用 D2 要注意:头发会被块面化(马尾变成一片片)。需在尾部补一句「头发保留细线分股,不要整片块面化」。
另外固化进尾段的约束:Q版三头身(头占身高 1/3)、人物一律朝右(NPC/Boss 朝左,方向相对才成对战)、画完整全身(构图交给后处理裁,见 §八)。
C.6 备用路线:参考图模式
走 TextEncodeQwenImage21.images(官方称参考图会被文本编码器看到并作为 VAE latent 拼进序列),拿现成的干净透明立绘当参考。实测:能出折纸质感 + 无白边 + 朝右,但颜色会丢(衣服变灰白),需另用提示词补颜色。
API 格式备忘:AUTOGROW 输入的传参写法 "images": {"image_1": [节点, 0]} 实测可行。
C.7 相关文件
| 路径 | Purpose |
|---|---|
| tools/prompts/portrait/ | 画风提示词真源(01_style / 02_solid_* / 03_tail_full / README) |
| tools/_probe_qwen21.py | 文生图验证(--cfg / --unet / --prompt-file / --transparent) |
| tools/_probe_qwen21_ref.py | 参考图模式 |
| tools/_queue_qwen21_test.py | 等权重落地 + 等 H3 排空 → 跑测试矩阵 |
| tools/defringe.py | 白边后处理(已放弃,留作备用) |
C.8 待办
- 把
01 + 02 + 03写进tools/gen_portraits.py的STYLE(目前仍是旧的折纸风,未动)
- 「朝右」约束固化
- 按新画风重跑 36 个门人立绘
- 定:山门主景 / 图标是否同步换风
数据来源:本机 nvidia-smi / df / dd / net use / curl :8188/system_stats 实测;模型参数量与显存要求来自各官方模型卡与 ComfyUI 官方文档。 速度一栏为公开资料的跨卡推算,以本机实测为准。