概述
数据并行性通过在多个 GPU 上复制模型来更快地训练一个模型,每个 GPU 处理数据批次的不同部分。这是一种主力技术,可以让团队扩展到数十或数千个加速器。
数据并行性是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。
深入探讨
在数据并行性中,每个 GPU 都保存模型权重的相同副本,但处理不同的小批量训练示例。每个设备独立地计算前向和后向传递,产生自己的一组梯度。在权重更新之前,使用全归约通信操作对所有 GPU 上的梯度进行平均,因此每个副本都保持同步,并且表现得就像在一个大型组合批次上进行训练一样。这有效地增加了吞吐量:8 个 GPU 每步可以处理大约 8 倍的数据。问题是每个 GPU 必须适应内存中的整个模型、其梯度和优化器状态,因此当模型对于单个设备来说太大时,普通数据并行性没有帮助。
技术洞察
关键操作是 all-reduce,它将跨设备的梯度求和并重新分配结果。 NCCL 和 Horovod 等库使用的 Ring all-reduce,在逻辑环周围传递梯度块,因此总通信独立于 GPU 数量。 PyTorch 的 DistributedDataParallel 将此通信与后向传递重叠,为早期层触发梯度同步,而后面的层仍在计算,隐藏了大部分网络延迟。
掌握数据并行性
数据并行性通过在多个 GPU 上复制模型来更快地训练一个模型,每个 GPU 处理数据批次的不同部分。这是一种主力技术,可以让团队扩展到数十或数千个加速器。数据并行性是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将数据并行性视为一种操作模型,而不是单一功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。
在实践中,使用数据并行性的强大团队根据可靠性和成本优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。
多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。
战略影响
多年来,架构决策决定着性能和运营成本。
多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
更好的工程选择可以减少生产中的可靠性事故。
更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
现实世界的实施
使用 PyTorch DistributedDataParallel 在一台服务器的 8 个 GPU 上训练 ResNet 图像分类器,每个 GPU 处理 256 个图像批次中的 32 个。
使用 Horovod 在数百个 GPU 上扩展 BERT 预训练,使用环 all-reduce 来同步每个步骤的梯度。
在多节点集群上微调推荐模型,其中每个节点处理不同的用户交互分片。
使用 TensorFlow 的 MirroredStrategy 在单个工作站上的多个 GPU 上传播视觉模型的训练,只需最少的代码更改。
实施模式
数据并行实践
使用 PyTorch DistributedDataParallel 在一台服务器的 8 个 GPU 上训练 ResNet 图像分类器,每个 GPU 处理 256 个图像批次中的 32 个。
使用 PyTorch DistributedDataParallel 在一台服务器中的 8 个 GPU 上训练 ResNet 图像分类器,每个 GPU 处理 256 个图像批次中的 32 个。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
数据并行实践
使用 Horovod 在数百个 GPU 上扩展 BERT 预训练,使用环 all-reduce 来同步每个步骤的梯度。
使用Horovod在数百个GPU上扩展BERT预训练,使用ring all-reduce来同步每一步的梯度当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。
数据并行实践
在多节点集群上微调推荐模型,其中每个节点处理不同的用户交互分片。
在多节点集群上微调推荐模型,其中每个节点处理不同的用户交互分片 团队在预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时通常会获得更好的结果。
数据并行实践
使用 TensorFlow 的 MirroredStrategy 在单个工作站上的多个 GPU 上传播视觉模型的训练,只需最少的代码更改。
使用 TensorFlow 的 MirroredStrategy 在单个工作站上的多个 GPU 上传播视觉模型的训练,只需最少的代码更改。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在实际负载和数据条件下进行基准测试。
在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
仪器监控错误、漂移和用户影响。
仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在扩展之前准备回滚和事件响应路径。
在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。