
7 月 22 日,2026 夏季 InfiniTensor 训练营训练系统方向第二课《分布式训练》开讲。
前置课程《训练基础介绍》讲了大模型训练系统工程,涵盖神经网络原理、反向传播机制等内容,并介绍了自研训练框架 InfiniTrain 的架构与分布式并行技术。
本节课基于训练框架编程与通信基础,深入探讨分布式训练的核心机制,涵盖数据并行、张量并行、流水并行及专家并行等内容。
课程配套开源项目 InfiniTrain 已实现大部分开发,同时专业阶段作业项目 TinyInfiniTrain 即将发布,包含具体作业要求与实现指南,大家可通过结尾 GitHub 链接获取代码、提交作业。
为什么需要分布式训练?
1. 显存容量瓶颈
小模型时代(如 AlexNet)单张消费级显卡即可完成训练。进入大模型时代(如 GPT-3 的 175B 参数),仅模型权重在 FP32 存储下就需占用超 700GB 显存,若加上梯度、优化器状态和中间激活值,单卡显存已完全无法承载。

2. 算力增长滞后
近年来业界领先模型规模增长达 410 倍,而显卡算力(从 P100 到 H100)显存仅增长不到 7 倍,单卡算力与模型规模之间产生了数量级的差距。
3. 内存墙限制
GPU 计算单元(厨师)速度飞速提升,但内存带宽与访问速度(仓库送食材)未能同比例增长,导致计算单元大量时间处于等待数据搬运的状态,算力利用率受限。

4. 分布式训练的核心收益

将模型数据或计算任务分散到多设备协同执行,可获得三大收益:
- 突破容量:聚合多卡显存,解决单卡容量上限问题。
- 缩短时间:聚合多卡算力,加速训练进程。
- 缓解内存墙:聚合多设备内存带宽,在合理切分下提升数据流速。
注:分布式并非卡越多越快,切分数据必然引入通信开销,平衡“节省的资源”与“引入的通信”是实操关键。
数据并行
核心原理

数据并行沿 Batch 维度切分输入数据,每张 GPU 保存完整且初始状态一致的模型权重。
各卡独立完成前向与反向计算,得到局部梯度后,必须进行梯度聚合,确保每张卡获取相同的全局梯度并执行相同的优化器更新,从而保持模型副本一致。
梯度聚合的两种经典范式

- 参数服务器(Parameter Server):中心化聚合。Worker 将梯度传回中心节点,由中心节点聚合更新后重新分发。缺点是中心节点易成为带宽与处理瓶颈,扩展性受限。
- AllReduce:去中心化集体通信。聚合任务分摊给所有设备,每个 GPU 参与梯度的归约与传播,最终所有 GPU 获得相同结果,有效避免单节点瓶颈,是目前通用实现。
扩展瓶颈与限制

- 通信开销:每个 Step 都需 Reduce,卡数与模型参数越大,同步梯度越多。
- 硬件拓扑依赖:NVLink 与跨机 InfiniBand 的带宽和延迟差异显著影响性能。
- 计算通信比:模型较小或单卡 Batch 过小时,计算快而通信等待长;但全局 Batch 过大又可能影响模型收敛与泛化。
- 单卡容量上限:大模型时代,单卡无法保存完整模型参数,由此引出模型并行。
模型并行
当网络大到无法放入单设备,或完整模型梯度同步代价过高时,需将模型切分至不同设备。各设备处理相同逻辑的一批数据,但仅保存模型的一部分。
张量并行

- 原理:将单层网络的大权重矩阵切分到多张卡上。例如列切分需 AllGather 拼接输出,行切分需 AllReduce 求和输出。

- 优势:显著降低单卡权重、梯度及中间激活值的显存压力,理想情况下缩短计算时间。
- 劣势:通信频繁且处于关键路径;大矩阵切小后单次计算规模变小,可能无法充分利用 GPU 算力。通常优先限制在同一台高速互联的服务器内部。
序列并行

- 原理:针对张量并行未能覆盖的 LayerNorm、Dropout 等逐 Token 算子,进一步沿 Token 序列维度切分激活值。
- 定位:张量并行的补充与优化,通过 AllGather 或 ReduceScatter 转换张量分布,降低单卡激活显存。
上下文并行

- 原理:从模型输入开始按 Sequence 切分,结合 Ring Attention,各卡保留 Query 分片,KV 在组内环形传递并计算部分注意力结果。
- 定位:专为超长序列场景设计,代价是 Attention 前后增加通信,需重点优化通信与计算的重叠。
流水并行

1.原理:将模型不同层分配到不同设备,前向传播通过 Send/Receive 传递中间激活,反向传播反向传递梯度。
2.空泡(Bubble)优化:
- GPipe:将 Mini-batch 切分为多个 Micro-batch,先连续完成所有前向,再连续完成所有反向。切分越多空泡占比越小,但激活值显存占用增加。

- 1F1B:稳定阶段每个设备交替进行一次前向和一次反向,像“砌墙”一样填满流水线,大幅减少空泡。

专家并行

- 原理:面向 MoE(混合专家)模型,通过 Gate 动态路由 Token 到对应专家。将不同专家放置在不同 GPU 上,通过 All-to-All 通信分发 Token 并回收结果。

- 特点:主要用于 MoE 模型中的 Expert 层,将不同专家分布到不同 GPU 上。
- 负载不均衡挑战:热门专家 GPU 排队,冷门 GPU 空闲。解决思路包括:优化路由器(Top-K 选择)、加入辅助损失惩罚不均衡、设置容量约束限制单专家接收 Token 上限。

混合并行实战与策略选择
实际应用中通常采用混合并行,充分利用算力协调不同维度的划分策略。
1. 经典组合案例(以 GPT-3 为例)

- 节点内(张量并行):通信极其频繁,分配在单主机 8 张 GPU 内,利用 NVLink 高速互联。
- 跨节点(流水并行):仅在阶段边界传递激活值,通信量相对较小,分配在多节点组合上。
- 跨主机(数据并行):梯度同步对拓扑灵活度要求高,分配在不同主机之间。
2. 并行策略选择考量
没有一种策略适配所有场景,选择时需综合评估:
- 数据并行:成本为梯度 AllReduce。
- 张量并行:成本为高频层内集合通信。
- 流水并行:成本为阶段边界通信与空泡。
- 专家并行:成本为 Token 路由的 All-to-All 通信及负载不均衡问题。
需结合实际应用场景、算力环境与通信带宽进行针对性调优。
作业提交
提交方式:
网站上传 github 链接,以最新提交为准。Github 链接示例:(需带有 commit 信息,以最新提交为准)
(https://github.com/InfiniTensor/InfiniTrain/tree/4bd441)
加入训练营
📺完整课程内容,请观看直播或查看课程回放:
InfiniTensor 官网: https://www.infinitensor.com
B站直播: InfiniTensor 官方直播间
视频号直播: InfiniTensor 视频号预约
答疑交流: 训练营官方社群⬇️

关注与交流

