返回课堂

完整深入材料 · 保留原页与全部停点。回到相关主讲

四张卡分担数据,为什么仍各存一份?

N46/b0 · 分担训练数据

GPU 0数据 AL₁ → Lₖ → LₙGPU 1数据 BL₁ → Lₖ → LₙGPU 2数据 CL₁ → Lₖ → LₙGPU 3数据 DL₁ → Lₖ → Lₙ每一批数据,仍然经过全部模型层。
分担训练数据

先让四张卡各拿一批不同的训练文本。看数据A,它从模型第一层一直走到最后一层;数据B、C、D也一样。这是数据并行的基本安排:分担的是训练数据,每张卡仍然执行完整模型的计算。先认清这四条路径,再看它们各自要保存什么。

教师备课:指图与模拟问答

指图与推进 · 不朗读指四组数据,各自沿完整层序计算。

N46/b1 · 复制同一套状态

GPU 0数据 AL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡GPU 1数据 BL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡GPU 2数据 CL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡GPU 3数据 DL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡汇总梯度 → 各副本执行相同更新四卡总容量很大 ≠ 每卡自动只存四分之一。
复制同一套状态

现在每张卡都出现上一页的五项状态,仍是同一套工作权重、梯度和更新历史。按刚才的设定,每卡持久小计仍是一百二十八GB。下面的连接表示梯度汇总:各批贡献共同决定更新,各副本执行一致更新。四卡合计容量很大,不等于一个要求完整副本的程序能自动把状态除以四;相同状态仍在四处保存。

教师备课:指图与模拟问答

指图与推进 · 不朗读指四卡相同的五项状态,再指下方共同梯度更新;对照每卡128GB。

N46/b2 · 识别重复保存

GPU 0数据 AL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡GPU 1数据 BL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡GPU 2数据 CL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡GPU 3数据 DL₁ → Lₖ → Lₙ同一套完整状态128 GB / 卡汇总梯度 → 各副本执行相同更新分的是数据;重复保存的状态,可以另作安排。
识别重复保存

这时就能看见另一个设计机会:四份长期副本里面,有很多重复保存的内容。能不能规定每张卡只负责保管一部分?注意,我们还没有让数据A只跑一部分层。数据仍要经过完整模型;我们要改变的是状态的保存责任。下一页先把责任分开,随后马上处理它带来的实际问题:轮到某一层时,本卡没有保存的参数,计算该从哪里取得?

教师备课:指图与模拟问答

指图与推进 · 不朗读对照四份相同状态,提出分开保存责任。

补充推导、边界与来源

数据并行中,每张卡处理不同数据,但每批数据都经过整个模型。各卡参数梯度经汇总后执行一致更新,所以模型副本维持一致。本课 DDP 设定下,各卡都长期保存完整工作权重、梯度和优化器状态:每卡128GB,不因四卡总容量而自动除以四。

层用 L₁…Lₙ 表示,参数分片用 θ₀…θ₃ 表示,不能混为各卡分管不同层。TP 切分同一层的张量计算,PP 分配不同层并安排微批流水线,这些与数据并行的身份不同。

DDP、TP、PP与流水气泡;旧四卡图与详细说明。

本页证据与条件

8B / 四卡混合精度 Adam 教学构造;ZeRO 机制,非硬件实测

进入主题正文