先给结论:大模型训练不能靠单卡硬扛。单卡装的是参数、优化器状态、激活、梯度和输入,五样叠在一起很快爆。扩展有两轴:数据并行把批次切开,模型并行把参数切开。不拆这两轴,只会在显存报错和流水气泡之间来回撞。先写清切的是数据还是模型,再谈拓扑和通信。

为什么「加卡」不是一张训练合格证

痛点是把卡数当成进度。卡多可以更快,也可以把通信打满、把流水线空出一大截。训练的本质仍是损失对参数的梯度下降。批次小,梯度吵,步数要多;批次大,梯度稳,步长可以更大,但算得更贵。再大到接近真梯度,再加批次几乎不涨。这个转折叫梯度噪声尺度,还随训练变大:模型变好,梯度更有信息,可承受的批次也会变大。所以批次是课程,不是固定超参。

单卡先会撞显存。参数一份,梯度一份,优化器往往还要动量估计,激活随结构和批次涨,输入也占一块。单卡技巧都是用时间换空间:梯度累积用小步累成大有效批次;激活重计算前向丢掉、后向再算;不常用的状态卸到主机内存。三件都能挤,但挤完仍慢,也仍有上限。要在合理时间里训更大模型和更大数据,必须把计算分到一簇机器上。

数据并行:每张卡一份完整模型,批次切开,各自算,再把梯度合成平均,保证每张卡上的模型同步。模型并行:模型本身装不下时,按层切开(流水线)或把一层里的矩阵切开(张量)。最吃紧时两轴一起用,还要把优化器状态也切散。

五步把分布式训练从加卡收成门禁

  1. 先数显存五件套。说不清参数、优化器、激活、梯度、输入各占多少,禁止谈加卡。
  2. 批次按噪声尺度走。完美放大区可以近似线性加步长;无效放大区再加批次只烧钱。训练中途批次可以再翻,但要当课程写进配方,并盯损失尖峰。
  3. 数据并行用全卡归约同步梯度。各自更新会让副本慢慢走散。通信要走带宽友好的模式,不要所有卡把梯度交给一个中心再发回来。
  4. 流水线要打微批次。按层切会让同一时刻只有一张卡在忙,空档叫流水气泡。把一批拆成微批次交错前向后向,气泡才缩小。同步更新稳,交错更满但版本不一致,两档分列。
  5. 张量切要配成对。列切前向要拼输出、后向要归约输入梯度;行切相反。相邻两层一列一行,非线性可以本地做,同步点能少一半。通信模式要贴拓扑:节点内高带宽切张量,跨节点较慢切数据或流水。
观察 误读 工程含义 门禁
卡很多 已经会训大模型 可能在空转或在通信 看利用率和气泡
批次翻倍 一定更快 可能已进无效放大 看噪声尺度
单卡技巧都开了 还能再挤 时间换空间已到头 改切数据或切模型
每卡一份模型 实现简单 超大模型先爆参数 先模型并行
流水线按层切 任意结构都能切 气泡会吃掉加速 微批次和拓扑

现场有三条。其一,数据并行放大的是有效批次,付的是每卡一份完整模型。今天动辄千亿参数,单卡先装不下,必须先切模型再谈更大批次。把数据并行当唯一答案,会在参数复制这一层就死。

其二,流水线的卖点是不改层内算法也能切。代价是气泡。微批次能填,填太满又会让不同微批次看到不同版本的权重。利用率表格和一致性表格要分开报,禁止用「看起来更满」代替「更新是否同步」。

其三,张量并行把一层的矩阵乘切开,计算更好叠,通信更密。节点内高带宽适合张量切;跨节点更适合数据或流水。配方要写三维:张量平行度、流水平行度、数据平行度,并随批次课程调整。只报总卡数,等于没报配方。

度量六件事:五件套是否量化、批次是否还在完美放大区、数据并行是否真同步、流水气泡占比、张量切的同步次数、三维配方是否写清。六件说不清,分布式训练是采购清单。采购清单不能当训练系统。

有人会说显存报错就再买卡。买卡之前先看切的是哪一轴。切错轴,卡越多通信越疼。切对轴,同样的卡数可以多装一层或多吞一批。

