模型层 开放阅读

Micro-batch

Micro-batch

概念 ID
micro-batch
更新时间
2026-05-29
来源数量
待补

Micro-batch(微批次)深度学习页


3 秒看懂

Micro-batch 是分布式训练中被切分后、在单个设备(GPU/加速器)上一次完成前向与反向传播的最小数据单元。 它是大批次(Global Batch)的子集——多张 GPU 各自处理一个 micro-batch,再通过梯度同步(AllReduce)或梯度累积来等价地训练一个大 batch。在流水线并行中,micro-batch 还是填充流水线各阶段、减小”气泡”(bubble)的核心调度单位。


3 分钟产业解释

为什么需要切 Micro-batch?

大模型训练有两个硬约束在打架:

约束原因
需要大 batch大 batch 提高 GPU 利用率、减少通信轮次、稳定训练统计
单卡显存有限batch 越大,激活值(activations)占用显存越多;单卡放不下

Micro-batch 就是解决这对矛盾的基本工具:

Global Batch Size = N_GPU × Micro-batch Size × Gradient Accumulation Steps
  • 数据并行(DP):每张卡分到一个 micro-batch,各自前向/反向,然后 AllReduce 梯度。
  • 流水线并行(Pipeline):将 micro-batch 序列依次注入流水线各阶段,让不同阶段同时工作,最大化硬件利用率。
  • 梯度累积:同一张卡串行跑多个 micro-batch,逐次累加梯度,最后做一次参数更新——等效于更大的单卡 batch。

产业关联

Micro-batch 的大小直接影响:

  • 显存占用:决定模型能在多少张卡上跑起来(切分策略的输入参数)
  • 训练吞吐:micro-batch 太小 → GPU 算力闲置;太大 → 显存 OOM 或 pipeline bubble 变大
  • 通信开销:每个 micro-batch 反向完成后都要通信,micro-batch 越多、通信轮次越频繁
  • 超参调优:学习率 warmup、LAMB/LARS 等大 batch 优化器都与 effective batch size 直接挂钩

它是训练框架(Megatron-LM、DeepSpeed、Alpa、PyTorch FSDP)中最基础的调度概念之一,也是集群算力规划时必须确定的核心参数。


15 分钟专家深入

1. Micro-batch 在三种并行策略中的角色

(a) 数据并行(Data Parallelism, DP)

┌──────────────────────────────────────────────┐
│              Global Batch (B)                │
│  ┌────────┐ ┌────────┐     ┌────────┐       │
│  │ μB (GPU0)│ │ μB (GPU1)│ ... │ μB (GPUn)│       │
│  └────────┘ └────────┘     └────────┘       │
│      ↓          ↓               ↓           │
│   fwd+bwd    fwd+bwd        fwd+bwd        │
│      └─────────┼───────────────┘            │
│          AllReduce 梯度                      │
│          参数更新                             │
└──────────────────────────────────────────────┘
  • 每张卡的 micro-batch = B / N_GPU
  • 通信模式:每个 micro-batch 完成后 AllReduce(或 ReduceScatter + AllGather,如 ZeRO)
  • micro-batch 越小 → 通信越频繁 → 通信/计算比越大 → 吞吐下降

(b) 流水线并行(Pipeline Parallelism, PP)

这是 micro-batch 最核心的舞台。一个 global mini-batch 被切成 m 个 micro-batch,依次注入 P 个流水线阶段:

时间 →
Stage 0: [μB1][μB2][μB3][μB4]    [   ][   ][   ][   ]  ← 反向
Stage 1: [   ][μB1][μB2][μB3][μB4]    [   ][   ][   ]  ← 反向
Stage 2: [   ][   ][μB1][μB2][μB3][μB4]    [   ][   ]  ← 反向
Stage 3: [   ][   ][   ][μB1][μB2][μB3][μB4]    [   ]  ← 反向
         ▲                    ▲
         │  前向 warmup 泡泡   │  反向 cooldown 泡泡

经典气泡率公式(GPipe 调度下)

