一、并发推理概述

大家好,我是你们的老朋友。今天咱们聊聊并发推理——这个在AI工程化里绕不开的话题。

说实话,我刚开始做推理部署那会儿,根本没把并发当回事。觉得模型能跑起来就行,谁还管它同时来几个请求?结果第一次上线就被打脸了——用户一多,服务直接卡死。嗯,从那以后,我再也不敢小看并发推理了。

什么是并发推理?

并发推理,说白了就是让推理系统同时处理多个请求。你想想看,一个模型实例,能不能同时为多个用户服务?这就是并发要解决的问题。

从技术角度看,并发推理有两种常见形态:

  • 单模型多请求:一个模型实例,同时处理N个推理请求
  • 多模型多请求:多个模型实例,各自处理不同的请求

我个人习惯把并发推理比作「餐厅后厨」。一个厨师(GPU)可以同时炒好几个菜(推理请求),关键看你怎么安排灶台(显存)和配菜(数据)。

核心要点:并发推理不是简单的「多开几个进程」,而是要在有限的显存和算力下,最大化吞吐量。

为什么需要并发推理?

这个问题其实很简单——因为现实世界是并发的。

我在项目中遇到过这样一个场景:一个在线翻译服务,白天高峰期每秒要处理上千个请求。如果每个请求都排队等上一个跑完,用户体验会怎样?用户等10秒才出结果,早就关页面走人了。

具体来说,需要并发推理的原因有这几个:

  1. 提升资源利用率:GPU算力很强,单次推理根本喂不饱它。并发能让GPU满负荷运转。
  2. 降低响应延迟:请求不用排队,能同时处理,用户等待时间自然就短了。
  3. 支撑高吞吐:在线服务每秒要处理成百上千次推理,没有并发根本扛不住。
  4. 节省成本:同样的硬件,并发做得好,能服务更多用户。说白了就是省钱。

我的经验:曾经有个项目,单卡推理只能做到50 QPS(每秒查询数)。优化并发后,同样的卡跑到了300 QPS。硬件没变,只是把并发策略调了调。你说这重不重要?

并发推理的典型场景

聊完理论,咱们看看实际中哪些地方需要并发推理。我归纳了三个最常见的场景:

1. 在线服务

这是最典型的场景。比如:

  • 智能客服机器人
  • 实时翻译服务
  • 图像识别API
  • 推荐系统

这些场景的特点是:请求到达时间不确定,忽高忽低。你想想看,双十一零点那会儿,推荐系统的请求量能暴涨几百倍。如果系统不支持并发,直接就崩了。

我记得有一次给某电商平台做推理优化,他们要求P99延迟必须小于200ms。单卡单请求能做到,但并发一上来就超时。后来我们用了动态批处理+显存池,才把这个问题解决。

2. 批量处理

这个场景和在线服务正好相反——请求是成批来的,不要求实时响应。比如:

  • 离线数据清洗
  • 视频内容审核
  • 批量文档翻译
  • 大规模特征提取

批量处理的核心目标是吞吐量最大化。你有一百万张图片要识别,不在乎每张花0.5秒还是1秒,只在乎总时间能不能从10小时压缩到2小时。

我曾经处理过一个视频审核项目,每天要处理10万小时的视频。单卡推理要跑一个月,根本不可行。后来我们做了并发推理,用8卡同时处理,一周就搞定了。

3. 混合场景

实际项目中,很多时候是两种场景混在一起的。比如:

  • 白天做在线服务,晚上做批量处理
  • 同一个模型,既服务实时请求,也处理后台任务

这种场景最考验系统设计。我建议的做法是:用显存池来隔离资源,给在线服务预留固定资源,剩下的给批量任务用。这样互不干扰。

注意:混合场景下,千万别让批量任务把显存吃光,否则在线服务的延迟会飙升。我曾经吃过这个亏,教训深刻。

并发推理的核心挑战

说了这么多好处,那并发推理难在哪?我总结了几点:

挑战 说明 我的建议
显存竞争 多个请求同时占用显存,容易OOM 用显存池统一管理,避免碎片化
请求调度 如何分配GPU算力给不同请求 动态优先级+公平调度策略
延迟抖动 并发高了,个别请求延迟会暴涨 设置超时机制,避免长尾请求拖累整体
模型加载 多个模型同时加载,显存不够用 按需加载+模型共享

嗯,这里要注意:并发推理不是「越多越好」。并发数太高,反而会因为显存竞争导致性能下降。我一般会先做压力测试,找到最优并发数。

知识体系总览

为了让大家更直观地理解并发推理的全貌,我画了一张图:

并发推理知识体系 并发推理 为什么需要? 典型场景 核心挑战 提升资源利用率 降低响应延迟 支撑高吞吐 在线服务 批量处理 混合场景 显存竞争 请求调度 延迟抖动 目标:在有限显存下,最大化吞吐量 + 控制延迟

这张图把并发推理的核心脉络理清楚了。从「为什么需要」到「典型场景」再到「核心挑战」,最后都指向一个目标——在有限显存下,最大化吞吐量,同时控制好延迟。

一个小建议:刚开始接触并发推理的同学,别一上来就想着优化。先把单卡单请求跑通,再慢慢加并发。我见过太多人一上来就搞8并发,结果出了问题都不知道是模型的问题还是并发的问题。

好了,这一章的内容就到这里。并发推理是个系统工程,后面我们会一步步深入,从显存池配置到调度策略,把每个环节都讲透。

想要更多资料,联系可可