AIハードウェアとソフトウェアスタック
FlashAttentionなどの高速なアテンションの実装の主な考え方として正しいものはどれか。
- A計算をタイルに分けてチップ上のメモリで進め、n×nの大きな中間の表をHBMに書き出さないことで、メモリの読み書きを減らす
- Bアテンションの計算を省略し、近似の答えを出す
- CアテンションをCPUで計算する
答えと解説を見る
正解:A. 計算をタイルに分けてチップ上のメモリで進め、n×nの大きな中間の表をHBMに書き出さないことで、メモリの読み書きを減らす
素直な実装では、n×nの表をHBMに書き、ソフトマックスのために読み直し、さらにValueとの積のために読み直すので、メモリの読み書きが性能を決めてしまいます。FlashAttentionは、QueryとKey・Valueをブロックに分けて共有メモリに読み込み、ソフトマックスを少しずつ更新しながら計算を一度に進めて、表をHBMに書き出しません。計算の量は同じでも、メモリの読み書きが大きく減って速くなります。
- A. 正しい。結果は通常のアテンションと同じです。
- B. 近似ではなく、同じ結果を正確に出します。
- C. GPUのチップ上のメモリを活用します。