Flash Attention 2FA2
Flash Attention 2 は2023年に発表された Flash Attention の改良版です。並列化粒度を見直し非行列演算のオーバーヘッドを削減し、A100 で従来比約2倍の72%理論性能達成率を実現しました。
詳細解説
Flash Attention 2(フラッシュアテンション ツー、FA2)は、Tri Dao が2023年7月に発表した Flash Attention の改良版で、初代の課題だった「非行列演算(softmax の正規化など)に対する並列化が不十分で GPU の理論性能の25-40%しか引き出せない」問題を解消しました。具体的には、(1) 非行列演算の FLOP 数を削減し softmax を逐次的に再スケーリングする方式に変更、(2) 系列長次元での並列化を追加し、Multi-Head 並列に加えて Q ブロック並列も導入、(3) ブロック内のワープ間タスク分割を最適化、という3点の改良で、A100 80GB で従来比約2倍の高速化を達成し、理論性能の72%(335 TFLOPS / 312 TFLOPS の bfloat16 ピーク超)を引き出しました。Llama 2/Llama 3 の事前学習、Mistral・Qwen・DeepSeek など主要オープン LLM の学習で標準採用されています。Hugging Face Transformers では from_pretrained に attn_implementation="flash_attention_2" を渡すだけで利用でき、推論側でも vLLM・TGI・SGLang などの主要サービングフレームワークが内部で活用します。なおバックワード(勾配計算)も最適化されており、ファインチューニング・LoRA 学習でも恩恵が大きいです。
実装例 / 使い方
- 01Llama 2/3 の事前学習で利用され A100 上で MFU 50%超を達成しました
- 02Hugging Face Transformers の attn_implementation="flash_attention_2" で簡単導入できます
- 03系列長16K以上の長文学習で性能差が顕著に出ます
関連する用語
Flash Attention(高速アテンション)
FAFlash Attention は、GPU の SRAM とタイリングを活用してアテンション行列をメモリに具体化せず計算する I/O 最適化アルゴリズムです。メ...
Flash Attention 3
FA3Flash Attention 3 は2024年7月に発表された H100 GPU に最適化された改良版です。ワープ特殊化と非同期 TMA、FP8 サポートによ...
Self-Attention(自己注意機構)
SASelf-Attention は、入力系列の各トークンが同じ系列内の他のトークンとの関連度を計算する仕組みです。Query・Key・Value の3行列に射影し...
KV Cache(KVキャッシュ)
KV CacheKV Cache は、自己回帰生成中に過去トークンの Key・Value を保存して再利用する仕組みです。1トークン生成あたりの計算量が O(N^2) から O...
Transformer
Transformer (トランスフォーマー) は 2017 年 Google 論文で発表された深層学習アーキテクチャで、Self-Attention 機構を核...
Flash Attention 2を、実際に活用する
用語の意味は分かった。次は実装。EXBANK の無料診断で、貴社で具体的にどう活用できるかをご提案します。
営業時間 平日10-18時 / 通常24時間以内に返信
