ComfyUI-Spectrum-QwenImage21:基于谱特征预测的 Qwen-Image-2.1 采样加速器

插件1个月前发布 小马良
227 0

ComfyUI-Spectrum-QwenImage21 是一个专为 Qwen-Image-2.1 设计的免训练扩散采样加速节点,实现自 CVPR 2026 论文《Adaptive Spectral Feature Forecasting for Diffusion Sampling Acceleration》(arXiv:2603.01623)。其核心机制是在选定去噪步骤中跳过全部 32 层 Transformer 块,转而通过在线岭正则化 Chebyshev 拟合预测最终隐藏状态,仅运行廉价的输出头(time_text_embed → norm_out → proj_out)。在默认 moderate 配置下,可跳过约 65–70% 的 Transformer 传递,同时保持输出视觉质量接近完整采样。

该节点通过 ComfyUI 官方 WrappersMP.DIFFUSION_MODEL 机制集成,无 monkey-patching,兼容原生 prefix-KV-cache 优化。仅支持 Qwen-Image-2.1,不支持 1.x 或 Edit 版本。

为何适用于 Qwen-Image-2.1

Qwen-Image-2.1 的架构特性使其成为 Spectrum 的理想目标:

  • 单流 DiT + 廉价尾部:32 层处理打包序列,仅目标图像 token 进入输出头;尾部成本远低于单层,跳过整栈几乎获得完整步数节省。
  • 步数不变的 prefix:文本与参考 token 在 t=0 调制并通过因果 prefix 关注,使 norm_out 前的隐藏状态成为扩散时间步的平滑固定形状函数,符合 Chebyshev 预测器理论前提。
  • Flow-matching 调度:作为整流流模型,其特征沿轨迹平滑变化,与 FLUX、SD3.5 等已验证模型一致。

性能实测:速度与质量的平衡

T2I 测试(3060 12GB, 928×1664, CFG=1, Euler+Simple, Sage Attention)

方法步数扩散时间速度
Base25~49s1.97s/it
Easy Cache25~30s1.23s/it
Spectrum25~22s1.10it/s
Spectrum45~28s1.56it/s
Spectrum25 (CFG=4)~45s2.81s/it

Spectrum 在 45 步时仍比 Easy Cache 25 步更快,且质量更一致(Easy Cache 偶发伪影,Spectrum 呈柔和喷绘感)。可与 Easy Cache 叠加使用,但生成结果不同。

I2I 多参考测试(1MP, 45 步, CFG=1)

参考图数扩散时间速度
1~21s2.08 it/s
2~26s1.73 it/s
3~30s1.49 it/s

参考图增加导致条件计算开销上升,但 Spectrum 仍保持高效。透明度正常工作,需使用特定提示格式:This is an RGBA image with transparency. [描述] The image has alpha channel and the background is transparent. ⚠️ 不可用 Flux2/Mage Flow VAE 处理透明图,否则 alpha 通道变粉。

安装与工作流集成

cd ComfyUI/custom_nodes
git clone https://github.com/awdqwdasdg/Comfyui-Spectrum-Qwen2.1
# 重启 ComfyUI,无额外依赖

节点放置顺序:

Load Qwen-Image-2.1 checkpoint
        │
        ▼
(LoRA / 模型修改节点)
        │
        ▼
Spectrum (Qwen-Image-2.1)   ◄── 所有模型修改之后、采样器之前
        │
        ▼
KSampler / SamplerCustom    (推荐 cfg=1.0, 20–40 步)

首次运行建议开启 debug=True 查看控制台决策日志(如 step 13/40 ... mode=forecast history=8)。

关键参数与调优指南

参数默认值作用与调优方向
warmup_steps5初始真实步数,为拟合 seeding;减少可提速但降低稳定性
tail_actual_steps2尾部真实步数,解析精细细节;增至 3–4 提升质量
window_size2.0初始预测间隔;增大加速但可能漂移
flex_window0.75间隔增长率;0.75=moderate,3.0=aggressive(4–5×加速)
max_consecutive_forecasts8连续跳过上限,防累积误差
history_points8拟合锚点数,滑动窗口;过少降质,过多增内存
chebyshev_degree4多项式阶数;2→4 显著改善,6 边际收益
ridge_lambda0.1正则化强度;1e-3 或 10 均有害
blend_weight0.50.5=稳健混合,1.0=纯 Chebyshev(论文精确),0.0=线性外推
cache_devicemain_device锚点存储;VRAM 紧张时设 cpu(增加 host↔device 拷贝)
force_actual_on_controlTrue控制残差存在时强制真实前向,保兼容性

调优策略:

  • 追求速度:flex_window=3.0 + tail_actual_steps=1,接受可见质量漂移
  • 追求质量:flex_window=0.4 + tail_actual_steps=3–4 + blend_weight=1.0
  • 节省显存:cache_device=cpu,锚点驻留系统 RAM

安全机制与限制

故障关闭设计:以下情况自动回退真实 Transformer:

  • 非原生 Qwen-Image-2.1 核心或缺少 sample_sigmas
  • 预热/尾部阶段或锚点不足
  • 存在控制残差(守卫启用时)
  • 运行中特征几何变更(区域条件、批次重拆)
  • 预测异常

已知限制:

  • 仅支持 Qwen-Image-2.1,1.x/Edit 版本拒绝加载
  • 高加速下质量为权衡:论文报告 FLUX.1-dev 在 α=0.75 时 PSNR≈24.3dB vs 完整 50 步,加速 3.47×;视为“非常接近”而非逐位相同
  • 每个锚点占用显存:2048² 约 512MB (bf16),1024² 约 128MB
  • 不支持量化/包装核心的原生 Transformer 内部结构

开发与验证

仓库提供 CPU 测试套件(无需 GPU/ComfyUI),验证数学正确性、调度模式及完整包装器流程:

python -m unittest discover -s tests -v

⚠️ 免责声明:本项目由 GLM-5.3 一次性 vibe coding 生成,使用前请充分测试。

© 版权声明

相关文章