Files
DiffSynth-Studio/docs/zh/QA.md
2026-02-10 18:00:19 +08:00

2.9 KiB
Raw Blame History

常见问题

为什么训练框架不支持 batch size > 1

  • 更大的 batch size 已无法实现显著加速:由于 flash attention 等加速技术已经充分提高了 GPU 的利用率,因此更大的 batch size 只会带来更大的显存占用,无法带来显著加速。在 Stable Diffusion 1.5 这类小模型上的经验已不再适用于最新的大模型。
  • 更大的 batch size 可以用其他方案实现:多 GPU 训练和 Gradient Accumulation 都可以在数学意义上等价地实现更大的 batch size。
  • 更大的 batch size 与框架的通用性设计相悖:我们希望构建通用的训练框架,大量模型无法适配更大的 batch size例如不同长度的文本编码、不同分辨率的图像等都是无法合并为更大的 batch 的。

为什么不删除某些模型中的冗余参数?

在部分模型中,模型存在冗余参数,例如 Qwen-Image 的 DiT 模型最后一层的文本部分,这部分参数不会参与任何计算,这是模型开发者留下的小 bug。直接将其设置为可训练时还会在多 GPU 训练中出现报错。

为了与开源社区中其他模型保持兼容性,我们决定保留这些参数。这些冗余参数在多 GPU 训练中可以通过 --find_unused_parameters 参数避免报错。

为什么 FP8 量化没有任何加速效果?

原生 FP8 计算需要依赖 Hopper 架构的 GPU同时在计算精度上有较大误差目前仍然是不成熟的技术因此本项目不支持原生 FP8 计算。

显存管理中的 FP8 计算是指将模型参数以 FP8 精度存储在内存或显存中,在需要计算时临时转换为其他精度,因此仅能减少显存占用,没有加速效果。

为什么训练框架不支持原生 FP8 精度训练?

即使硬件条件允许,我们目前也没有任何支持原生 FP8 精度训练的规划。

  • 目前原生 FP8 精度训练的主要挑战是梯度爆炸导致的精度溢出,为了保证训练的稳定性,需针对性地重新设计模型结构,然而目前还没有任何模型开发者愿意这么做。
  • 此外,使用原生 FP8 精度训练的模型,在推理时若没有 Hopper 架构 GPU则只能以 BF16 精度进行计算,理论上其生成效果反而不如 FP8。

因此,原生 FP8 精度训练技术是极不成熟的,我们静观开源社区的技术发展。

如何在推理时动态加载 LoRA 模型?

我们支持 LoRA 模型的两种加载方式,详见LoRA 加载

  • 冷加载:当基础模型未开启显存管理LoRA 会融合进基础模型权重此时推理速度没有变化LoRA 加载后无法卸载。
  • 热加载:当基础模型开启显存管理LoRA 不会融合进基础模型权重此时推理速度会变慢LoRA 加载后可通过 pipe.clear_lora() 卸载。