Bubble ratio = (P - 1) / (m + P - 1)

其中 P = 流水线阶段数,m = micro-batch 数量。

1F1B 调度 可将气泡率降低至:

Bubble ratio = (P - 1) / m
  • 当 m >> P 时,bubble 趋近于零——这就是为什么训练大模型时往往采用大量 micro-batch。
  • 典型实践:P = 8 时,m ≥ 64 可将 bubble 控制在 ~10% 以内。

(c) 梯度累积(Gradient Accumulation)

GPU 内部时间线:
[μB₁ fwd+bwd] → [μB₂ fwd+bwd] → [μB₃ fwd+bwd] → [μB₄ fwd+bwd] → [AllReduce + Update]
              ↑ 累积梯度 ↑       ↑ 累积梯度 ↑       ↑ 累积梯度 ↑
  • 4 个 micro-batch 的梯度累加 → 等效 batch size = 4 × μB
  • 作用:在显存不足以容纳大 batch 时,模拟大 batch 训练效果
  • 注意:梯度累积期间 BatchNorm 的统计量是按 micro-batch 计算的,可能与全局 batch 统计量有差异(实践中常用 GroupNorm/LayerNorm 替代)

2. Micro-batch 大小与显存的关系

单张 GPU 上,micro-batch 引入的显存占用主要来自:

显存项与 μB 的关系典型量级
激活值(Activations)线性正比(μB 越大,存储的中间激活越多)通常是显存大户
模型参数与 μB 无关固定
优化器状态与 μB 无关通常 ≈ 参数量 ×12(Adam,FP32 主副本 + 一阶/二阶矩)
梯度缓冲与 μB 无关(梯度大小 = 参数大小)固定
临时计算缓冲与 μB 弱相关视算子实现而定

关键公式(估算)

激活显存 ≈ L × μB × s × h × bytes_per_element × recomputation_factor
          + 注意力矩阵显存 (约 L × μB × num_heads × s² × bytes_per_element,长序列下显著)

其中 L = 层数,s = 序列长度,h = 隐藏维度,num_heads = 注意力头数。常见简化估算仅涵盖了线性项,忽略了与 s² 成正比的注意力得分矩阵(形状 [μB, num_heads, s, s])的显存占用;当序列长度较大(例如超过 32k tokens)时,该项可能成为内存瓶颈。开启 activation recomputation(重计算)时,部分策略可选择重计算注意力矩阵以消除或降低这项开销,但具体实现需结合实际配置评估,计算量通常增加约 30%-40%。[来源:Megatron-LM / Chen et al. 2016, “Training Deep Nets with Sublinear Memory Cost”]

3. 1F1B 调度策略

为了减少 pipeline bubble 中的显存峰值,Megatron-LM 等框架采用 1F1B(One Forward One Backward) 调度:

Stage 0: F1 F2 F3 F4 | B4 B3 F5 B2 F6 B1 ...
Stage 1:    F1 F2 F3 F4 | B4 B3 F5 B2 F6 B1 ...
  • 先用 (P-1) 个 micro-batch 填充流水线 warmup 阶段
  • 然后交替执行前向和反向——始终只在流水线中保留有限个 micro-batch 的激活值
  • 相比 GPipe 的”全部前向→全部反向”,1F1B 将显存峰值从 O(m × activation_per_μB) 降至 O(P × activation_per_μB)

[来源:Narayanan et al., “Efficient Large-Scale Language Model Training on GPU Clusters,” SC 2021]

4. Micro-batch 对训练收敛性的影响

一个常被忽视的问题:

  • 相同 global batch size 下,micro-batch 的切分方式会影响 BN 统计量和精度
  • 如果使用 FP16 混合精度训练,micro-batch 内的 loss scaling 也受 μB 大小影响
  • 极小的 μB(如 = 1)可能导致梯度估计方差大、训练不稳定
  • 极大的 μB 受显存限制,且可能需要更大的学习率(线性 scaling rule)

