本文是LLM系列文章,针对《FLASHDECODING++: FASTER LARGE LANGUAGE MODEL
INFERENCE ON GPUS》的翻译。
FLASHDECODING++:基于GPUS的快速大型语言模型推理
摘要
随着大型语言模型(LLM)在各个领域变得越来越重要,LLM推理的性能对大规模LLM应用至关重要。然而,在加速LLM推理方面,以下挑战仍未解决:(1)同步部分softmax更新。softmax操作需要在每个部分softmax结果之间进行同步更新操作,导致LLM中注意力计算的开销为~20%。(2) 平面GEMM的计算利用不足。LLM推理中执行GEMM的矩阵形状是平坦的,导致计算利用不足,并且在以前的设计(例如,cuBLAS、CUTRASS等)中填充零后性能损失>50%。(3)静态数据流导致的性能损失。LLM中的内核性能取决于不同的输入数据特征、硬件配置等。单个静态数据流可能导致LLM推理中不同形状的GEMM的性能损失50.25%。
我们介绍了FlashDecoding++,一个支持主流LLM和硬件后端的快速LLM推理引擎。为了应对上述挑战,FlashDecoding++创造性地提出:(1)具有统一最大值的异步softmax。FlashDecoding++为不同的部分softmax计算引入了统一的最大值技术,以避免同步。在此基础上,提出了细粒度流水线技术。(2) 具有双缓冲的平坦GEMM优化。FlashDecoding++指出,不同形状的平面GEMM面临着不同的瓶颈。然后,介绍了双缓冲等技术。(3) 具有硬件资源自适应的启发式数据流。FlashDecoding++在考虑输入动态的情况下,使用不同的硬件资源(例如Tensor Core或CUDA Core)启发式地优化数据流。由于FlashD