模型層 開放閱讀

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 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型