mirror of
https://github.com/modelscope/DiffSynth-Studio.git
synced 2026-03-19 14:58:12 +00:00
* add conf docs * add conf docs * add index * add index * update ref * test root * add en * test relative * redirect relative * add document * test_document * test_document
2.9 KiB
2.9 KiB
常见问题
为什么训练框架不支持 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 加载: