跳到主内容

数据并行和张量并行有什么区别?

2026-10-18 发布 来源:我告诉你AI导航 阅读

大模型上多卡训练的第一个岔路口:数据并行和张量并行有什么区别?一个切数据,一个切模型。切法不同,卡间通信的量级不同,适用场景也完全不同。选错了,加再多的卡也只是给瓶颈看戏。

大模型上多卡训练的第一个岔路口:数据并行和张量并行有什么区别?一个切数据,一个切模型。切法不同,卡间通信的量级不同,适用场景也完全不同。选错了,加再多的卡也只是给瓶颈看戏。

结论先说:加卡扩吞吐用数据并行,模型太大切层用张量并行

模型放得进单卡,想训得更快,用数据并行:每张卡持一份完整模型,各算各的批量,定期同步梯度。模型放不进单卡,才需要张量并行:把单层的权重矩阵拆开,多卡合作完成一次前向和反向。

这个判断有个量化的参考线:权重、梯度、优化器状态加起来还占不满单卡显存,数据并行就够;超了,才考虑张量并行。DPO 与 PPO 的门槛差异背后,也有这套显存账在起作用。

切法与通信量的差别

数据并行的通信在梯度同步:每步训练结束,各卡把梯度汇总平均,通信量和模型参数量成正比。因为只在步末通信一次,频率低,用高速互联就能扛住,卡数加到八卡十六卡,扩展性依然不错。这也是它成为默认选项的原因:不用改模型结构,接线即用。

张量并行的通信在每一层内部:一次前向要来回传激活值,一次反向还要再传一遍,通信量和层数、批量都相关。通信频率高得多,对互联带宽极其敏感,超过一个节点就容易成为瓶颈,这也是它通常只在一个机器内部用的原因。反过来说,节点内带宽充足的集群,张量并行才能跑出理论效率,跨节点硬上,等待同步的时间会吞掉大半算力。

两种切法在通信上的账完全不同,逐项对一遍。

对比项数据并行张量并行
切什么切数据,每卡一份完整模型,各算各的批量切单层权重矩阵,多卡合作一次前向和反向
通信位置步末同步梯度,每步一次每层内部传激活值,前向反向各传一遍
通信量与模型参数量成正比,频率低与层数、批量相关,频率高得多
带宽要求高速互联即可,八卡十六卡扩展性依然不错对带宽极敏感,超过一个节点就容易成瓶颈
显存前提权重、梯度、优化器状态占不满单卡显存单卡放不下时才需要

各自适合的场景

数据并行的主场是中小模型的多卡提速。同样批量拆成八份,八张卡一轮就训完,吞吐接近线性涨。它的短板在显存:每张卡都要存完整的模型、梯度和优化器状态,模型大了照样放不下,此时加卡只是复制同一份放不下的东西。判断能不能用数据并行,开训前先把单卡显存账算清楚,别等报了内存不足再返工。

张量并行的主场是超大模型。单层权重矩阵横向切开,每张卡只存一片,参数量被摊薄。它的短板在效率和通信,切得越碎,等待同步的时间越多。Kimi 和腾讯元宝背后的长上下文模型训练,都是这套并行组合的大规模实践,资源有限的团队做偏好对齐时,选轻量路线往往更现实,参考SFT 与 RLHF 的成本账。单卡能跑的任务,这些方案一个都用不上,别为不需要的规模提前买单。

实际训练里的组合

真实的大任务几乎都是组合:张量并行解决放不放得下,数据并行解决快不快,再加流水并行解决层深,最后零冗余优化器把显存再榨一榨。多层叠加,才能把几百亿参数的训练塞进一个集群。

叠加的顺序有讲究。先按显存需求定张量并行的切分度,再用剩余卡数填数据并行,最后看层深决定要不要加流水线。每加一层,调试复杂度上一层,出问题时排查的面也大一圈。顺序与比例的课程设计,也要在并行方案定下来之后才好转,否则数据顺序一变,通信模式跟着变。经验不足的团队,宁可少叠一层,也别让排障成本失控。

对照表:数据并行每卡一份完整模型,步末同步梯度;张量并行切开单层权重,层内高频通信;放得下用前者,放不下用后者。加卡之前,先算显存账。

两种并行的三个常问问题

  • 两张卡能用张量并行吗?可以,但提升有限,通信占比高,多数两张卡场景数据并行更划算。
  • 数据并行卡越多越快吗?接近线性到一定程度后会钝化,梯度同步的等待和批量增大后的收敛变慢都是原因。
  • 框架里两种并行能混着开吗?主流框架都支持组合配置,按显存和吞吐两笔账分别定档即可,改配置不用改代码。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]