Z-Image-Turbo-SDA
恢复Z-Image-Turbo模型生成多样性图像的能力
建议权重: 0.5~0.7
--------------------------------
Z-Image-Turbo-SDA 是一种高效的 LoKr(低秩克罗内克积)适配器 ,旨在解决少步蒸馏流匹配(Flow Matching)/扩散模型中的 “多样性崩溃” 问题。
通过应用我们新颖的 语义方向对齐(Semantic Directional Alignment, SDA)损失 ,该 LoKr 适配器在完美保持 8 步基线模型极致锐利度和快速推理速度的同时,恢复了原始教师模型 70.2% 的组合多样性(LPIPS) 。
📖 问题:蒸馏中的多样性崩溃
当将一个 50 步扩散模型(教师)蒸馏为一个 8 步模型(学生)时,学生模型通常会学习走捷径,收敛到分布的“均值”。结果,即使改变随机噪声种子,生成的图像也几乎具有相同的构图(相同的姿态、相同的布局)。
标准的监督微调(SFT)无法解决此问题,因为强制学生模型匹配教师模型的绝对速度(vvv)会破坏校正后的直线轨迹,导致图像模糊、灰暗或混乱。
💡 我们的解决方案:语义方向对齐(SDA)+ LoKr
我们没有直接匹配原始速度,而是使用一种基于物理的四支柱自定义架构对该模型进行微调,并结合参数高效的 LoKr 结构:
1. x0x_0x0 空间余弦损失(仅方向,无幅度)
我们不直接匹配原始速度 vvv,而是将预测结果投影到干净的 x0x_0x0 空间(x^0=z−v\hat{x}_0 = z - vx^0=z−v)。接着,我们应用 空间低通滤波(AvgPool2d,k=8k=8k=8) ,防止模型通过高频噪声作弊。最后,我们使用 标准余弦损失 对齐学生模型与教师模型方差的 语义方向 ,同时完全释放学生模型以保持其高对比度的幅度。
2. 自参考 SFT 锚点(“恒温器”效应)
为了防止多样性增强破坏 8 步轨迹,我们引入了一个连续锚点: sft_loss = Huber(v_student, v_baseline_detached, delta=0.08) 这就像一条弹性绳索。如果模型偏离太远以改变构图,Huber 损失会提供一个恒定的(L1)拉力,用于优化高频细节,而不会粗暴地将模型强行拉回崩溃的均值。
3. 非对称适配器掩码(突破性方法)
如果使用预训练的训练适配器,我们会非对称地应用它:
- 多样性前向(适配器关闭) :暴露学生模型原始的崩溃流形,从而产生大量准确的梯度用于构图修正。
- SFT 前向(适配器开启) :提供一个不可破坏的质量基线,锁定图像锐度。
4. 极低噪声跳过( div_skip )
在最终推理步骤(例如,t≈8.9t \approx 8.9t≈8.9)时,宏观构图已经确定。此时强行增加多样性只会导致高频抖动(模糊)。我们完全 在最低噪声步长处切断多样性损失 ,仅使用纯 SFT 来确保最终像素锐利清晰。
-----------------------------------------------------------
🛠 训练细节
- 基础模型: Z-Image-Turbo(8 步流匹配)
- 适配器类型: LoKr(低秩 Kronecker 积,
full_rank,factor=8) - 优化器: AdamW(
weight_decay=0.001) - 学习率: 2.5e-4
- 多样性权重(λ\lambdaλ): 1.0(标准余弦损失)
- Huber Delta: 0.08
- 时间步: 严格离散调度器采样(索引 1-6),在极低噪声(索引 7)处启用
div_skip。
-----------------------------------------------------------
❓ 常见问题(FAQ)
Q1:我可以将 SDA LoRA 与其他 Z-Image-Turbo(ZIT)LoRA 一起使用吗?
A:可以,但可能存在兼容性风险。您需要手动平衡权重。
- 原理: SDA LoRA 的核心机制涉及 旋转模型的速度场 。由于预测方向已被有意偏离原始校正轨迹以实现多样性,这可能与其他期望原始“直线”路径的 ZIT LoRA 发生冲突。
- 冲突: 当堆叠多个 LoRA 时,由于方向梯度相互冲突,可能会出现结构伪影或模糊。
- 解决方案: 尝试降低 SDA LoRA 的推理权重(例如降至
0.5 ~ 0.7)。 注意其中的权衡 :降低权重会削弱“语义推动”效果,导致多样性回归到坍缩均值附近。您需要根据具体需求找到“最佳平衡点”。
Q2:为什么在简单提示下多样性更显著,而在复杂提示下则不然?
A:这取决于提示对构图空间施加的“拓扑约束”。
- 简单提示 (例如,“一只坐着的猫”):SDA 在此处可释放 最大多样性 ,因为提示对潜在空间的限制很少。“猫”可以自由选择坐姿、躺姿或看向不同方向。
- 复杂提示 (例如,“左侧有一只猫,正看着右侧的红色杯子”):这类提示如同刚性的“蓝图”,严格将元素锚定在特定坐标上。由于文本编码器的引导非常强,SDA LoRA 难以在不违反提示指令的情况下翻转构图。因此,越长、描述越详细的提示,自然表现出的空间变化就越少。
-----------------------------------------------------------
⚠️ 开发者说明与局限性
SDA 是我在深入研究流匹配(Flow Matching)模型底层机制过程中的 个人学习与实验成果 。因此,它远非完美。
当前 v1 版本 基于我们内部最佳检查点( div_27_2500 ,实现了最高达 70% 的多样性恢复),并额外进行了 360 步以质量为导向的微调 。
- 一个遗憾的权衡(解剖结构 vs. 多样性) :维持肢体和手部等刚性结构要求模型保持在其原始蒸馏流形附近。为了获得更好的解剖稳定性,我不得不在“语义推动”(semantic push)方面做出妥协。因此,在最终版本中,构图多样性恢复率 从峰值 70% 回落至 58% 。
- 遗留问题 :尽管牺牲了 12% 的多样性,该模型在复杂姿态下仍可能偶尔产生解剖错误——这是少步蒸馏模型常见的“阿喀琉斯之踵”。
在 8 步推理框架内解决“宏观构图多样性”与“微观解剖刚性”之间的零和博弈,仍然是一个开放性挑战。我希望未来能找到更优雅的解决方案,并欢迎社区在此探索基础上继续推进。