AIハードウェアとソフトウェアスタック

モデルの層を順に複数のGPUに分けて受け持つパイプライン並列で、バッチを小さなマイクロバッチに分けて流す理由として正しいものはどれか。

  1. Aマイクロバッチにすると、計算の回数が減るから
  2. B前のGPUの処理を待って後ろのGPUが遊ぶ時間(バブル)を減らし、複数のGPUを同時に働かせるため
  3. Cマイクロバッチにすると、GPUどうしの通信が不要になるから
答えと解説を見る

正解:B. 前のGPUの処理を待って後ろのGPUが遊ぶ時間(バブル)を減らし、複数のGPUを同時に働かせるため

バッチ全体をまとめて流すと、1つ目のGPUが計算している間、2つ目以降のGPUは前の結果を待って何もできません。バッチを小さなマイクロバッチに分ければ、1つ目のGPUが2番目のマイクロバッチを計算している間に、2つ目のGPUが1番目を計算する、というように重ねられます。それでも始まりと終わりには待ち(バブル)が残るので、マイクロバッチの数を十分に多くします。

  • A. 計算の回数は同じです。
  • B. 正しい。工場の流れ作業と同じ考え方です。
  • C. 層の間の受け渡しの通信は必要です。
この分野を解く 分野ページへ

AIハードウェアとソフトウェアスタックのほかの問題

  1. 分散学習で使われるオールリデュース(All-Reduce)の通信の働きとして正しいものはどれか。
  2. 学習で使われる勾配チェックポイント(活性化の再計算)の説明として正しいものはどれか。
  3. AI向けのアクセラレータで使われるシストリックアレイが、行列の積を効率よく計算できる主な理由はどれか。
  4. AI向けのアクセラレータが、チップの上に大きなSRAM(数十〜数百MB)を載せることがある主な理由はどれか。
  5. AIアクセラレータのデータフローの方式の1つ「ウェイトステーショナリ(重み固定)」の説明として正しいものはどれか。