AIハードウェアとソフトウェアスタック
入力が1つだけ(バッチサイズ1)のとき、全結合層の計算(重みの行列とベクトルの積)がメモリ律速になりやすい理由として正しいものはどれか。
- Aベクトルの要素の数が多すぎて、演算器に入りきらないから
- B行列とベクトルの積は、GPUでは計算できないから
- C重みの各要素をメモリから読んでも、1回の積和にしか使わないので、演算強度が非常に低いから
答えと解説を見る
正解:C. 重みの各要素をメモリから読んでも、1回の積和にしか使わないので、演算強度が非常に低いから
行列とベクトルの積では、重みの行列の各要素を1回読んで、入力の1つの要素と1回掛けて足すだけです。FP16なら2バイトにつき2回の演算で、演算強度は約1です。重みの読み込みに時間がかかり、演算器はほとんど待っています。同じ重みを複数の入力に使えるように入力をまとめる(バッチを大きくする)と、演算強度が上がります。
- A. 要素の数は律速の理由ではありません。
- B. 計算はできますが、メモリ待ちが長くなります。
- C. 正しい。重みの再利用ができません。