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

複数のGPUで学習するデータ並列の説明として正しいものはどれか。

  1. A各GPUがモデル全体の複製を持ち、データを分けて計算し、求めた勾配を全GPUで平均してから重みを更新する
  2. Bモデルの層を分けて、各GPUが違う層を受け持つ
  3. C1つのGPUだけで計算し、残りのGPUは予備にする
答えと解説を見る

正解:A. 各GPUがモデル全体の複製を持ち、データを分けて計算し、求めた勾配を全GPUで平均してから重みを更新する

データ並列では、すべてのGPUが同じモデルを持ち、学習データのバッチを分けて、それぞれ順伝播と逆伝播を行います。各GPUの勾配は違うので、全GPUで勾配を合計して平均する通信(オールリデュース)を行い、全員が同じ勾配で重みを更新して、モデルの複製を同じに保ちます。モデルが1つのGPUに収まるなら簡単で効果的ですが、GPUの数が増えると通信が重くなります。

  • A. 正しい。最も基本的な並列の方法です。
  • B. それはパイプライン並列です。
  • C. それでは並列になりません。
この分野を解く 分野ページへ

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

  1. 1つのGPUのメモリに収まらない大きな層の行列の積を、複数のGPUで分けて計算するテンソル並列の説明として正しいものはどれか。
  2. モデルの層を順に複数のGPUに分けて受け持つパイプライン並列で、バッチを小さなマイクロバッチに分けて流す理由として正しいものはどれか。
  3. 分散学習で使われるオールリデュース(All-Reduce)の通信の働きとして正しいものはどれか。
  4. 学習で使われる勾配チェックポイント(活性化の再計算)の説明として正しいものはどれか。
  5. AI向けのアクセラレータで使われるシストリックアレイが、行列の積を効率よく計算できる主な理由はどれか。