FlashAttention-3(フラッシュアテンションスリー)
Transformerのアテンション計算をGPUのSRAMを活用して高速化するアルゴリズムの第3世代。H100/H800 GPU向けに最適化されたIO-Aware実装。
FlashAttention-3
概要
FlashAttention-3は、Tri Dao(Stanford/Together AI)らが2024年に発表したAttentionアルゴリズムの最新世代実装。LLMの推論・学習両フェーズにおける最重要最適化技術の一つとして、現代のAIインフラに広く採用されている。
技術的背景
標準Attentionの問題点
従来のAttention計算 Attention(Q, K, V) = softmax(QKᵀ / √d) · V は、シーケンス長Nに対してO(N²)のメモリを消費する。N=4096トークンでさえ、中間行列(Score Matrix)はGPU HBMに格納されるため、大量のメモリ読み書き(IO)が発生していた。
FlashAttentionのアプローチ
IO-Aware設計により、H100 GPUのメモリ階層を最大活用:
- SRAM (L2): 容量50MB / 帯域幅33TB/s
- HBM: 容量80GB / 帯域幅3.35TB/s
FlashAttentionはAttention行列全体をHBMに書き出さず、SRAMに収まるタイルサイズで逐次計算(Tiling)。中間結果はSRAM内で処理し、最終出力のみHBMへ書き出す。
FlashAttention-3の新機能
1. Warp-Specialization
H100のThread Block Cluster機能を活用し、Warpを非同期パイプライン処理に特化させることで、行列積(GEMM)とSoftmax計算を重複実行。
2. FP8サポート
H100のFP8 Tensor Coreに対応し、BF16比で2倍の計算スループット。量子化精度劣化を最小化するブロックスケーリング技術を採用。
3. 非同期メモリコピー
CUDA Graphs + TMA(Tensor Memory Accelerator)による非同期HBM→SRAMコピーで、計算中のデータ転送を隠蔽。
パフォーマンス比較
H100 FP16利用率:
- cuDNN Attention: 約35%
- FlashAttention-2: 約50%
- FlashAttention-3: 約75%
H100 FP8利用率:
- FlashAttention-3: 約75%
シーケンス長2048、ヘッド次元128での計測値。FA3はFlashAttention-2比で約1.5〜2.0倍高速。
採用状況(2025年)
- vLLM:
--enable-flashatttnフラグでFA3を選択可能 - SGLang: デフォルト有効(H100検出時)
- HuggingFace Transformers:
attn_implementation="flash_attention_2"(FA3対応進行中) - Llama.cpp: Metal/CUDA backendで部分採用
利用方法
from flash_attn import flash_attn_qkvpacked_func, flash_attn_func
# QKVパック形式
out = flash_attn_qkvpacked_func(qkv, dropout_p=0.0, causal=True)
# 分離形式
out = flash_attn_func(q, k, v, dropout_p=0.0, causal=True)
# vLLMでFA3有効化
vllm serve meta-llama/Llama-3.1-70B-Instruct \
--enable-chunked-prefill \
--max-num-batched-tokens 8192
将来展望
FlashAttention-4(Blackwell GPU向け)の開発が進行中。FP4サポートと更なる非同期パイプライン最適化が見込まれる。Attentionの計算効率がLLMスケールの上限を決定する重要因子として、2026年以降も進化が続く。