专栏名称: GiantPandaCV
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
GiantPandaCV  ·  免费 | 抢先试用此芯Armv9 AI ... ·  3 天前  
GiantPandaCV  ·  美团基于SGLang提供INT8无损满血版D ... ·  3 天前  
51好读  ›  专栏  ›  GiantPandaCV

图文详解 Continuous Batch:不写 CUDA Kernel 也能成倍优化推理效率

GiantPandaCV  · 公众号  · 3D  · 2024-10-18 18:01

主要观点总结

文章介绍了大模型推理调度的“高频面试题”,包括调度策略、触发调度的时机、Continuous Batching策略下prefill batch中prompt长度不一时是否需要Padding,以及调度策略在LLM推理场景中的重要性。文章还提到了Anyscale在vLLM中推出的Continuous Batching策略使推理速度提升十倍以上,以及Static Batch和Continuous Batch的特点和区别。最后,文章提到调度器在ModelExecutor执行前向步骤前的作用,以及如何提高吞吐量的方法,并推荐了公众号《vLLM 深入浅出》以获取更多信息。

关键观点总结

关键观点1: 调度策略及其优缺点

文章介绍了调度策略,包括Static Batch和Continuous Batch,并比较了它们的优缺点。Static Batch按请求分批推理,导致GPU资源浪费和请求延迟高,但实现简单。Continuous Batch能最大化批次的规模,提高推理效率。

关键观点2: Continuous Batch中的prompt长度不一时的处理

文章解释了当Continuous Batch下的prefill batch中prompt长度各不相同时,是否需要Padding的问题。

关键观点3: vLLM中的调度策略应用

文章提到vLLM在Chatbot Arena和LMSys.org上的实际应用,以及Continuous Batching策略成为大模型推理的事实标准。

关键观点4: 提高吞吐量的方法

文章提到通过优化调度策略,可以进一步提高大模型推理的吞吐能力。


正文

在“开席”之前,咱们先来热热身!看看下面大模型推理调度的“高频面试题”,你能答上来几道?

1.调度策略有哪些?各有什么优缺点

2.什么时候会触发调度?

3.Continuous batch 下 prefill batch 里 prompt 长度各不相同时需要 Padding 吗?为什么

很多人以为加速推理只能靠更快的芯片、量化算法或更高效的 CUDA kernel。但在 LLM 推理场景中,调度策略也是加速利器!去年,Anyscale 在 vLLM 中推出的 Continuous Batching 策略,就让推理速度直接提升了十倍以上!

Continuous Batching,又叫 Dynamic Batching,是一种按 iteration(每次前向推理)来调度的方式。这个想法最早出现在 2022 年的 Orca 推理框架中,但由于缺少实际应用,如今已经不太被提起了。反观 vLLM 在 Chatbot Arena 和 LMSys.org 上有真实流量,逐渐成为大模型推理的事实标准。

Static Batch

在 Continuous Batch 之前,最常见的调度方式是 Static Batch。下面动图展示了它的基本原理:

Static Batch 的特点是按请求分批推理,早到的请求要等晚到的(S1要等S4),“要走一起走”。它好像老家火车站的黑车。即便某个请求早完成(S3最早结束),它也得等所有请求完成后才能释放资源。这种方式导致 GPU 资源浪费且请求延迟高。不过,它的实现简单,调度器只要静态规划好当前请求的批次,等模 型运行完后再继续调度下一个批次就行。

Continuous Batch

顾名思义就是“持续组 batch” 的策略,它的工作原理如下动图所示:

可以看到调度器现在很忙,模型每完成一个批次的 prefill 或者 decode 阶段,调度器就立即干活,尽量把下次推理的 batch 搞大 —— GPU 特别擅长大批量推理。这样早到的请求能快速开始,早结束的也能及时释放资源。和Static Batch 一对比,KV Cache 利用率明显提高了!

细心的朋友可能已经注意到:上面动图中,调度器优先执行 prefill 阶段。这样一来,当有 decode 请求时,可以最大化批次的规模,提高推理效率!







请到「今天看啥」查看全文