中文

Sarathi-Serve:驯服LLM推理中的吞吐量-延迟权衡

机器学习 2024-06-19 v3 分布式、并行与集群计算

摘要

每个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获取。

关键词

引用

@article{arxiv.2403.02310,
  title  = {Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve},
  author = {Amey Agrawal and Nitin Kedia and Ashish Panwar and Jayashree Mohan and Nipun Kwatra and Bhargav S. Gulavani and Alexey Tumanov and Ramachandran Ramjee},
  journal= {arXiv preprint arXiv:2403.02310},
  year   = {2024}
}