张量并行原理详解:大模型训练中的张量切分与通信成本优化
张量并行是将模型张量按维度切分到多设备的分布式训练方法。它通过分片协同计算降低单设备显存消耗,并在高维或 3D 并行中关注通信成本优化。

什么是张量并行?
张量并行,也称 Tensor Parallelism,通常简称 TP,是一种面向大模型训练的分布式训练方法。它的核心做法是将一个张量沿特定维度分成 N 块,并把网络中的张量分片放到不同设备上参与同一次模型计算。
与简单复制完整模型不同,张量并行关注的是模型内部张量本身的拆分:多个 GPU、TPU 等硬件加速器分别保存和计算张量的一部分,再在训练流程中协同完成神经网络计算。它主要用于模型张量较大、单个设备难以承载完整训练负载的场景。
要点: 张量并行不是把完整模型原样复制到每张卡上,而是把模型计算相关的张量拆开,让多个加速器共同承担张量存储和计算。
用矩阵和张量切分理解基本思路
可以先用一个权重矩阵理解张量切分。假设某一层神经网络有一个较大的权重张量,单个设备完整保存它会带来较高显存压力。张量并行会选择一个维度进行切分,例如按行、按列,或按更一般的张量维度切分,使每个设备只持有其中一部分。
| 对象 | 切分方式 | 设备持有内容 | 作用 |
|---|---|---|---|
| 完整权重矩阵 | 按行切分 | 每个设备持有若干行 | 分担权重存储与对应计算 |
| 完整权重矩阵 | 按列切分 | 每个设备持有若干列 | 分担输出维度或中间计算 |
| 高维张量 | 按指定维度切分 | 每个设备持有一个张量分片 | 适配更复杂的网络结构 |
切分后的分片并不是彼此独立的多个模型,而是同一个神经网络计算的一部分。因此,张量并行不仅要回答“怎么切”,还要在网络结构和运行过程中维护这些分片之间的计算关系。
张量并行的基本工作流程
张量并行的工程实现会因框架而异,但基本流程通常围绕“确定切分对象、执行分片、映射设备、协同计算”展开。
确定需要并行化的网络张量
首先需要判断哪些网络张量适合切分,例如权重张量、中间张量或其他与模型计算密切相关的张量。随后确定沿哪个维度切分,这一步会影响每个设备持有的数据形态,也会影响后续计算组织方式。
将张量切分并映射到多个设备
确定切分维度后,系统会把张量分成多个分片,并将这些分片映射到多个硬件加速器上,例如多张 GPU 或 TPU。每个设备只持有完整张量的一部分,从而避免单个设备独自保存全部张量。
在训练过程中保持分片协同
张量分片后,训练流程仍然需要完成同一个神经网络的前向、反向和参数更新相关计算。实现层面通常需要在网络结构和运行过程中维护分片张量之间的关系,使多个设备共同完成模型训练。
通过分片抽象管理并行执行
一些实现会把 Tensor Parallelism 描述为类似 SPMD 的分片算法,即多个设备运行相似的程序逻辑,但处理不同的张量分片。在 PyTorch 相关实现语境中,也可以从 DTensor 等分片机制理解底层如何表达和执行张量分片。
为什么大模型训练需要张量并行
大模型训练中的参数、激活或中间张量可能非常大,单个设备既要保存模型相关张量,又要参与计算,容易受到显存容量限制。张量并行通过把网络中的张量切分到不同设备,降低单个设备的显存消耗,从而提升训练更大规模模型的可行性。
| 训练问题 | 张量并行的做法 | 可能带来的结果 |
|---|---|---|
| 单设备难以保存完整张量 | 将网络张量按维度切分到多个设备 | 降低单设备显存压力 |
| 模型规模继续增大 | 多个设备共同承担模型内部张量 | 提高超大规模模型训练的可行性 |
| 计算需要跨设备协同 | 在运行过程中维护分片计算关系 | 支撑同一个模型的并行训练 |
需要注意,张量并行并不等于必然获得固定比例的性能提升。它解决的是模型张量过大和单设备显存受限的问题,但实际训练效率还会受到设备数量、模型结构、切分维度和设备间通信等因素影响。
高维和 3D 张量并行如何扩展
随着模型规模和网络结构复杂度提高,张量并行也会发展出更复杂的组织方式。高维张量并行关注的不只是单一矩阵或单一维度切分,还包括更复杂网络结构和运行过程中的张量组织。
3D 张量并行是一种将神经网络模型计算并行化的方法。它可以理解为在更高维度组织模型计算,使张量分片、设备分组和计算协作能够适配更复杂的大规模训练任务。
通信成本优化是 3D 张量并行的重要目标之一。张量被切分到多个设备后,训练过程不再只受单设备显存影响,也会受到设备间数据交换的影响。因此,在高维或 3D 并行设计中,如何组织分片、如何安排计算以及如何控制通信成本,都是工程实现需要重点关注的问题。
要点: 高维和 3D 张量并行的价值不应简单理解为“切得更多”,而应理解为在更复杂模型和更多设备之间重新组织计算与通信。
张量并行适合哪些训练场景
张量并行更适合模型内部张量较大、单设备显存压力明显,并且具备多个硬件加速器的训练环境。例如,大规模 Transformer 模型训练中,模型内部权重和中间张量可能需要通过并行策略分担到多个设备上。
| 用户需求 | 解决方式 | 效果 |
|---|---|---|
| 训练更大规模模型 | 将模型内部张量切分到多设备 | 降低单设备显存消耗,提高可训练性 |
| 利用多 GPU 或 TPU 集群 | 将张量分片映射到多个加速器 | 让多个设备共同承担模型计算 |
| 处理复杂神经网络计算 | 采用高维或 3D 张量并行组织计算 | 在扩展训练时关注通信成本 |
| 评估框架实现方案 | 对比切分维度、设备数量和分片抽象 | 更清晰地进行工程选型 |
在选型时,建议同时评估四个问题:模型张量是否真的超过单设备承载能力;可用设备数量是否足够;模型结构是否适合按特定维度切分;通信开销是否会抵消分片带来的收益。
落地张量并行时需要关注哪些实现差异
不同训练框架对张量并行的抽象和配置方式不同,但共同点都是围绕张量切分和多设备执行展开。理解这些差异,有助于在阅读文档或设计训练方案时避免把“概念相同”误认为“实现完全一致”。
| 实现视角 | 关注重点 | 理解方式 |
|---|---|---|
| 网络结构与运行过程 | 如何定义并行网络、如何组织训练脚本 | 从工程流程理解张量分片如何接入训练 |
| 模型并行文档 | 将网络中的张量切分到不同设备 | 从降低单设备显存消耗理解模型并行价值 |
| 3D 张量并行 | 神经网络模型计算并行化、通信成本优化 | 从更高维度组织计算与通信 |
| SPMD 与 DTensor 分片 | 用统一程序逻辑表达多设备分片执行 | 从分片算法和张量抽象理解底层机制 |
实际落地时,不建议只看“是否支持张量并行”这一项。更重要的是确认框架如何声明切分维度、如何映射设备、如何表达分片张量,以及是否提供适合当前模型结构的并行组织方式。对于大模型训练,张量并行通常也需要与整体分布式训练方案一起评估,而不是孤立选择。