flagos-ai/FlagAttention

A collection of memory efficient attention operators implemented in the Triton language.

何を解決するか

FlagAttention は、FlashAttention などの標準的な CUDA 実装よりも簡単に変更・カスタマイズできるメモリ効率の高いアテンション演算子を提供します。言語モデルにおける非標準的なアテンション機構のニーズに対応し、アテンションスコアの計算、KVキャッシュのレイアウト、または推論パスにプロジェクト固有のカスタマイズが必要な場合に適しています。

動作方法

Triton 言語で実装されており、タイリングと再計算を使用して、完全なアテンションスコア行列をメモリ上に展開しないようにしています。これにより、メモリ使用量とトラフィックが大幅に削減されます。以下の専用演算子を提供しています:

  • flash_attention: MQA/GQA とドロップアウトをサポートする Triton ベースの FlashAttention v2 実装。
  • piecewise_attention: 非線形化位置埋め込み(NLPE)向けの拡張で、距離閾値に基づいて2つのクエリとキーのセットを使用してアテンションスコアを計算します。
  • flash_attention_split_kv: 長い KV シーケンス向けに設計された、分割された KV フラッシュデコード演算子。
  • paged_attention: 推論中のページ化 KVキャッシュ管理用の演算子。

対象ユーザー

高性能なアテンション演算子が必要だが、既存のライブラリでは柔軟性が不足している、またはアテンションスコアにカスタム変換を適用したい AI 研究者や開発者向けです。

特徴

  • Tritonベース: ロウ CUDA コードよりも理解・修正が容易です。
  • メモリ効率: タイリングと再計算により、メモリトラフィックと使用量を削減します。
  • カスタマイズ可能: NLPE 用の非標準演算子(例:piecewise_attention)を特にサポートしています。
  • ハードウェア対応: Nvidia Ampere GPU(A100、RTX-3090)および Iluvatar CoreX GPU でテスト済み。
  • 包括的な機能: float16、bfloat16、因果/非因果モード、MQA/GQA をサポートしています。

関連

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