Micro Batch 是深度學(xué)習(xí)中常用的一個概念臣缀,特別是在處理大模型的訓(xùn)練和推理時泻帮。它指的是將一個大的批次(batch) 進一步劃分為多個較小的批次來處理。這種策略可以用于提升硬件利用率脂倦、優(yōu)化內(nèi)存使用或適應(yīng)特定的硬件限制元莫。
Micro Batch 的定義
在訓(xùn)練或推理中,數(shù)據(jù)通常會以批量(batch) 的形式喂給模型火欧。一個batch 包含多個樣本茎截,比如一組句子或者圖像。
Micro batch 是將一個大批量 (global batch) 切分成若干較小的批次榆浓,分別依次送入模型中進行計算陡鹃,
- Global Batch Size : 整體的批次大小(e.g. : 128)
- Micro Batch Size : 切分后的每個小批次的大小 (e.g. : 16)
示例 : 如果global batch size = 128
, 而micro batch size = 16
, 那么整個批次會被分成 8 個 micro batches, 每個包含 16 個樣本杉适。
2. Micro Batch 的用途
(1) 訓(xùn)練階段
- 顯存優(yōu)化:
- 處理大模型時,如果一次性加載整個 batch 所需要的顯存太大片习,切分成 micro batches 可以逐步處理蹬叭,減少顯存占用.
- 通過 梯度累積 (Gradient Accumulation), 每次處理一個 micro batch 的梯度,最后在所有 micro batches 的梯度累加后再更新模型參數(shù)孽查。
- 硬件限制適配:
- 當(dāng) GPU 的顯存容量不足以支持大 batch 時盲再,通過 micro batch 的方式可以讓訓(xùn)練依然在較小的 GPU 上進行瓣铣。
(2) 推理階段
- 動態(tài)批處理 (Dynamic Batching) :
- 推理任務(wù)中,多個請求可能是并發(fā)的梦碗,但每個請求的數(shù)據(jù)量可能不一致蓖救。通過 micro batch 將它們動態(tài)合并,能高效地利用硬件資源斩例。
- for example:一個 LLM 的推理服務(wù)器可能需要同時處理多個輸入从橘,將這些輸入組成一個 micro batch 來提高吞吐量。
- 流水線并行優(yōu)化 :
- miro batch 可以幫助流水線并行 (Pipeline Parallelism) 更好的調(diào)度計算資源,例如讓每個模型 slice 都在不同的 micro batches 上并行計算牺勾。
3. Micro Batch 的優(yōu)勢
1. 顯存效率:
- 通過切分大的 batch阵漏,減少顯存需求翻具,適配資源有限的硬件裆泳。
2. 吞吐量提升:
- 在推理中柠硕,通過 micro batch 動態(tài)組合多個請求,可以顯著提升模型的吞吐量
3. 靈活性:
- 可以適配不規(guī)則的輸入數(shù)據(jù)( for example 長度不一的序列)
4. Micro Batch 的注意事項
1. 梯度累積(在訓(xùn)練中):
- 如果切分成 micro batches闻葵,需要在最后累積梯度后統(tǒng)一更新參數(shù)癣丧,否則效果等同于降低 batch size。
2. 批次內(nèi)數(shù)據(jù)依賴 (inference) :
- micro batch slice 可能導(dǎo)致數(shù)據(jù)的上下文丟失 (e.g. 序列生成任務(wù)中)厢钧,需要保證切片后每個 micro batch 的數(shù)據(jù)仍然是獨立的早直。
3. 通訊開銷
- 在多 GPU 場景中憎夷,如果每一個 micro batch 都需要與其他 GPU 通信,會帶來額外的通信開銷
5. 應(yīng)用場景
- 大模型訓(xùn)練 :分布式訓(xùn)練中祥得,通過 micro batch 和 梯度累積來減少顯存的占用蒋得。
- 大模型推理 :LLM 的推理框架 (e.g. Hugging Face 、vLLM) 常用 micro batching 來提高請求的吞吐量饮焦。
- 混合并行 : 結(jié)合數(shù)據(jù)并行窍侧、模型并行和流水線并行時,micro batch 常用于更高效的任務(wù)分配硼啤。