SageAttention 使用教程
1. 项目介绍
SageAttention 是一个开源项目,旨在通过量化注意力机制来加速深度学习模型的推理过程,而不牺牲模型的端到端性能。该项目提供了优化的内核,支持不同GPU架构,包括Ampere、Ada和Hopper,通过INT8和FP8量化技术,实现了对QK^T和PV的加速处理。
2. 项目快速启动
环境准备
确保你的环境中安装了以下依赖:
- Python >= 3.9
- PyTorch >= 2.3.0
- Triton >= 3.0.0
- CUDA 版本根据GPU架构不同而有所不同(请参考项目文档)
安装
对于稳定版本的Triton-only版本,可以使用pip安装:
pip install sageattention==1.0.6
要使用 SageAttention 2.1.1,请从源代码编译:
git clone https://github.com/thu-ml/SageAttention.git
cd sageattention
python setup.py install # 或者使用 pip install -e .
使用示例
以下是一个简单的使用 SageAttention 的示例代码:
from sageattention import sageattn
# 假设 q, k, v 是已准备的输入张量,形状为 (batch_size, head_num, seq_len, head_dim)
# tensor_layout="HND" 是默认的布局,如果输入张量是 (batch_size, seq_len, head_num, head_dim),则应使用 "NHD"
attn_output = sageattn(q, k, v, tensor_layout="HND", is_causal=False)
3. 应用案例和最佳实践
替换原有的注意力机制
在一些模型中,可以直接替换原有的 scaled_dot_product_attention
为 sageattn
。例如,对于视频模型,可以仅替换 DiT 中的注意力部分。
import torch.nn.functional as F
from sageattention import sageattn
# 替换原有的注意力机制
F.scaled_dot_product_attention = sageattn
自定义设备上的优化
对于自定义设备和模型,为了获得最佳的速度和准确度性能,建议参考项目提供的详细指导文件。
4. 典型生态项目
SageAttention 可以与多种深度学习框架和项目结合使用,例如:
- 用于基准测试的 FlashAttention
- 用于视频生成的 CogVideoX
- 以及其他支持量化注意力的模型和框架
通过集成这些生态项目,可以进一步提高深度学习应用的性能和效率。