Dao-AILab/flash-attention

Fast and memory-efficient exact attention

解決する課題

FlashAttentionは、TransformerモデルにおけるAttentionメカニズムを最適化し、より高速でメモリ効率の高いものにします。標準的なAttention演算に伴う高いメモリおよび計算オーバーヘッドに対処し、特にGPUメモリ間でのデータ転送回数を削減(IO-awareness)することでこれを実現しています。

仕組み

メモリへのアクセスを最小限に抑える、最適化されたスケーリングドット積Attention(scaled dot product attention)を実装しています。このプロジェクトでは、NVIDIA(Ampere, Ada, Hopper, Blackwell)やAMD(ROCm)など、さまざまなGPUアーキテクチャ向けに最適化された複数のバージョン(FlashAttention, FlashAttention-2, 3, 4)を提供しています。因果マスク(causal masking)、スライディングウィンドウ局所Attention、マルチクエリ/グループクエリAttention(MQA/GQA)などの高度な機能をサポートしています。

対象ユーザー

大規模言語モデル(LLMs)のトレーニングやデプロイを行う機械学習エンジニアや研究者向けに設計されており、AttentionフェーズにおけるGPUスループットの最大化とメモリ消費量の削減を必要とする方に最適です。

ハイライト

  • マルチGPUアーキテクチャのサポート: NVIDIA Hopper (H100) および Blackwell (B200) GPU、ならびにAMD ROCm互換GPU向けに最適化されたカーネル。
  • メモリ効率: IOオーバーヘッドを削減し、順伝播および逆伝播の両方を高速化。
  • 推論の最適化: KVキャッシュをサポートしたインクリメンタルデコード用の専用関数を搭載。
  • 柔軟なAttentionパターン: 因果マスク、ALiBiスロープ、スライディングウィンドウAttentionをサポート。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト