趋近智
数据并行是分布式训练中普遍的策略。该方式很直接:您将整个模型复制到每个可用的 N 个工作节点(通常是GPU)上,然后将全局训练数据集划分成 N 个独立的分片。在每个训练步骤中,每个工作节点处理其特有的数据分片,从而使单位时间内处理的数据量得到大幅增加。然而,主要问题在于聚合。如何将每个独立工作节点完成的工作整合起来,以产生一个单一、一致的模型更新呢?这就是同步和异步更新之间的选择成为一个决定性架构决策的地方。
在同步训练模式中,所有工作节点步调一致地运行。每个训练步骤的过程都有条不紊且确定,确保每个工作节点上的模型副本在每次更新后都保持一致。
操作顺序如下:
All-Reduce 集合通信操作实现。All-Reduce 会累加所有工作节点的梯度张量,并将平均结果分发回所有节点。结果是每个工作节点现在都持有完全相同的平均梯度张量。由于每个工作节点都从相同的模型权重开始并应用相同的梯度更新,所有模型副本在整个训练过程中保持同步。
同步数据并行工作流程。所有工作节点在本地计算梯度,然后参与阻塞的 All-Reduce 操作以平均梯度,之后才更新其本地模型副本。
这种同步方式的主要优点是它与单工作节点训练的直接关联。如果您根据全局批次大小适当调整学习率,训练动态和最终模型收敛通常与您在单一高性能加速器上实现的结果非常相似。这使得调试和超参数调整更可预测。
然而,All-Reduce 操作会引入一个同步屏障。整个集群必须等待最慢的工作节点(一个“落后者”)完成其反向传播,然后才能开始梯度交换。这可能导致硬件利用率低下,特别是在具有异构硬件或网络拥堵等瞬态性能问题的集群中。
异步训练消除了同步屏障。工作节点独立计算并应用梯度,无需等待其他节点。这种模式的常用架构涉及一个中央参数服务器。
参数服务器架构中的工作流程是:
异步参数服务器架构。工作节点独立拉取模型权重并推送梯度,从而消除同步屏障。
这种解耦允许最大限度地利用硬件;没有工作节点会闲置等待其他节点。这可能导致每秒训练步数原始值更高。然而,这会带来一个重要的代价:陈旧梯度。
如果一个梯度是使用比参数服务器上当前版本更旧的模型参数版本计算的,它就被视为陈旧的。例如,当工作节点 1 正在计算其梯度时,工作节点 2 和 3 可能已经推送了各自的更新。等到工作节点 1 的梯度到达服务器时,主模型已经演变。应用这个过时的梯度会给训练过程引入噪声和方差,这可能会损害收敛速度,在某些情况下,还会阻止模型达到与其同步训练对应物相同的准确率水平。
您在同步和异步并行之间做出的选择,取决于硬件效率和统计效率之间的权衡。
同步:
异步:
对于当前大多数深度学习应用,特别是对于精度要求高的大模型训练,同步数据并行是首选方法。高速互连技术的发展使得通信开销可控,其可预测的收敛行为使其成为生产系统更可靠的选择。像 PyTorch 的 DistributedDataParallel (DDP) 和 FullyShardedDataParallel (FSDP) 等框架(我们将在后面实现),都是同步模型的精巧、高度优化的实现。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造