66RING/tiny-flash-attention

flash attention tutorial written in python, triton, cuda, cutlass

解決する問題

FlashAttention は、現代の機械学習で使用される高速でメモリ効率の高いアテンションアルゴリズムですが、元の実装は複雑です。このプロジェクトは、それをいくつかのプログラミング言語で小さく読みやすいバージョンに分解し、学習者がブラックボックスとして扱うのではなく、その仕組みを理解できるようにします。

仕組み

このリポジトリは、FlashAttention の小さな実装を提供します:

  • 純粋な Python(ナイーブ) – アルゴリズムをステップバイステップで追うための最も単純なバージョン。
  • Triton – GPU 向けの Python に似た言語で、並列ハードウェアで同じアイデアを表現する方法を示します。
  • C – コアアテンション計算のナイーブな C 実装。
  • CUDA – スタンドアロンの CUDA カーネルと、Python バインディングとしてラップされたバージョン。
  • CUTLASS – CUTLASS ライブラリを使用した CUDA 実装で、英語と中国語の詳細なチュートリアル付き。
  • Rust – リストされていますが、まだ完了していません(空のチェックボックスでマーク)。

すべてのコードは最小限に保たれ、パフォーマンスよりも明確さに焦点を当てています。CUTLASS バージョンには、著者の環境(CUTLASS v3.4、PyTorch 1.14、CUDA 12.4)での実装を説明するステップバイステップのチュートリアルが含まれています。

対象読者

FlashAttention がさまざまなプログラミング環境でどのように実装されているかを学びたい開発者や学生、特に GPU プログラミング、CUDA、またはパフォーマンス指向のアテンションメカニズムを研究している人々。

ハイライト

  • 複数の言語をカバー:Python、Triton、C、CUDA、CUTLASS、Rust(作業中)。
  • 各バージョンは意図的に小さく教育的であり、本番用に最適化されていません。
  • スタンドアロンの CUDA コードと Python バインディングの CUDA バージョンを含みます。
  • 英語と中国語の詳細な CUTLASS/CuTe チュートリアルを提供します。
  • プロジェクトはまだ進行中であり、さらに多くのバージョンが追加される可能性があります。

関連

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