meta-pytorch/attention-gym

Helpful tools and examples for working with flex-attention

解决的问题

Attention Gym 提供了一个用于实现和实验新型注意力机制的 Playground 和构建模块库。它简化了自定义注意力掩码和分数修改的流程,并提供了高效实现稀疏注意力和线性注意力变体的方案,这些原本从零开始构建会非常复杂。

工作原理

该项目通过三种主要工作流运行:

  1. FlexAttention 集成:提供 mask_mod 和 score_mod 函数,可直接传递给 PyTorch 的 FlexAttention API,以自定义注意力的计算方式。
  2. 专用内核:包含针对稀疏注意力(通过 gather_attn)和线性注意力(包括 GDN 和 KDA 路径)的专用 API 和内核。
  3. 实用示例:提供一系列基准测试和真实工作负载,涵盖分页注意力、环形注意力和 CUDA Graphs,展示如何在类似生产环境的场景中应用这些构建模块。

适用人群

专为使用 PyTorch 2.5+ 构建新注意力变体或希望优化注意力性能的 AI 研究人员和开发者设计。

主要亮点

  • 与 PyTorch FlexAttention 集成,轻松实现掩码和分数修改。
  • 支持稀疏注意力模式和高效的线性注意力内核。
  • 针对 GDN 和 KDA(分块、递归、解码路径)的专用原语。
  • 包含可变稀疏注意力、编译和性能分析的全面示例。

相关

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