高性能推理服务
本节定位
如果上一节讲的是:
- 模型能不能在本地跑
这一节讲的就是更现实的一层:
模型能不能在线上稳定扛住请求。
这也是很多项目从 demo 走向生产时,第一次真正撞墙的地方。
学习目标
- 理解吞吐、延迟、批处理、队列这些推理服务关键词
- 理解为什么“能跑”不等于“能服务”
- 看懂一个最小批处理推理服务思路
- 建立对推理服务优化问题的第一层直觉
先建立一张地图
推理服务更适合按“请求怎么进来、怎么排队、怎么合批、怎么返回”来理解:
所以这节真正想解决的是:
- 为什么单次跑通模型和服务化完全不是一回事
- 为什么推理服务天然是排队、批次和资源平衡问题
一、为什么本地推理和推理服务是两回事?
1.1 本地推理关心的是“出不出结果”
例如:
- 一条 prompt 能不能答
- 一张图能不能生成
1.2 推理服务关心的是“同一时间能扛多少请求”
一旦上线,你要面对的是:
- 多个请求同时到来
- 流量波峰
- 资源限制
- 超时
所以推理服务的核心问题变成:
怎样在资源有限的情况下平衡速度和吞吐。
1.3 一个更适合新人的总类比
你可以把推理服务理解成:
- 餐厅后厨出餐
本地推理更像:
- 自己在家做一份饭,能不能做出来
推理服务更像:
- 中午高峰一下来很多单
- 厨房怎么排队、怎么拼单、怎么别让客人等太久
这个类比很适合新人,因为它会帮助你先抓住:
- 推理服务本质上是流量组织问题
二、先分清两个最重要的词
2.1 Latency
一次请求要等多久。
2.2 Throughput
单位时间能处理多少请求。
这两个指标往往互相拉扯。
例如:
- batch 变大,吞吐可能更高
- 但单请求等待时间可能也会更长
所以推理服务不是“单项越高越好”,而是平衡问题。