最近跟一个行业专家讨论,问问他认为过去5年AI Infra或MLSys领域最创新的论文是什么,他说是Flash Attention。
我今天又读了一下Flash Attention的论文,主要有两个贡献:
1. Tiled Attention
2. Online/streaming softmax
首先,Tiled Attention其实就是Block Matrix–Matrix Multiplication,我在2011年上大二的时候就学过的经典算法。
Flash Attention论文里推导的数据移动lower bound我导师很多年前就有更完善更全面的推导:
http://t.cn/AXqWpRVe
另外,Online/streaming softmax 也不是 FlashAttention 原创的东西,它源自对数求和指数(Log-Sum-Exp)与数值稳定 softmax 的经典数值计算技巧,在统计建模和机器学习中早已出现。
如果没有 overflow / underflow / 数值精度问题,完全没必要用 Online / Streaming Softmax。
所以,这个技术也不是Flash Attention独有的。
感觉Flash Attention实质没有创新?我指的是新算法或新技术。我承认Flash Attention有很多工程的贡献,或者提供了一个很好的Kernel。但是,这种工作英伟达的工程师应该日常都在做。
我认为Flash Attention工作仍然是一个非常solid的工作,但对它的定位应该是一个很好的实现,而不是一个新算法或新技术,也不是颠覆式的创新。
感觉学术界有一个不好的习惯:很喜欢把简单的方法描述地很复杂。这其实不是作者的问题,真实原因是:如果不描述地复杂,就无法被挑剔顶会reviewer接收。
其实,我们设身处地去想想,当时我能否像Flash Attention作者那样独立把这一个个问题解决好并实现好,简直太痛苦了,需要锲而不舍的精神,丰厚的知识储备和敏锐的发现。我早期在Intel Xeon Phi做机器学习算法加速的时候深有体会,一个很简单的想法需要很复杂的实现和实验才能验证。这点真的非常佩服Flash Attention。
所以,我们对Flash Attention不应该是造神式地吹捧它是颠覆式创新,而是应该发现Flash Attention这类工作在工程或工具上的卓越贡献,这也是计算机科学一个值得坚持的核心方向。
发布于 新加坡
