主要观点总结
本文介绍了Sarathi-Serve,这是一种新的推理架构,旨在通过混合batching和切块式prefill策略来优化大模型的推理性能。Sarathi-Serve基于分离式推理架构,解耦了prefill和decode过程,使得两者能独立优化。文章详细解释了Sarathi-Serve的工作原理,包括其背后的关键技术如chunked-prefills和stall-free schedules。此外,文章还对比了Sarathi-Serve与传统推理架构、Orca等架构的优缺点,并展示了其源码解读和性能实验。Sarathi-Serve的设计思路是减少pp并行气泡,提高计算资源利用率,并同时保全TTFT和TPOT/TBT。
关键观点总结
关键观点1: Sarathi-Serve设计思路
Sarathi-Serve基于分离式推理架构,通过切块式prefill和stall-free schedules策略,旨在优化大模型的推理性能。
关键观点2: 块状prefill技术
块状prefill通过固定或动态地设置每个batch中的prefill和decode tokens比例,提高GPU的利用率。
关键观点3: stall-free schedules策略
该策略避免了推理过程中的停滞,同时优化了TTFT和TPOT/TBT。
关键观点4: 源码解读和性能实验
文章详细解读了Sarathi-Serve的源码,并展示了其性能实验结果,验证了其优化策略的有效性。
关键观点5: 与传统架构的对比
文章对比了Sarathi-Serve与传统推理架构如vllm、Orca等,展示了其优点和可能的改进空间。
文章预览
在 分离式推理架构1 中, 我们以DistServe为例,解释了“为何要使用分离式推理架构”:分离式推理架构可以解耦prefill(compute-bound)和decode(memory-bound)过程,使得不管是在硬件分配还是在并行策略上,这两者都能朝着独立的方向优化,同时改进TTFT和TPOT,而无需再像合并式推理架构那样,总是在这两者之间做trade off。 但是,读完这篇文章,你可能会有这样的疑惑: 如果我能采取一种方法,使得处于prefill阶段的请求和处于decode阶段的请求能组成一个batch同时计算 ,而在组建这样的batch的过程中,我又充分考虑了最大化GPU计算单元利用率、最小化IO读写次数(简而言之,怎么能榨干一块gpu我就怎么来)。那么这时,我是不是在不解耦的情况下,同样也能同时保全TTFT和TPOT呢? 那么在这篇文章中,我们就来看看遵从这个思路设计的推理架构: Sarathi-Serv
………………………………