meta-pytorch/attention-gym

Helpful tools and examples for working with flex-attention

何を解決するか

Attention Gym は、新しいアテンションメカニズムの実装と実験を行うためのプレイグラウンドとビルディングブロックのライブラリを提供します。カスタムアテンションマスクやスコアの変更を簡単に作成できるようにし、通常は手動で構築するのが複雑なスパースアテンションや線形アテンションの効率的な実装を提供します。

仕組み

このプロジェクトは3つの主要なワークフローで動作します:

  1. FlexAttention 統合:PyTorch の FlexAttention API に直接渡せる mask_mod および score_mod 関数を提供し、アテンションの計算方法をカスタマイズできます。
  2. 専用カーネル:gather_attn を通じたスパースアテンション用の専用 API とカーネル、および GDN と KDA パスを含む線形アテンション用のカーネルを提供します。
  3. 実用的な例:ページ化アテンション、リングアテンション、CUDA Graphs をカバーするベンチマークと実世界のワークロードのセットを提供し、これらのビルディングブロックを本番環境に近いシナリオでどのように適用するかを示します。

対象ユーザー

PyTorch 2.5+ を使って新しいアテンション変種を構築している、またはアテンションのパフォーマンスを最適化したい AI リサーチャーおよび開発者向けに設計されています。

特徴

  • PyTorch FlexAttention との統合により、マスクやスコアの変更が簡単です。
  • スパースアテンションパターンと効率的な線形アテンションカーネルのサポート。
  • GDN および KDA(チャンク、再帰、デコードパス)用の専用プリミティブ。
  • 変動スパースアテンション、コンパイル、プロファイリングをカバーする包括的な例。

関連

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