What's micro batch ?

Micro Batch 是深度学习中常用的一个概念,特别是在处理大模型的训练和推理时。它指的是将一个大的批次(batch) 进一步划分为多个较小的批次来处理。这种策略可以用于提升硬件利用率、优化内存使用或适应特定的硬件限制。

Micro Batch 的定义

在训练或推理中,数据通常会以批量(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) 训练阶段

  • 显存优化:
    • 处理大模型时,如果一次性加载整个 batch 所需要的显存太大,切分成 micro batches 可以逐步处理,减少显存占用.
    • 通过 梯度累积 (Gradient Accumulation), 每次处理一个 micro batch 的梯度,最后在所有 micro batches 的梯度累加后再更新模型参数。
  • 硬件限制适配:
    • 当 GPU 的显存容量不足以支持大 batch 时,通过 micro batch 的方式可以让训练依然在较小的 GPU 上进行。

(2) 推理阶段

  • 动态批处理 (Dynamic Batching) :
    • 推理任务中,多个请求可能是并发的,但每个请求的数据量可能不一致。通过 micro batch 将它们动态合并,能高效地利用硬件资源。
    • for example:一个 LLM 的推理服务器可能需要同时处理多个输入,将这些输入组成一个 micro batch 来提高吞吐量。
  • 流水线并行优化 :
    • miro batch 可以帮助流水线并行 (Pipeline Parallelism) 更好的调度计算资源,例如让每个模型 slice 都在不同的 micro batches 上并行计算。

3. Micro Batch 的优势

1. 显存效率:
  • 通过切分大的 batch,减少显存需求,适配资源有限的硬件。
2. 吞吐量提升:
  • 在推理中,通过 micro batch 动态组合多个请求,可以显著提升模型的吞吐量
3. 灵活性:
  • 可以适配不规则的输入数据( for example 长度不一的序列)

4. Micro Batch 的注意事项

1. 梯度累积(在训练中):
  • 如果切分成 micro batches,需要在最后累积梯度后统一更新参数,否则效果等同于降低 batch size。
2. 批次内数据依赖 (inference) :
  • micro batch slice 可能导致数据的上下文丢失 (e.g. 序列生成任务中),需要保证切片后每个 micro batch 的数据仍然是独立的。
3. 通讯开销
  • 在多 GPU 场景中,如果每一个 micro batch 都需要与其他 GPU 通信,会带来额外的通信开销

5. 应用场景

  • 大模型训练 :分布式训练中,通过 micro batch 和 梯度累积来减少显存的占用。
  • 大模型推理 :LLM 的推理框架 (e.g. Hugging Face 、vLLM) 常用 micro batching 来提高请求的吞吐量。
  • 混合并行 : 结合数据并行、模型并行和流水线并行时,micro batch 常用于更高效的任务分配。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容