随着大型语言模型(LLM)在各个领域中变得越来越重要,但是在加速LLM推理方面仍然存在以下挑战:(1)同步部分softmax更新。softmax操作需要在每个部分softmax结果之间进行同步更新操作,导致LLM中注意力计算的开销约为20%。(2)扁平GEMM的计算未充分利用。在LLM推理中执行GEMM的矩阵形状是扁平的,导致计算未充分利用,在之前的设计中填充零后性能损失超过50%。(3)静态数据流导致的性能损失。LLM中的内核性能取决于不同的输入数据特征、硬件配置等。单一和静态的数据流可能导致LLM推理中不同形状的GEMM性能损失高达50.25%。我们提出了FlashDecoding++,这是一个支持主流LLM和硬件后端的快速LLM推理引擎。为了解决上述挑战,FlashDecoding++提出了以下创新:(1)异步softmax与统一最大值。FlashDecoding++为不同的部分softmax计算引入了统一的最大值技术,避免了同步。(2)扁平GEMM优化与双缓冲。FlashDecoding++指出,具有不同形状的扁平GEMM面临着不同的瓶颈。然后,引入了双缓冲等技术。(3)启发式数据流与硬件资源自适应。FlashDecoding++使用不同的硬件资源考虑输入动态启发式优化数据流。由于FlashDecoding++中优化的多功能性,与Hugging Face实现相比,FlashDecoding++可以在NVIDIA和AMD GPU上实现高达4.86倍和2.18倍的加速。FlashDecoding++还在主流LLM上实现了平均1.37倍的速度提升,超过了最先进的LLM推理引擎。
提问交流