Zubnet AI学习Wiki › 分布式训练
基础设施

分布式训练

别名:数据并行、模型并行、FSDP
在多个GPU或机器上同时训练模型。数据并行给每个GPU一份模型副本并分割训练数据。模型并行在模型太大无法装入单个GPU时将模型本身分割到多个GPU。FSDP(完全分片数据并行)和DeepSpeed等现代方法结合了两者,实现了数百亿参数模型的训练。

为什么重要

没有任何前沿模型能装入单个GPU。训练GPT-4或Claude需要数千个GPU协同工作数月。分布式训练是使这一切成为可能的工程——它与架构或数据同等关键。分布式训练的效率直接决定了给定预算内能训练多大的模型。

深度解析

数据并行(DP):每个GPU持有完整的模型副本,处理不同的小批量数据,梯度在GPU之间取平均。简单高效,适用于能装入单个GPU的模型。张量并行(TP):将各层分割到多个GPU上,每个GPU计算每个矩阵乘法的一部分。当单层的权重无法装入一个GPU时需要使用。流水线并行(PP):不同的层在不同的GPU上运行,微批量数据在流水线中流动。

FSDP和DeepSpeed

完全分片数据并行(FSDP,来自PyTorch)和DeepSpeed ZeRO(来自微软)将模型参数、梯度和优化器状态分片到各GPU上。每个GPU只存储模型的一小部分,参数在需要计算时按需聚合,然后释放。这使得训练远超单个GPU内存的模型成为可能。DeepSpeed ZeRO有三个阶段:第一阶段分片优化器状态,第二阶段增加梯度分片,第三阶段增加参数分片。

通信瓶颈

分布式训练的根本挑战是通信:GPU必须同步梯度(在数据并行中)或交换激活值(在模型/流水线并行中)。这些通信通过NVLink(节点内,900 GB/s)或InfiniBand(节点间,400 Gb/s)进行。当GPU花在等待通信上的时间多于计算时间时,训练效率下降。最优配置通过将紧密耦合的操作(如张量并行)保持在节点内,松散耦合的操作(如数据并行)跨节点分布来最小化跨节点通信。

相关概念

← 所有术语
← 内容审核 分词器 →