Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve

2024年03月04日
  • 简介
    每个LLM服务请求都经历了两个阶段。第一个阶段是预填充,处理整个输入提示并生成第一个输出令牌;第二个阶段是解码,逐个生成其余的输出令牌。预填充迭代具有很高的延迟,但由于输入提示的并行处理而饱和了GPU计算。相比之下,解码迭代具有低延迟,但也具有低计算利用率,因为每个请求只处理一个令牌。这使得批处理对解码非常有效,因此对于整体吞吐量也非常有效。然而,批处理多个请求会导致预填充和解码迭代交织在一起,这使得同时实现高吞吐量和低延迟变得具有挑战性。 我们引入了一种高效的LLM推理调度程序Sarathi-Serve,以解决这种吞吐量-延迟权衡。 Sarathi-Serve引入了分块填充,将预填充请求分成几乎相等大小的块,并创建无阻塞调度,批量添加新请求而不暂停正在进行的解码。无阻塞调度释放了使用大批量时提高吞吐量的机会,同时最小化批处理对延迟的影响。此外,Sarathi-Serve中的均匀批次可以改善迭代之间的不平衡,从而产生最小的管道泡沫。 我们的技术在尾延迟约束下跨模型和硬件实现了显着的推理性能提升。对于单个A100 GPU上的Mistral-7B,与vLLM相比,我们实现了2.6倍的更高服务能力,对于两个A100 GPU上的Yi-34B模型,我们实现了高达3.7倍的更高服务能力。当与Falcon-180B上的管道并行一起使用时,Sarathi-Serve提供了高达5.6倍的端到端服务能力增益。Sarathi-Serve的源代码可在https://github.com/microsoft/sarathi-serve上获得。
  • 作者讲解
  • 图表
  • 解决问题
    本论文旨在解决在进行LLM推理时,同时保证高吞吐量和低延迟的问题。具体来说,解决了批处理多个请求时,预处理和解码迭代交替进行导致的吞吐量和延迟之间的权衡问题。
  • 关键思路
    论文提出了一种高效的LLM推理调度器Sarathi-Serve,引入了分块预填充技术,将预处理请求分成几个近似大小的块,并创建无阻塞调度以在不暂停正在进行的解码的情况下添加新请求。均匀的批次可以减少迭代之间的不平衡,从而最小化流水线气泡。
  • 其它亮点
    本论文的实验结果表明,Sarathi-Serve在满足尾延迟约束的情况下,可以显著提高LLM模型的推理性能。在单个A100 GPU上,Mistral-7B模型的服务能力提高了2.6倍,Yi-34B模型在两个A100 GPU上的服务能力提高了高达3.7倍。当与Falcon-180B上的管道并行结合使用时,Sarathi-Serve可以提供高达5.6倍的端到端服务能力增益。Sarathi-Serve的源代码可在https://github.com/microsoft/sarathi-serve上获得。
  • 相关研究
    在这个领域中,最近的相关研究包括Google的TPU、Facebook的TensorComprehensions和Megatron-LM等。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问