https://arxiv.org/pdf/2311.01282v1.pdf
主要研究了如何在GPU上加速大型语言模型(LLM)的推理过程。论文针对LLM推理中存在的三个挑战提出了相应的解决方案:
- 同步部分Softmax更新:在LLM中,注意力计算需要对每个部分Softmax结果进行同步更新,导致约20%的开销。为了解决这个问题,作者提出了一种异步Softmax方法,通过引入一个统一的最大值技术,使得不同部分的Softmax计算可以避免同步。
- 平坦GEMM(General Matrix Multiplication)的计算资源利用率低:在LLM推理的解码阶段,矩阵形状往往是扁平的,导致计算资源利用率低。为了解决这个问题,作者提出了一种双缓冲优化策略,将矩阵大小填充到8而不是64,从而提高计算利用率。此外,针对不同形状的扁平GEMM,作者还引入了双缓冲等技术来进一步提高内核性能。
- 静态数据流导致的性能损失:由于输入数据特征和硬件配置的多样性,单一静态数据流可能导致LLM推理中不同形状GEMM的性能损失。为了解决这个问题,作者提出了一种启发式数据流优化方法,根据输入动态和硬件资源(如Tensor Core或CUDA核心)来调整内核优化。
通过这三种创新方法,FlashDecoding++在NVIDIA和AMD GPU上分别实现了与Hugging Face实现相比高达4.86倍和2.18倍的加速。此外,与当前最先进的LLM推理引擎(如FlashDecoding)相比,FlashDecoding++在主流LLM(如Llama2、ChatGLM2等)上实现了平均1.37倍的加速。
总之,这篇论文提出了一种名为FlashDecoding++的快速LLM推理引擎,通过创新地解决了LLM推理中的三个关键挑战,从而在GPU上实现了更快的大型语言模型推理。