Qwen-Image-2.1-viggle-turbo LoRA选型指南:r256 vs r128终极对比,显存减半效果几乎无损
Qwen-Image-2.1-viggle-turbo LoRA选型指南:r256 vs r128终极对比,显存减半效果几乎无损
Qwen-Image-2.1-viggle-turbo是面向 Qwen-Image-2.1 基模的少步蒸馏加速 LoRA 包:只需6 步推理(原模型需 40 步)即可完成文生图与 1~3 张参考图的指令编辑,无需 Classifier-Free Guidance,端到端约快5 倍,且画质与基模难分伯仲。本文带你搞懂仓库里的 r256 与 r128 两个 LoRA 到底怎么选、显存差多少、效果损失有多大,3 分钟做出不后悔的选型。
为什么 6 步能逼近 40 步?先看它是什么
这个仓库由 Viggle 用DMD 分布匹配蒸馏训练,把 40 步教师模型"压缩"进一个 LoRA 适配器,加载在基模 transformer 之上即可生效(README.md)。关键实测数据(官方 96 条留出请求对比):
| 指标(相对 40 步基模) | v0.1 r64 LoRA | v0.2.1 r256,6 步 |
|---|---|---|
| 采样多样性 | 0.75× | 0.98× |
| 构图漂移 | −0.019 | 0.000 |
| 构图明显不同的提示词占比 | — | 0% |
一句话:v0.2.1 是当前最优版本,v0.2 与 v0.1 文件只是保留可复现,没有理由优先选用旧版。
仓库文件清单:这份 LoRA 清单先看一眼
核心文件只有 3 个需要你关心:
- Qwen-Image-2.1-viggle-turbo-v0.2.1-6step-lora-r256.safetensors ——主力推荐,rank 256 / alpha 256,bf16,约 1.3 GB
- Qwen-Image-2.1-viggle-turbo-v0.2.1-6step-lora-r128.safetensors —— 同权重截断到 rank 128 / alpha 128,约 680 MB,ComfyUI 工作流默认加载它
- peft_v0.2.1/adapter_config.json —— peft 键格式的同款适配器配置(
r=256、lora_alpha=256,覆盖注意力、图像 MLP、调制与时间步嵌入共 10 类模块)
其余peft/、peft_v0.2/、v0.1 的 r64 LoRA 与 transformer/ 全量微调权重均为历史版本,仅作复现参考。
r256 vs r128 终极对比:画质损失到底多大?
这是全文最关键的部分。r128 不是简单"砍一半参数",而是对 r256 的更新矩阵做逐层精确 SVD 截断(Eckart–Young 定理保证的最优 rank-128 近似):
- 每层保留更新能量 83%~100%,中位数 95%;丢掉的权重不到基权重 0.05%
- 官方 96 条留出请求上,r128 与 r256 出图LPIPS 差 0.0244
- 参照系:把 r256 原权重原封不动重排一遍(理论上零损失,只有浮点舍入)差值就是0.0239
结论很直白:r128 已经贴在"噪声地板"上——它和 r256 的差距,与纯浮点舍入误差几乎同量级,人眼基本不可辨。
显存账本:省下的不只是 600MB
| 方案 | LoRA 体积 | 说明 |
|---|---|---|
| r256 | ~1.3 GB | diffusers 官方演示同款 |
| r128 | ~0.68 GB | 文件体积减半,ComfyUI 默认 |
在 ComfyUI 端,r128 + int8 基模(7.3 GB)+ int8 文本编码器(9.4 GB)+ VAE(0.7 GB)全量驻留,1248×832 出图峰值约26 GB 显存;换成 r256 直接多出约 0.6 GB 常驻开销。对 24 GB 显存的卡,这个差值可能就是"能不能跑"的分界线。
三条铁律:用错步数,选哪个 LoRA 都白搭
⚠️ 这个加速包的参数是强绑定的,改错任何一条都会画质崩盘:
- 步数与 sigma 表必须配套:
num_inference_steps=6,sigmas=[1.0, 0.9375, 0.875, 0.75, 0.5, 0.25],且必须用仓库自带的 scheduler/scheduler_config.json(shift_terminal已改为null,基模默认值会毁掉最后一步)。 - 改步数只许动高噪端:
0.875, 0.75, 0.5, 0.25四个节点是训练落点,动它们图会明显变软;要 5/7 步请只在1 → 0.875区间等分插点。 - LoRA 强度保持 1.0,关 CFG、不用负提示词;ComfyUI 里务必用 comfyui/viggle_turbo.py 提供的Viggle Turbo LoRA (unmerged)节点运行时挂载——官方 LoRA 加载器会把权重 merge 进 bf16,平均丢掉约 30% 的更新量,int8 下还会引入数倍于更新的噪声。
最快上手:两条路线任选其一
路线 A:ComfyUI(新手推荐)
git clone https://gitcode.com/hf_mirrors/Viggle/Qwen-Image-2.1-viggle-turbo把 comfyui/viggle_turbo.py 拷进ComfyUI/custom_nodes/并重启,再把 Qwen-Image-2.1-viggle-turbo-t2i.json(文生图)或 Qwen-Image-2.1-viggle-turbo-edit.json(编辑)拖进 ComfyUI 即可,工作流自带下载链接与参数注释。编辑流的示例参考图 comfyui/input/woman2.webp 和 comfyui/input/cat.webp 可放进ComfyUI/input/试效果。
路线 B:diffusers 代码
pipe = QwenImage21Pipeline.from_pretrained("Qwen/Qwen-Image-2.1", dtype=torch.bfloat16) pipe.load_lora_weights( "Viggle/Qwen-Image-2.1-viggle-turbo", weight_name="Qwen-Image-2.1-viggle-turbo-v0.2.1-6step-lora-r256.safetensors", )生成时记得传num_inference_steps=6, sigmas=[1.0, 0.9375, 0.875, 0.75, 0.5, 0.25], true_cfg_scale=1.0。
选型速查表与已知边界
| 你的场景 | 推荐 |
|---|---|
| 显存吃紧(24 GB 左右)或 ComfyUI 用户 | r128 |
| 追求与官方演示完全一致、显存充裕 | r256 |
| 需要渲染密集小字 | 加到 8 步:sigmas=[1, 0.9375, 0.875, 0.75, 0.625, 0.5, 0.25, 0.125] |
已知边界要心里有数:多参考图合成、换脸、身份保持类复杂编辑仍略逊于 40 步基模;密集小字易糊;2K 输出未做量化评测。这些在 README.md 的 Known limitations 一节有完整说明,蒸馏效果还在持续迭代中。
一句话总结:显存够就上 r256 求个心安,显存紧就放心选 r128——SVD 精确截断让它的效果损失停留在噪声级,这是"显存减半、效果几乎无损"这句话的真正底气。🚀
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考