实践中的典型 micro-batch 大小:

  • LLM 训练(GPT 类):通常 1-8 sequences / micro-batch
  • CV 大模型(ViT 等):通常 4-32 images / micro-batch
  • 视频/多模态模型:因序列极长,往往 μB = 1

技术原理(最深)

核心机制

Micro-batch 本身不是一个”网络组件”或”算子”,而是分布式训练框架中的调度抽象。它的技术本质是:

  1. 将全局数据流切分为可独立执行前向/反向传播的最小计算块
  2. 在时间维度上错开这些计算块的执行,以实现并行或流水线化

Pipeline Parallelism 中的 Micro-batch 调度图

          Micro-batch 流水线调度 (1F1B, P=4 stages, m=8 micro-batches)
时间步 →  t1    t2    t3    t4    t5    t6    t7    t8    t9   t10   t11   t12
Stage 0: [F1]  [F2]  [F3]  [F4]  [B4]  [F5]  [B3]  [F6]  [B2]  [F7]  [B1]  [F8]
Stage 1:       [F1]  [F2]  [F3]  [F4]  [B4]  [F5]  [B3]  [F6]  [B2]  [F7]  [B1]
Stage 2:             [F1]  [F2]  [F3]  [F4]  [B4]  [F5]  [B3]  [F6]  [B2]  [F7]
Stage 3:                   [F1]  [F2]  [F3]  [F4]  [B4]  [F5]  [B3]  [F6]  [B2]

F = 前向传播    B = 反向传播
[ ] = 一个 micro-batch 在一个 stage 上的一次计算
  • P2P 通信:相邻 stage 之间通过 point-to-point (send/recv) 传递激活值(前向)和梯度(反向)
  • 梯度同步:一个 micro-batch 的反向传播完成后,梯度在数据并行维度上做 AllReduce

显存分析公式(1F1B 稳态阶段)

Peak Activation Memory = P × (activation_size_per_μB) + (P-1) × communication_buffer

对比 GPipe(先全部前向、再全部反向):

Peak Activation Memory (GPipe) = m × (activation_size_per_μB)

当 m >> P 时,1F1B 显存优势极其显著。

关键参数之间的约束关系

# 伪代码
global_batch_size = target_samples_per_step  # 由训练配方决定
n_gpu = num_gpus                              # 集群 GPU 总数
tp_degree = tensor_parallel_size              # 张量并行度
pp_degree = pipeline_parallel_size            # 流水线并行度
dp_degree = n_gpu / (tp_degree * pp_degree)   # 数据并行度

micro_batch_per_gpu = 1  # 通常从 1 开始尝试
gradient_accum_steps = global_batch_size / (dp_degree * micro_batch_per_gpu)

# 显存约束:
# activation_mem(micro_batch_per_gpu, seq_len, hidden_dim, n_layers)
#   + model_mem + optimizer_mem ≤ gpu_memory

# 吞吐约束:
# pipeline_bubble ≈ (pp_degree - 1) / (gradient_accum_steps + pp_degree - 1)
# bubble 应 < 10-15%,否则浪费算力

Interleaved 1F1B(Virtual Pipeline Parallelism)

Megatron-LM 的进阶方案:将每个 stage 的模型层拆成若干 virtual stages,micro-batch 在 virtual stages 之间交错执行,进一步减小 bubble:

Bubble ratio (interleaved) ≈ (P-1) / (m × v)

其中 v = virtual stages per rank(每个 rank 内的虚拟阶段数)。但代价是通信量增加约 v 倍。

[来源:Korthikanti et al., “Reducing Activation Recomputation in Large Transformer Models,” MLSys 2023 (Megatron-LM 团队)]

技术演进史

