最近,我在使用 PyTorch 实现一个 Transformer 模型时遇到了一个问题。当运行代码时,收到了一条警告信息:“UserWarning: 1Torch was not compiled with flash attention”。提示当前使用的 PyTorch 版本并没有编译进 Flash Attention 支持。查了很多资料,准备写个总结,详细解释什么是 Flash Attention、这个问题出现的原因、以及推荐的问题排查顺序。
1. Flash Attention 是什么?
Flash Attention 是一种优化技术,专门用于加速和优化 Transformer 模型中的自注意力(self-attention)机制。它通过更有效地管理内存访问模式和计算资源来提升性能,尤其是在处理长序列时。Flash Attention 的主要优点包括:
- 减少显存占用:通过对输入数据进行分块(chunking),可以显著降低显存使用。
- 提高计算效率:利用 GPU 的并行计算能力,减少了不必要的计算开销。
- 增强模型训练速度:由于上述优化,模型可以在更短的时间内完成训练。
上面都是废话,大概就是加速2-4X的运行速度,以及减少5倍以上的内存使用
2. 问题出现原因
1、pytorch版本不支持,建议1.12及以上