SuperAPI AI 工具集

optimizing-attention-flash

通用与其它

查看项目

更新于 10-16 02:32

技能介绍

用途:在训练或运行 Transformer 时优化注意力计算,通过 IO 感知的分块与重计算获得 2-4 倍加速和 10-20 倍显存降低,适合长序列(>512 token)训练与长上下文(>2K token)推理,以及显存受限场景。

主要能力:提供两种接入方式。PyTorch 原生(需 PyTorch 2.2+)用 F.scaled_dot_product_attention 自动选用 Flash Attention 后端,可用 torch.backends.cuda.sdp_kernel(enable_flash=True, enable_math=False, enable_mem_efficient=False) 强制后端。flash-attn 库功能更多,支持多查询注意力、滑动窗口与 H100 FP8(FlashAttention-3)。

使用方式:安装命令为 pip install flash-attn --no-build-isolation;库调用为 from flash_attn import flash_attn_func,输入形状 [batch, seqlen, nheads, headdim],可设 dropout_p、causal、window_size、softmax_scale。原生方式需检查版本 python -c "import torch; print(torch.version)",并用 torch.utils.benchmark 对比加速、用最大差值(float16 应 <1e-3)验证精度。H100 FP8 需先 nvidia-smi 确认 H100/H800,再将输入转为 torch.float8_e4m3fn。

适用场景与限制:序列 <256 token 收益有限;<512 token 仅约 10-20%,512-2K 约 2-3 倍,>2K 约 3-4 倍。需 NVIDIA Ampere+(A100、A10、A30)或 AMD MI200+,CUDA 12.0+(最低 11.8),不支持 V100(Volta)与 CPU 推理。数据类型须为 float16 或 bfloat16,不支持 float32。常见问题包括 ImportError(加 --no-build-isolation 或先装 CUDA 工具包)、CUDA 报错(检查算力 ≥(7,5))与精度下降(检查 dtype)。HuggingFace 集成与详细基准见资料引用的 references 文档,具体内容暂未提供。