时间里程碑micro-batch 相关贡献
2016Chen et al., “Sublinear Memory Cost”提出 activation checkpointing / recomputation,允许更小显存下用更大的 μB
2018Megatron-LM v1系统化张量并行 + 数据并行,micro-batch 配置成为显式训练参数
2019GPipe (Huang et al., Google)首次在生产级模型中使用 pipeline parallelism + micro-batch 流水线调度,明确 bubble 公式
2019PipeDream (Narayanan et al., Microsoft Research)提出 1F1B 调度和异步 pipeline,micro-batch 成为流水线核心调度单位
2020DeepSpeed ZeRO (Rajbhandari et al.)ZeRO-1/2/3 切分优化器状态/梯度/参数,micro-batch 大小约束从”放得下模型+优化器”变为主要”放得下激活”
2021Megatron-LM v3 (Narayanan et al., SC’21)提出 interleaved 1F1B (virtual pipeline),进一步降低 bubble 率
2021Alpa (Zheng et al., UC Berkeley)自动搜索最优的 micro-batch 切分 + 并行策略组合
2023DeepSpeed-Ulysses / Ring Attention超长序列场景下,将序列维度也切成 micro-segments 处理,micro-batch 概念向序列维度扩展
2023-24FSDP2 (PyTorch) / Megatron-Coremicro-batch 配置与 activation recomputation、selective recomputation 深度耦合

技术路线对比

不同 Pipeline 调度策略中的 Micro-batch 行为

调度策略Bubble Ratio显存峰值(激活)通信模式代表实现
GPipe(全前向→全反向)(P-1)/(m+P-1)O(m × act_μB)批量 P2PGPipe, early Megatron
1F1B(交替前向/反向)(P-1)/mO(P × act_μB)流式 P2PMegatron-LM, DeepSpeed
Interleaved 1F1B (V-Sched)(P-1)/(m·v)O(v × P × act_μB)流式 P2P, 量 ×vMegatron-LM v3
Zero Bubble Pipeline趋近于 0O(P × act_μB)流式 P2P + 额外调度Qi et al., 2023

注:所有公式为理想情况近似,实际 bubble 受计算时间不均匀、通信延迟等因素影响。[来源:各原始论文]

Micro-batch vs. Mini-batch vs. Global Batch

术语定义典型大小 (LLM 训练)
Sample一个训练样本(一条文本序列等)
Micro-batch (μB)单个设备一次前向/反向的样本数1-8 sequences
Mini-batch一次参数更新前的总样本数(含梯度累积)通常 = global batch
Global Batch所有数据并行 rank × 梯度累积步数 × μB数百~数百万 tokens
Gradient Accumulation Stepsglobal_batch / (dp_degree × μB)4-256

上下游

上游(Micro-batch 的依赖方)

硬件层:  GPU/TPU 显存容量、HBM 带宽、NVLink/NVSwitch 互联带宽
    ↓
系统层:  集群拓扑、通信库 (NCCL)、调度器
    ↓
框架层:  并行策略 (TP/PP/DP/SP/EP)、activation recomputation 策略
    ↓
配方层:  seq_len、hidden_size、num_layers → 决定 activation_per_μB
    ↓
═══════════════════════════════════════
  MICRO-BATCH SIZE 的选择
═══════════════════════════════════════

下游(Micro-batch 影响的环节)

MICRO-BATCH SIZE
    ↓
    ├──→ 显存占用 (activation memory) → 决定能否跑在现有硬件上
    ├──→ Pipeline bubble ratio → 影响 MFU (Model FLOPS Utilization)
    ├──→ 梯度统计精度 → 影响收敛性
    ├──→ 通信频率 → 影响 allreduce/P2P 开销占比
    ├──→ 学习率调度 → 与 effective batch size 联动
    └──→ BatchNorm 统计量 (若使用) → 影响模型精度

关键指标

指标定义与 Micro-batch 的关系
MFU (Model FLOPs Utilization)实际 FLOPS / 理论峰值 FLOPSμB 太小→ GPU 利用率低 → MFU 下降;μB 太大→ 显存受限、bubble 大
HFU (Hardware FLOPs Utilization)含 recomputation 的总计算 / 理论峰值如果 μB 过小需频繁 recomputation,HFU ≠ MFU
Pipeline Bubble %流水线中空闲时间占比bubble ≈ (P-1)/(m+P-1),m = micro-batch 数
Activation Memory per Layer单层单个 μB 存储的激活字节数线性正比于 μB 大小
Communication / Computation Overlap通信是否被计算掩盖μB 大 → 计算时间长 → 更容易掩盖通信
Tokens per Second per GPU单卡吞吐核心性能指标,受 μB 选择直接影响

