マイクロバッチ(Micro-batch)とは
Micro-batch / Microbatch
パイプライン並列においてミニバッチをさらに細かく分割した処理単位で、ステージ間の待機時間削減に使う
概要
マイクロバッチは、パイプライン並列の学習で使われる処理単位。1つのミニバッチをそのまま各パイプラインステージに流すと、あるステージの計算が終わるまで他のステージは待機することになり、その時間(パイプラインバブル)が大きくなる。そこでミニバッチをさらに細かいマイクロバッチへ分割し、各ステージへ順次流し込むことで、複数のマイクロバッチをパイプライン上で同時並行に処理する。 マイクロバッチの数を増やすほどパイプラインの待機時間の割合は小さくなるが、1マイクロバッチあたりのサイズが小さくなりすぎるとデバイスの演算効率が低下するため、両者のバランスを取る必要がある。
利点
- パイプライン並列でのデバイス待機時間(バブル)を減らし、利用率を高められる
- マイクロバッチ数を調整することでメモリ使用量と演算効率のバランスを取れる
欠点
- マイクロバッチが小さすぎると1回あたりの演算効率が落ち、オーバーヘッドが目立つ
- スケジューリング方式によっては実装が複雑になる