本文是LLM系列文章,针对《SARATHI: Efficient LLM Inference by Piggybacking Decodes with Chunked Prefills》的翻译。
摘要
大型语言模型 (LLM) 推理包括两个不同的阶段 - 预填充阶段(处理输入提示)和解码阶段(自动回归生成输出token)。虽然预填充阶段有效地使小批量的 GPU 计算饱和,但解码阶段会导致计算利用率较低,因为它每个请求一次生成一个token。使用流水线并行时,不同的预填充和解码时间也会导致微批处理之间的不平衡,从而导致气泡进一步降低效率。
我们推出 SARATHI 来应对这些挑战。SARATHI 采用分块预填充,将预填充请求拆分为大小相等的块,以及解码最大批处理,使用单个预填充块构建批处理,并使用解码填充剩余插槽。在推理过程中,预填充块使 GPU 计算饱和,而解码请求“背负”,与仅解码批处理相比,成本降低了一个数量级。分块预填充允许从单个预填充请求构建多个解码最大批次,从而最大限度地覆盖可搭载的解码。此外,这些批次的统一计算设计改善了微批次之间的不平衡,从而显著减少了管道气泡。
我们的技术在跨模型和硬件的推理性能方面产生了显著的改进。对于 A6000 GPU 上的 LLaMA-13B 模型,SARATHI 将解码吞吐量提高了 10