供需与市场数据

Micro-batch 如何影响算力供需

Micro-batch 的选择看似是”调参细节”,但它直接决定了等效算力利用率,进而影响:

  1. GPU 需求量:同样的训练任务,MFU 从 30% 提升到 50%,所需 GPU 数量减少 40%
  2. 训练成本:以 LLM 训练为例,MFU 每提升 1 个百分点,千万美元级项目可节省数十万美元
  3. 硬件规划:HBM 容量(决定最小 μB 的激活能否放下)、互联带宽(决定 pipeline 通信能否掩盖)是硬件采购的关键考量

行业实践参考

模型/团队公开报告的配置来源
GPT-3 (175B)μB=2, TP=8, PP=~16, 1024 A100[Brown et al., 2020; Megatron-LM 相关讨论]
Llama 系列μB=1~4 (序列级), 使用 gradient accumulation[Touvron et al., 2023; Meta 公开技术报告]
典型 70B 模型训练TP=8, PP=4, DP=~16, μB=1-2, grad_accum=8-32[行业估算, 基于公开 blog 和技术分享]

注:具体配置因集群规模、框架版本、训练阶段而异。上表为公开资料中的典型案例,非精确推荐值。


代表公司与资本映射

层级公司/项目与 Micro-batch 的关系
框架NVIDIA (Megatron-LM, Megatron-Core)micro-batch 调度的工业级参考实现;1F1B / interleaved 1F1B 的主要推动者
框架Microsoft (DeepSpeed)ZeRO 系列优化了显存分配,间接影响 μB 的可选范围
框架Meta (PyTorch FSDP)FSDP 的 sharding 策略影响 activation memory,改变 μB 约束
框架Google (JAX/Pax)TPU 上的 pipeline parallelism 实现,micro-batch 概念类似但调度细节不同
自动化Alpa (Anyscale/UC Berkeley 系)自动搜索最优 μB + 并行策略
硬件NVIDIA (H100/H200/B100/B200)HBM 容量直接决定 μB 上限;NVLink/NVSwitch 带宽决定 pipeline 通信延迟
硬件AMD (MI300X)192GB HBM → 允许更大 μB 或更少流水线切分
云厂商AWS / Azure / GCP集群互联拓扑影响 μB 的通信成本,间接影响训练效率

投资逻辑

核心观点

Micro-batch 本身不是一个可投资的”技术赛道”,但它是理解以下投资逻辑的关键透镜

  1. 显存即瓶颈 → HBM 和封装技术的投资逻辑

    • μB 的上限由 activation memory 决定 → 更大 HBM → 更大 μB → 更高 MFU → 算力更”值钱”
    • SK 海力士/三星/美光的 HBM 产能直接影响 AI 训练效率
    • 先进封装(如 CoWoS)的产能瓶颈同样制约了大 HBM 芯片的供给
  2. 互联带宽 → 通信效率的投资逻辑

    • Pipeline parallelism 的 P2P 通信延迟直接决定 μB 的计算/通信比
    • NVLink/NVSwitch 带宽、InfiniBand/RoCE 集群网络是关键
  3. 训练效率软件栈 → 框架价值

    • 同样的硬件,Megatron-Core vs. naive DDP 的 MFU 差异可达 2-3 倍
    • 更好的 μB 调度 = 更低的训练成本 = 框架的商业价值
  4. 推理侧的 μB(micro-batch serving)

    • 推理场景中,μB 概念延伸为 dynamic batching / continuous batching
    • vLLM、TensorRT-LLM 等推理引擎的核心优化之一就是 micro-batch 调度

常见误读纠偏

❌ 误读 1:“Micro-batch 越大越好”

