技术指南

大型模型的张量并行性

一种将单个神经网络层内的数学拆分到多个 GPU 上的方法,这样对于一个设备来说太大的模型仍然可以运行。

概述

一种将单个神经网络层内的数学拆分到多个 GPU 上的方法,这样对于一个设备来说太大的模型仍然可以运行。这很重要,因为前沿模型拥有数千亿个参数,没有任何一个 GPU 能够单独保存或计算得足够快。

大型模型的张量并行性是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。

深入探讨

张量并行性(也称为层内模型并行性)在 GPU 上分割各个权重矩阵,而不是将整个层放在单独的设备上。在 Transformer 中,大矩阵乘法(注意力投影和前馈 MLP)被拆分:例如,MLP 的第一个权重矩阵按列分区,第二个权重矩阵按行分区,因此每个 GPU 计算一个切片,然后单个 all-reduce 组合结果。注意力分散在多个头中,每个 GPU 处理一个子集。由于每个 GPU 都会同时执行每一层的一部分,因此张量并行性会减少每个 GPU 的内存并加快计算速度,但它需要每层 GPU 之间进行频繁的高带宽通信。这就是为什么它通常被限制在由 NVLink 连接的节点内,并与管道和数据并行性相结合,以实现非常大的训练和服务作业。

技术洞察

由 Megatron-LM 推广的技巧是选择分区尺寸,从而最大限度地减少通信。按列拆分第一个 MLP 矩阵可让每个 GPU 在本地应用非线性,无需同步;逐行拆分第二行意味着输出只需要一次全归约即可对部分结果求和。因此,每一层大约会产生两个全归约(向前)和两个(向后)。由于这些集合发生在每一层,因此延迟占主导地位,因此张量并行性存在于 NVLink 等快速节点内链接背后,而不是较慢的节点间网络背后。

掌握大型模型的张量并行性

一种将单个神经网络层内的数学拆分到多个 GPU 上的方法,这样对于一个设备来说太大的模型仍然可以运行。这很重要,因为前沿模型拥有数千亿个参数,没有任何一个 GPU 能够单独保存或计算得足够快。大型模型的张量并行性是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将大型模型的张量并行性视为一种操作模型,而不是单个功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。

在实践中,使用张量并行处理大型模型的强大团队可以根据可靠性和成本来优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。

多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。

战略影响

多年来,架构决策决定着性能和运营成本。

多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。

技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

更好的工程选择可以减少生产中的可靠性事故。

更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。

大型模型张量并行的未来

张量并行性仍然是基础性的,但越来越多地融入“3D并行性”(张量+管道+数据),并与混合专家模型的专家并行性相结合。 Megatron-LM、DeepSpeed 和 vLLM 等框架可自动执行分片。随着 GPU 互连(NVLink、NVSwitch)和光学结构变得更快,节点边界限制放宽,允许更广泛的张量并行组。期望更智能的自动并行化,选择分片尺寸和组大小,以最大限度地减少给定集群拓扑的通信。

现实世界的实施

使用 Megatron-LM 将每一层的权重矩阵分片到一个 NVLink 连接节点中的 8 个 GPU 上,从而训练 175B 参数模型。

在 vLLM 中使用 tensor_parallel_size=4 提供 70B 参数的聊天模型,以便权重适合四个 GPU 并实时响应。

将 Transformer 注意力头拆分到 GPU 上,以便每个设备计算一个子集,然后连接下一层的输出。

结合节点内的张量并行性和跨节点的管道并行性,在大型 GPU 集群上训练万亿参数模型。

实施模式

大型模型的张量并行实践

使用 Megatron-LM 将每一层的权重矩阵分片到一个 NVLink 连接节点中的 8 个 GPU 上,从而训练 175B 参数模型。

通过使用 Megatron-LM 将每一层的权重矩阵分片到一个 NVLink 连接节点中的 8 个 GPU 来训练 175B 参数模型。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

大型模型的张量并行实践

在 vLLM 中使用 tensor_parallel_size=4 提供 70B 参数的聊天模型,以便权重适合四个 GPU 并实时响应。

在 vLLM 中使用 tensor_parallel_size=4 提供 70B 参数的聊天模型,以便权重适合四个 GPU 并实时响应。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

大型模型的张量并行实践

将 Transformer 注意力头拆分到 GPU 上,以便每个设备计算一个子集,然后连接下一层的输出。

将 Transformer 注意力头拆分到 GPU 上,以便每个设备计算一个子集,然后连接下一层的输出。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。

大型模型的张量并行实践

结合节点内的张量并行性和跨节点的管道并行性,在大型 GPU 集群上训练万亿参数模型。

将节点内的张量并行性和跨节点的管道并行性相结合,在大型 GPU 集群上训练万亿参数模型 当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。

风险与防护栏

!

优化一项基准测试可以隐藏更广泛的系统弱点。

!

基础设施和维护成本常常被低估。

!

随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

实施路线图

1

在实施之前定义延迟、质量和成本目标。

在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

2

在实际负载和数据条件下进行基准测试。

在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

3

仪器监控错误、漂移和用户影响。

仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

4

在扩展之前准备回滚和事件响应路径。

在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。

不断探索