← AI 术语表

AI 术语表 · 进阶 · 效率与基础设施 · MLOps 与 LLMOps

分布式训练

分布式训练是把训练一个模型的工作分配给多块 GPU 或多台服务器共同完成的方式。当模型或训练数据无法全部放进一块 GPU,或者用一块 GPU 耗时太长时,就会使用分布式训练。

关于这个术语
难度
进阶 · 需要了解内部原理的专业术语
加入时间
2026-10-12
通俗解释 这就像几位译者分章节合译一本厚书,并不时聚在一起统一术语。还有一点也很像:如果统一术语的会议越开越长,即使增加人手,速度也不会相应提高。

工作原理

最常见的方式是数据并行。所有 GPU 都持有同一个模型的副本,用不同的数据批次进行训练。之后把各自算出的梯度(告诉模型往哪个方向调整的值)汇总求平均,所有 GPU 再以同样的方式更新模型。如果模型太大、一块 GPU 放不下,就会同时使用把模型本身切分开的模型并行。另一种广泛使用的方式是分片:让每块 GPU 分别保存一部分权重、梯度和优化器状态(训练工具额外记录的值),以节省显存,常见的名称有 FSDP 和 ZeRO。

分配工作的三种方式

数据并行切分数据

  • 每块 GPU 持有完整模型副本
  • 最简单、最常见
  • 模型必须能放进一块 GPU

分片(FSDP·ZeRO)切分训练状态

  • 分摊权重、梯度和优化器状态
  • 大幅节省显存
  • 通信量增加

模型并行切分模型

  • 把层或计算分配到各 GPU 上
  • 超大模型需要
  • 配置最复杂

공통 三者都是让多块 GPU 共同训练一个模型的方法

根据分摊的对象不同,方式也不同。实际训练中常常把三者结合使用。

为什么重要

如今的 LLM 预训练实际上无法用一块 GPU 完成。训练时不仅要把权重,还要把梯度、优化器状态和中间计算结果都放进显存,因此所需显存比推理时多得多。分布式训练是把这些显存负担和训练时间分摊到多台设备上的基础技术。模型较大时,即便是微调这类相对较小的任务,也需要多块 GPU。

在哪里会遇到,如何建立直观认识

在实际工作中,这个词会出现在 PyTorch 的 DDP、FSDP,以及 DeepSpeed、Megatron-LM 等训练框架的配置里。训练脚本中的 GPU 数量、world size、ZeRO stage 等选项,正是决定分布式方式的参数。要建立直观认识,只需记住“训练所需显存是权重显存的好几倍”。在常见的混合精度训练中,人们常用这样的估算:参数量 × 约 16 字节 ≈ 权重、梯度和优化器状态所占显存,此外还要再加上中间计算结果占用的部分。

注意事项

GPU 数量翻倍,速度并不会翻倍。这是因为 GPU 之间交换结果需要通信时间,所以 NVLink、InfiniBand 等互连的性能很重要。把多台服务器连在一起时,只要一台停机,整个训练就可能停下,因此需要经常保存检查点。在着手准备分布式训练之前,先评估能否用 LoRA 或量化在一块 GPU 内完成,从成本上看通常更划算。

示例

假设一个团队要对 70 亿(7B)参数的模型进行全量微调。按上面的估算,仅权重、梯度和优化器状态就需要 70 亿 × 16 字节 ≈ 112GB,放不进一块显存为 80GB 的 GPU(示例)。因此,团队会从成本和质量两方面比较:是租一台装有多块 GPU 的服务器,用 FSDP 或 DeepSpeed ZeRO 分摊存放这些状态,还是改用 LoRA 在一块 GPU 上完成。

相关术语