纠正:不是。μB 增大的限制包括:

  • 显存:activation memory 线性增长,可能 OOM
  • Pipeline bubble:在 pipeline 并行中,μB 数 m 与 bubble 率成反比,但 μB 大意味着 m 小(global batch 固定时),bubble 反而增大
  • 收敛性:过大的 μB 配合错误的学习率可能导致训练发散
  • 最优 μB 通常是硬件约束(显存、通信)和软件约束(bubble、收敛)的平衡点,需要实验确定

❌ 误读 2:“Micro-batch 大小等价于 batch size”

纠正:三者完全不同。在分布式 + 流水线 + 梯度累积的设定下:

global_batch = data_parallel_degree × pipeline_micro_batches × gradient_accum_steps × μB

一个 μB=1 的配置,通过 DP×PP×accum 的乘数,可以实现 global batch 达数百万 token 的训练。混淆这些层次会导致对训练配置的完全错误理解。

❌ 误读 3:“Pipeline parallelism 的 bubble 可以通过增大 μB 来消除”

纠正:增大 μB 并不直接减小 bubble——关键是增加 micro-batch 的数量 m。在 global batch 不变时,增大 μB 意味着 m 减小,bubble 反而增大。真正减小 bubble 的方式是:

  • 增大 global batch(从而增加 m)
  • 减少 pipeline 阶数 P
  • 采用 1F1B 或更先进的调度策略
  • 采用 zero-bubble pipeline(将反向计算拆分为输入梯度和权重梯度两部分,填补空闲时段)

❌ 误读 4:“流水线并行中每个 micro-batch 独立计算梯度”

纠正:在一个 pipeline iteration 中,所有 m 个 micro-batch 的梯度被累加后才做一次参数更新(同步 pipeline 如 GPipe/1F1B)。每个 μB 的反向传播产出的是该 μB 对总 loss 的梯度贡献,最终:

total_gradient = Σ(gradient_μBi) / m

只有异步 pipeline(如 PipeDream-Flush 的变体)才会对不同 μB 使用不同版本的参数,但这也带来了”stale gradient”问题。


学习路径

入门 → 进阶 → 专家

Level 1 (入门):
  ├─ 理解 batch / mini-batch / micro-batch 的区别
  ├─ 跑一次 PyTorch DDP 示例,观察 grad_accum_steps 的效果
  └─ 阅读: PyTorch Distributed Training 官方教程

Level 2 (进阶):
  ├─ 精读 GPipe 论文 (Huang et al., NeurIPS 2019)
  ├─ 精读 Megatron-LM v3 (Shoeybi et al., 2020; Narayanan et al., SC 2021)
  ├─ 手推 bubble ratio 公式,理解 1F1B 调度流程
  └─ 在 Megatron-LM 代码中追踪 micro-batch 的数据流

Level 3 (专家):
  ├─ 精读 Alpa (Zheng et al., OSDI 2022) — 自动并行策略搜索
  ├─ 精读 Zero Bubble Pipeline (Qi et al., 2023)
  ├─ 精读 "Reducing Activation Recomputation in Large Transformer Models" (MLSys 2023)
  ├─ 理解 μB 与 sequence parallelism / context parallelism 的交互
  └─ 实际在千卡集群上调优 μB 配置并测量 MFU 变化

推荐实操

  1. Megatron-LM 官方 examples:调整 --micro-batch-size, --global-batch-size, --num-layers 等参数,观察显存与吞吐变化
  2. DeepSpeed 的 ds_config 中的 train_micro_batch_size_per_gpu:结合 ZeRO stage 1/2/3 测试不同 μB 对可训练性的影响
  3. PyTorch FSDP:设置 batch_sizegradient_accumulation_steps,比较 μB=1 vs μB=4 的 MFU
  4. torch.profiler 记录不同 μB 下的 GPU timeline:直观看到计算/通信 bubble

最后更新:2025 年 3 月 | 适用生态:PyTorch 2.x, Megatron-Core, DeepSpeed 0.14.x, FSDP2

source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型