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

N×NのFP16(2バイト)の行列どうしの積で、2つの入力を1回ずつ読み、結果を1回書くとする。演算強度(1バイトあたりの演算数)はおよそいくらか。

  1. A1/3
  2. BN/3
  3. C3N
答えと解説を見る

正解:B. N/3

演算の数は2N³、メモリの読み書きは3つの行列で3N²要素、FP16なので6N²バイトです。演算強度は2N³÷6N²=N/3で、N=1024なら約340になります。行列の積は大きいほど1バイトあたりの計算が増えるので、演算器の性能を引き出しやすい処理です。一方、要素ごとの足し算のような処理は演算強度が1未満で、メモリの帯域で速さが決まります。

  • A. Nに比例して大きくなります。
  • B. 正しい。2N³÷6N²=N/3です。
  • C. 演算の数を多く見積もりすぎています。
この分野を解く 分野ページへ

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

  1. ピーク性能100 TFLOPS、メモリ帯域2 TB/sのアクセラレータで、演算強度が10 FLOP/バイトの処理を実行する。Rooflineモデルで見積もった達成できる性能はいくらか。
  2. 入力が1つだけ(バッチサイズ1)のとき、全結合層の計算(重みの行列とベクトルの積)がメモリ律速になりやすい理由として正しいものはどれか。
  3. 推論でバッチサイズ(まとめて処理する入力の数)を大きくすると、処理全体の効率が上がりやすい理由はどれか。
  4. 推論でバッチサイズを大きくしすぎたときの欠点として正しいものはどれか。
  5. 大規模言語モデルの推論は、入力の文章をまとめて処理する段階(プリフィル)と、1トークンずつ出力を作る段階(デコード)に分かれる。それぞれの性能を主に決めるものの組み合わせとして正しいものはどれか(バッチが小さい場合)。