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 教程。
  • 项目仍在进行中,未来可能添加更多版本。

相关

  • 项目
  • 项目
  • 项目
  • 项目