激活往往是被低估的那一块。结构一深、批次一涨,激活能把本够装参数的卡打爆。重计算能换回来,但后向会再算一遍。报显存时把激活单列,才能决定是减小批次、重计算,还是把层切开。

通信原语也要进门禁。分发、收集、广播、归约,以及全收集和全归约,不是实现细节。数据并行靠全归约;张量列切前向全收集、后向全归约;行切反过来。说不清用的是哪一种,排障只能猜。

集群拓扑决定配方上限。同一台机器里的卡用极高带宽互联,跨机器则慢一截。张量切优先吃高带宽;数据切可以跨机器。配方不贴拓扑,理论平行度会在链路上折掉。

结论:分布式训练是两轴配方,不是卡数竞赛

数据并行放大批次,模型并行切开参数,流水和张量是模型并行的两种切法。还把加卡写成已经会训,是把采购当成算法。

你下次看大模型训练声明,先问三维配方和气泡占比。两问答不清,声明只证明有人买得起卡。

效率龙虾 会带着下面这段开聊

按文章《大模型训练不能靠单卡硬扛:必须先把数据并行和模型并行拆开写》把卡点收成可执行步骤:先做什么、别踩哪条、怎么验证。

用效率龙虾试这篇

本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源

常见问题 FAQ

什么是AI智能系统?

「AI智能系统」可概括为:单卡装不下参数、优化器状态、激活和梯度。数据并行放大批次,模型并行切开参数。不拆这两轴,只会在显存报错和流水气泡之间来回撞。 本文从定义、方法与实践要点展开说明。

为什么要关注AI智能系统?

关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:痛点是把卡数当成进度。卡多可以更快,也可以把通信打满、把流水线空出一大截。训练的本质仍是损失对参数的梯度下降。批次小,梯度吵,步数要多;批次大,梯度稳,步长可以更大,但算得更贵。再大到接近真梯度,再加批次几乎不涨。这个转折叫梯度噪声尺度,还随训练变大:模型变好,梯度更有信息,可承受的批次也会变大。所以批次是课程,不是固定超参。

如何落地AI智能系统?有哪些关键步骤?

建议按以下路径推进AI智能系统:1) 先数显存五件套。说不清参数、优化器、激活、梯度、输入各占多少,禁止谈加卡。;2) 批次按噪声尺度走。完美放大区可以近似线性加步长;无效放大区再加批次只烧钱。训练中途批次可以再翻,但要当课程写进配方,并盯损失尖峰。;3) 数据并行用全卡归约同步梯度。各自更新会让副本慢慢走散。通信要走带宽友好的模式,不要所有卡把梯度交给一个中心再发回来。;4) 流水线要打微批次。按层切会让同一时刻只有一张卡在忙,空档叫流水气泡。把一批拆成微批次交错前向后向,气泡才缩小。同步更新稳,交错更满但版本不一致,两档分列。;5) 张量切要配成对。列切前向要拼输出、后向要归约输入梯度;行切相反。相邻两层一列一行,非线性可以本…

AI智能系统适合哪些人或团队?

AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。

关于「为什么「加卡」不是一张训练合格证」,本文给出了什么结论?

在「为什么「加卡」不是一张训练合格证」部分,要点是:计算前向丢掉、后向再算;不常用的状态卸到主机内存。三件都能挤,但挤完仍慢,也仍有上限。要在合理时间里训更大模型和更大数据,必须把计算分到一簇机器上。 数据并行:每张卡一份完整模型,批次切开,各自算,再把梯度合成平均,保证每张卡上的模型同步。模型并行:模型本身装不下时,按层切开(流水线)或把一层里的矩阵切开(张量)。最吃紧时两轴一起用,还要把优化器状态也切散。 五步把分布式训练从加卡收成门禁 先数显存五件套。说不清参数、优化器、激活、梯度

关于「五步把分布式训练从加卡收成门禁」,本文给出了什么结论?

在「五步把分布式训练从加卡收成门禁」部分,要点是:数据切可以跨机器。配方不贴拓扑,理论平行度会在链路上折掉。 结论:分布式训练是两轴配方,不是卡数竞赛 数据并行放大批次,模型并行切开参数,流水和张量是模型并行的两种切法。还把加卡写成已经会训,是把采购当成算法。 你下次看大模型训练声明,先问三维配方和气泡占比。两问答不清,声明只证明有人买得起卡。