Repolode
Dao-AILab

Dao-AILab/flash-attention

GPU上でTransformerモデルを学習・推論するための、メモリ効率に優れた厳密なattentionカーネルFlashAttentionの公式実装。

スター
25,163
フォーク
3,175
未解決の Issue
1,382
最終コミット
9 時間前

これは何?

FlashAttentionは、GPUメモリ使用量を抑え、attentionの計算を高速化するTransformerモデル向けの厳密なattention実装です。標準的なattentionでは、系列長に対してメモリ使用量が二次的に増加します。FlashAttentionは同じ結果をメモリ使用量が線形に増える形で計算するため、GPU上でより長い系列を扱えます。

このリポジトリには、NVIDIA CUDA(Ampere、Ada、Hopper GPU)およびAMD ROCm向けのFlashAttention-2に加え、Hopper GPU向けのFlashAttention-3、HopperおよびBlackwell GPU向けにCuTeDSLで記述されたFlashAttention-4が含まれています。主なPython関数は、標準、可変長、packed QKV、KV-cacheを使った推論の各attentionに対応し、causal mask、sliding window attention、ALiBi、MQA/GQA、dropout、softcappingをサポートします。

このパッケージはpipでインストールでき、PyTorchとCUDAまたはROCmのツールキットが必要です。主にLinuxをサポートしています。

主な機能

  • 01系列長に対してメモリ使用量が線形に増える形で、厳密なattentionを計算します。
  • 02causal masking、sliding windowによるlocal attention、ALiBiをサポートします。
  • 03Qよりhead数の少ないKV tensorを使って、MQAとGQAを利用できます。
  • 04incremental decoding向けに、paged KV cacheとin-placeでのKV cache更新を備えています。
  • 05NVIDIA GPU向けのCUDAビルドと、AMD GPU向けのTritonおよびCKバックエンドを提供します。

ユースケース

  • NVIDIA A100またはH100 GPU上で、長い系列を使って大規模なTransformer言語モデルを学習する。
  • incremental decodingとpaged KV cacheを使ってLLMの推論を提供する。
  • ROCmバックエンドを通じてAMD Instinct GPU上でattentionを実行する。

クイックスタート

  1. 1

    ビルドに必要なパッケージ(packaging、psutil、ninja)をインストールします

  2. 2

    FlashAttentionをPyPIからインストールします

    pip install flash-attn --no-build-isolation

使う前に知っておきたいこと

  • 公式サポートはLinuxのみです。Windowsでのコンパイルは十分にテストされていません。
  • CUDAまたはROCmのツールキットと、CUDAの場合はAmpere、Ada、Hopperなどの対応GPUが必要です。
  • ninjaを使わず、並列ジョブ数を制限しない場合、ソースからのコンパイルに時間がかかり、大量のメモリを消費することがあります。

トピック

よくある質問

flash-attention とは?
GPU上でTransformerモデルを学習・推論するための、メモリ効率に優れた厳密なattentionカーネルFlashAttentionの公式実装。 FlashAttentionは、GPUメモリ使用量を抑え、attentionの計算を高速化するTransformerモデル向けの厳密なattention実装です。標準的なattentionでは、系列長に対してメモリ使用量が二次的に増加します。FlashAttentionは同じ結果をメモリ使用量が線形に増える形で計算するため、GPU上でより長い系列を扱えます。
flash-attention は無料で使えますか?ライセンスは?
flash-attention は BSD-3-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
flash-attention は今もメンテナンスされていますか?
活発にメンテナンス中。flash-attention の最終コミットは 2026年10月20日 です。
flash-attention は何に使えますか?
NVIDIA A100またはH100 GPU上で、長い系列を使って大規模なTransformer言語モデルを学習する。 incremental decodingとpaged KV cacheを使ってLLMの推論を提供する。 ROCmバックエンドを通じてAMD Instinct GPU上でattentionを実行する。
flash-attention のインストール方法は?
ビルドに必要なパッケージ(packaging、psutil、ninja)をインストールします FlashAttentionをPyPIからインストールします: pip install flash-attn --no-build-isolation
flash-attention はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Dao-AILab/flash-attention

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト