フラッシュアテンション:基本原則の解説
フラッシュアテンション:基本原則の鮮明な解説 (Flash Attention Vivid Explanation of Fundamental Principles)
Flash Attentionは、2022年に提案された効率的で正確なTransformerモデルの高速化技術です。FlashAttentionは、メモリの読み書き操作を認識することにより、PyTorchで実装された標準のAttentionよりも2〜4倍高速な実行速度を実現し、メモリのわずか5〜20%しか必要としません。
本記事では、Flash Attentionの基本原理について説明し、高速な計算とメモリの節約を実現する方法について説明します。そして、アテンションの精度を損なうことなくこれらを実現する方法を説明します。
前提知識
GPUメモリの階層
図1に示すように、GPUのメモリは複数の異なるサイズと読み書き速度を持つメモリモジュールで構成されています。小さなメモリモジュールほど読み書き速度が速くなります。
A100 GPUでは、SRAMメモリが108のストリーミングマルチプロセッサに分散され、各プロセッサのサイズは192Kです。これは合計で192 * 108KB = 20MBになります。ビデオメモリとして一般的に言及されるハイバンド幅メモリ(HBM)のサイズは40GBまたは80GBです。
- (「AI ga hontōni watashitachi o zenmetsu saseru kanōsei ga aru no ka, shirouto ni yoru gaido」)
- 「パブリックスピーキングのための5つの最高のAIツール(2023年12月)」
- チャットGPTプラグインとの安全なインタラクションの変換ガイド
SRAMの読み書き帯域幅は19TB/sであり、HBMの読み書き帯域幅はわずか1.5TB/sであり、SRAMの1/10以下です。
計算速度の向上に比べてメモリの速度が向上したため、操作はますますメモリ(HBM)アクセスに制約されるようになりました。そのため、HBMへの読み書き操作の回数を減らし、より高速なSRAMを効果的に計算に活用することが重要です。
GPUの実行モデル
GPUは、大量のスレッドで操作(カーネルと呼ばれる)を実行します。各カーネルは、HBMから入力をレジスタとSRAMにロードし、計算を行い、計算結果をHBMに書き戻します。
安全なsoftmax
x = [x1, x2, ..., xN]
の場合、単純なsoftmaxの計算プロセスは式(1)に示されています:
ただし、実際のハードウェアでは、浮動小数点数の範囲は限られています。float32やbfloat16の場合、x ≥ 89
の場合、指数関数の結果はinfになり、オーバーフローの問題が発生します[3]。
数値的なオーバーフローを回避し、数値の安定性を確保するために、計算中に最大値を引くという手法が一般的に使われています。これを「安全な…
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles