Skip to content

更新日志 - FlashAttention-Plus

FlashAttention-Plus 的所有重要更改都将记录在此文件中。

[未发布]

开发中

  • 使用 FlagGems/Triton 的反向传播实现
  • 高效推理的 KV 缓存支持
  • 可变长度序列支持
  • 扩展硬件平台测试

[0.1.0] - 初始版本

新增

  • FlagGems 后端集成
  • 用 FlagGems 的 Triton 实现替换了 CUDA 内核
  • 添加了 flash_attn_flaggems_backend.py 适配器模块
  • 环境变量 FLASH_ATTENTION_USE_FLAGGEMS 用于后端选择

  • 核心功能

  • 所有主要注意力函数的前向传播
  • 支持 flash_attn_funcflash_attn_qkvpacked_funcflash_attn_kvpacked_func
  • 因果掩码支持
  • 多头和多查询注意力(MHA/MQA/GQA)
  • FP16 和 BF16 精度支持

  • API 兼容性

  • 保持与原始 FlashAttention 的完全 API 兼容性
  • 即插即用替换能力
  • 保留所有函数签名和返回类型

  • 文档

  • 包含安装和使用说明的综合 README
  • 从原始 FlashAttention 的迁移指南
  • FlagGems 集成的技术文档
  • API 参考文档
  • 代码示例和最佳实践

更改

  • 构建系统
  • 移除了 CUDA 编译要求
  • 简化了安装过程
  • 更新依赖项以包含 Triton 和 FlagGems

  • 后端架构

  • 抽象的后端选择机制
  • 添加了运行时后端切换功能
  • 改进了缺少依赖项的错误处理

移除

  • 所有 CUDA C++ 源文件
  • CUDA 特定的构建脚本和配置
  • NVCC 编译器依赖项

已知问题

  • 反向传播尚未实现
  • Dropout 接口存在但可能无法完全正常工作
  • 某些高级功能(块稀疏等)尚未支持
  • 与手动调优的 CUDA 内核相比,性能可能有所不同

版本历史

版本控制方案

该项目遵循语义版本控制: - MAJOR 版本用于不兼容的 API 更改 - MINOR 版本用于向后兼容的功能添加 - PATCH 版本用于向后兼容的错误修复

与原始 FlashAttention 的比较

FlashAttention-Plus 保持与 FlashAttention v2.x 的 API 兼容性,同时提供: - 通过 Triton 的硬件无关实现 - 无需 CUDA 编译的更简单安装 - 更广泛的平台支持潜力

未来路线图

v0.2.0(计划中)

  • 完成反向传播实现
  • 添加梯度检查点支持
  • 常见配置的性能优化
  • 扩展测试覆盖范围

v0.3.0(计划中)

  • 推理的 KV 缓存实现
  • 可变长度序列支持
  • 滑动窗口注意力优化
  • AMD GPU 性能调优

v1.0.0(计划中)

  • 与原始 FlashAttention 的功能平等
  • 生产就绪的稳定性
  • 跨平台的综合基准测试
  • 高级功能(块稀疏等)

贡献

我们欢迎贡献!关键贡献领域: - 反向传播实现 - 性能优化 - 扩展硬件测试 - 文档改进

请参阅主存储库中的贡献指南。