Stable Diffusion XL、SD3 与 Flux.1 模型常用优化器总结
在训练大规模扩散模型(如 Stable Diffusion XL、Stable Diffusion 3、Flux.1)时,优化器的选择直接影响模型的收敛速度、稳定性和最终性能。本文将从官方训练实践和社区经验出发,总结这三类模型常用的优化器及其使用策略。
关键参数详解
--optimizer_type、--optimizer_args以及--lr_scheduler:其中--optimizer_type代表训练中设置的优化器,它的主要任务是在反向传播过程中,根据损失函数计算的梯度来更新模型的权重,从而逐步最小化(或最大化)损失函数。不同的优化器采用了不同的策略来调整参数,使得模型能够更快、更稳健地收敛。
目前主流的优化器有"AdamW"、"AdamW8bit"、"Lion"、"SGDNesterov"、"SGDNesterov8bit"、"DAdaptation"、"AdaFactor"、"PagedAdamW8bit"等。
--optimizer_args代表指定优化器选项参数,可以用"key=value"的格式指定多个值。-
-lr_scheduler代表学习率调度器(Learning Rate Scheduler),主要控制优化器的学习率随着训练过程进行调整。目前主流的学习率调度策略有按比例衰减、指数衰减、余弦函数衰减、Reduce on Plateau、OneCycleLR等。
一、Stable Diffusion XL(SDXL)
✅ 常用优化器:
-
AdamW
- 稳定性好,适用于 Transformer + UNet 架构;
- 支持权重衰减(Weight Decay),提升泛化性能;
- 被 HuggingFace 和 StabilityAI 的 SDXL 脚本广泛采用。
-
Adafactor
- 内存占用小,适合显存受限的场景;
- 在一些 LoRA 微调任务中被使用。
🔧 学习率调度策略:
- Linear Warmup + Cosine Decay
- 训练初期:线性升高学习率,避免不稳定;
- 中后期:余弦退火平稳降低学习率,帮助模型收敛。
二、Stable Diffusion 3(SD3)
✅ 常用优化器:
-
AdamW
- 主力优化器,默认初始学习率常为
1e-4
; - 搭配混合精度训练(fp16 / bfloat16)使用稳定可靠。
- 主力优化器,默认初始学习率常为
-
8-bit AdamW
- 由 bitsandbytes 实现;
- 显著减少显存占用,在大模型训练中广受欢迎。
🔧 学习率调度策略:
- Linear Warmup + Cosine Annealing
- 常用于分布式多 GPU 训练;
- 预热与退火相结合,提高收敛速度与最终精度。
三、Flux.1 模型
✅ 常用优化器:
-
AdamW
- 主流选择,适用于大多数微调任务;
- 在 Flux.1 微调脚本中为默认配置之一。
-
Lion
- Meta 提出的新型优化器;
- 相较 AdamW,收敛更快,在部分图像生成实验中表现更优。
-
Adafactor
- 提供内存友好型选择;
- 可用于低资源环境下的 LoRA 微调任务。
🔧 学习率调度策略:
- Cosine Warmup
- 前期缓慢升温,防止参数剧烈波动;
- 中后期缓慢退火,稳步收敛。
📊 优化器对比总结
模型 | 常用优化器 | 调度策略 | 适配场景 |
---|---|---|---|
SDXL | AdamW / Adafactor | Linear Warmup + Cosine | 全量训练 & 微调 |
SD3 | AdamW / 8-bit AdamW | Warmup + Cosine Annealing | 多卡大模型训练 |
Flux.1 | AdamW / Lion / Adafactor | Cosine Warmup | 微调 & 显存优化任务 |
✅ 推荐建议
- 大模型训练首选: AdamW
- 显存受限设备: Adafactor 或 8-bit AdamW
- 追求更快收敛实验: 尝试 Lion 优化器
- 搭配策略建议: 所有优化器建议搭配 Warmup + Cosine 类学习率调度器
📌 参考资料:
💬 如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、评论支持我!后续我将继续更新大模型训练、LoRA 微调和 Diffusion 生态的实战干货~