Serverless 推理:无服务器 LLM 推理、冷启动优化与 GPU 弹性

Serverless 推理把「模型部署」变成「按调用计费的 API」:无 GPU 预置、按需拉起、闲置自动回收。本文系统讲解 Serverless 推理的架构、冷启动的瓶颈与优化(模型缓存/容器预热/两阶段拉起)、GPU 弹性的调度(实例池/水位线/碎片整理)、与常驻推理的选型,以及生产落地的成本账与稳定性。

传统推理服务要「预置 GPU」——不管有没有流量,卡钱都在烧。Serverless 推理换个思路:没有调用就不跑,有调用就拉起,用完回收,GPU 成本按「实际使用」计费。但「按需拉起」带来一个新敌人:冷启动。几十 GB 的模型,从「没有实例」到「能回答第一个问题」,可能要好几分钟。本文把 Serverless 推理讲透:架构怎么搭、冷启动怎么砍、GPU 弹性怎么调度、什么时候该用(什么时候别用)。

前置:/ai-vllm-system/(vLLM 推理引擎)、/ai-triton-server/(Triton 推理服务器)、/ai-inference-engine-comparison/(推理引擎选型)、/ai-distributed-inference-gpu-cluster/(多卡推理集群)。

目录

1. Serverless 推理是什么:按调用计费的推理 API

先建立直觉:

传统推理:
□ 预置 GPU 实例(常驻)→ 成本按「时间」烧
□ 空闲时也烧钱(流量波峰波谷明显 → 浪费严重)
□ 运维:扩缩容、节点管理、故障自愈

Serverless 推理:
□ 无调用 → 不跑(GPU 回收)
□ 有调用 → 拉起实例 → 推理 → 按「使用时长/调用」计费
□ 用户看到的是「一个 API」,不关心背后有没有卡

核心转变:
□ 计费从「时间」→「使用」(闲置不花钱)
□ 运维从「管理实例」→「管理 API」(平台代管)
□ 弹性从「预留」→「按需」(秒级拉起/回收)
对比示意:
常驻:GPU 卡 24h 都扣费,实际利用 20%
Serverless:有调用才扣费,闲置时 GPU 归零
→ 对「低利用率/波动大」的工作负载,成本可能省 60%+

工程要点:Serverless 推理的本质是**「把 GPU 从预置资产变成按用付费的资源」**——计费颗粒度从「小时」变成「秒/调用」,闲置成本归零。它适合「利用率低、波动大、并发稀疏」的场景;持续高吞吐的场景反而常驻更划算。

2. 架构:控制面、数据面与调度器

Serverless 推理平台是「两平面 + 一调度」:

控制面(Control Plane):管理「要跑什么」
□ 模型仓库/版本管理、API 网关、鉴权
□ 部署配置(模型、卡型、副本、超时)

数据面(Data Plane):真正「跑模型」
□ 推理实例(GPU Pod/VM + 推理引擎 vLLM/Triton)
□ 模型加载器、健康检查、指标上报

调度器(Scheduler):决定「什么时候跑/停」
□ 实例池管理(池化闲置 GPU)
□ 水位线调度(按实例队列长度拉起)
□ 空闲回收(超时无调用 → 回收)

请求流:
API 网关 → 调度器(选/拉起实例)→ 推理实例 → 返回
并发不够 → 调度器拉起新实例(自动扩缩容)
关键:实例分为「热实例」(已在跑)与「冷实例」(要拉起)
热实例 → 直接转发请求(毫秒级)
冷实例 → 拉起 + 加载模型 → 才可服务(秒到分钟级)

工程要点:Serverless 推理架构的关键是**「调度器在请求路径上」**——它既要快速命中热实例(低延迟),又要决定何时拉起/回收(成本)。冷/热实例的分层,决定了「延迟账」和「成本账」怎么算。架构设计的目标是「热实例命中率最大化」。

3. 冷启动的瓶颈:模型加载与容器拉起

冷启动是 Serverless 推理的「头号敌人」,拆开看成本:

冷启动时间线(典型值):
□ 容器/VM 拉起:1~10 秒(镜像拉取、资源分配)
□ 推理引擎启动:1~3 秒(vLLM/Triton 进程初始化)
□ 模型加载:10 秒 ~ 数分钟(看模型大小/存储带宽)
□ 权重权重从磁盘→显存:70B FP16 ≈ 140GB,NVMe 读要几十秒
□ 预热/校准:可选,秒级

总量:小模型 10~30 秒,70B 大模型可能 2~5 分钟

瓶颈排序:
1. 模型权重加载(最重:几十~上百 GB)
2. 容器/镜像拉起(第二:网络 + 存储)
3. 引擎初始化(较轻)
→ 优化顺序:先砍模型加载,再砍容器拉起
为什么冷启动痛:
用户第一请求 = 冷启动 + 推理 → 延迟不可接受(分钟级)
但 Serverless 的价值就是「闲置回收」→ 必然产生冷启动
→ 解法:不消灭冷启动,而是「让大多数请求命中热实例」

工程要点:冷启动的瓶颈排序是**「模型加载 > 容器拉起 > 引擎初始化」**——模型权重几十上百 GB 是最大头。Serverless 的哲学不是「消灭冷启动」,而是「用池化/预热让大多数请求命中热实例」,把冷启动留到「真正需要拉起」的时刻。

4. 冷启动优化:模型缓存、预热与两阶段拉起

把冷启动从「分钟级」砍到「秒级」的工程手段:

优化手段:
□ 模型缓存:权重放在本地 NVMe / 内存映射
  → 省去「从远端对象存储拉取」的网络耗时
  (远端拉 140GB 要几分钟,本地 NVMe 读只要几十秒)
□ 镜像预热:把推理镜像/权重预分发到可用节点
□ 两阶段拉起:先回「占位」响应 → 后台加载 → 就绪
□ 实例池/预留:维持 K 个「已拉起未使用」的热实例
  → 请求直接命中,冷启动只发生在池不够时
□ 权重格式优化:FP8 减半权重(140GB→70GB,加载也减半)
□ 并行加载:分片并发读 + 多节点分片加载

「暖启动」策略:
□ 迷你预热:拉容器 + 引擎(几秒),不加载权重
□ 全量预热:容器 + 引擎 + 权重(完整就绪)
→ 两档粒度,按「预期流量」选预热深度
效果:
无优化冷启动:~2 分钟(70B)
+ 本地缓存:~40 秒(省远端拉取)
+ 实例池命中:请求走热实例(毫秒)
→ 冷启动只发生在「流量突增超过池容量」时

工程要点:冷启动优化的核心是**「把最重的操作前置/缓存」**——权重本地缓存(砍网络)+ 实例池(请求命中热实例)+ 预热粒度分级。目标不是「冷启动变快」,而是「用户几乎碰不到冷启动」。FP8 减半权重是「免费加速加载」的额外红利。

5. GPU 弹性调度:实例池、水位线与碎片整理

GPU 是稀缺资源,Serverless 的调度核心是**「池化 + 水位线」**:

实例池(Instance Pool):
□ 平台维护一组「已拉起/可拉起」的 GPU 实例
□ 模型 A 用完释放 → 实例回池 → 给模型 B 用(资源共享)
□ 池大小:太少→冷启动多;太多→浪费

水位线调度(Watermark):
□ 每个模型维护「运行中实例数 / 排队请求数」
□ 排队超阈值 → 拉起新实例(扩容)
□ 空闲超时 → 回收实例(缩容)
□ 水位线高低 = 延迟 vs 成本的权衡

碎片整理(Defragmentation):
□ GPU 显存被多个小模型碎片化 → 合并/迁移
□ 模型复用实例池(不同模型分时段共享)
□ 用更优的装箱(bin-packing)提高 GPU 利用率

调度目标:
□ 热实例命中率(延迟)↑
□ GPU 利用率(成本)↑
□ 冷启动频率 ↓
调度循环:
请求 → 有热实例?命中(快)
        → 无热实例?排队 or 拉起(权衡)
空闲 → 超阈值?回收 → 回池 → 被其他模型复用

工程要点:GPU 弹性调度的核心是**「池化复用 + 水位线扩缩容」**——模型间共享 GPU(利用率)、排队超阈值扩容(延迟兜底)、空闲回收(成本)。水位线是最关键的旋钮:调高保延迟、调低保成本。碎片整理是「多个小模型共存」时的进阶优化。

6. 自动扩缩容:按并发、按队列还是按指标

扩缩容策略决定「延迟与成本」的平衡:

策略对比:
□ 按并发:请求数 > 实例容量 → 扩容
  → 直观,但「长请求/流式」会高估(占着茅坑)
□ 按排队:队列长度 / 等待时间 → 扩容
  → 更能反映「真忙」,LLM 场景更准
□ 按指标:GPU 利用率 / token 吞吐 / 延迟 P95
  → 综合,但指标有滞后(延迟高了才反应)

LLM 的坑:
□ 生成是「长占用」:一个流式请求占实例几秒~几十秒
□ 并发数 ≠ 忙闲:100 个请求可能都在排队生成
□ 扩容要「提前量」:拉起新实例要几十秒
  → 不能等满了才扩,要按「预测」扩

扩缩容周期:
□ 扩:预测队列增长 → 提前拉起(提前 30~60 秒)
□ 缩:空闲回收(保守,回收比拉起快)
□ 冷却:避免「扩了又缩、缩了又扩」抖动
推荐组合:
扩容信号:排队等待时间 P95 > 阈值(如 2s)
缩容信号:实例空闲 > 阈值(如 5 分钟无请求)
预热池:按历史流量曲线提前备好热实例

工程要点:LLM 场景的扩缩容要**「按排队/等待时间 + 提前量」**——因为生成是长占用,并发数会误导;新实例拉起要几十秒,必须预测性扩容。冷却机制防抖动。缩容可以保守(空闲回收代价小),扩容必须激进(冷启动代价大)。

7. 与常驻推理的选型:延迟、成本与稳定性

不是所有推理都该 Serverless,选型看负载画像:

Serverless 适合:
□ 利用率低:日均利用率 < 30% 的模型
□ 波动大:波峰波谷明显(如白昼型业务)
□ 并发稀疏:调用稀疏、间歇(如低频 API)
□ 多模型多版本:共享 GPU 池省成本
□ 研发环境/CI:短时验证、动态起停

常驻(Deployment)适合:
□ 利用率高:持续高并发(核心线上服务)
□ 延迟敏感:P99 严格要求(冷启动不能忍)
□ 长连接/流式:稳定实例抗长会话
□ 状态依赖:需要缓存/前缀缓存/长上下文预热

关键指标判断:
□ 平均并发 vs 峰值并发:比值小 → Serverless 划算
□ P99 容忍度:容忍秒级 → 可 Serverless
□ 成本模型:算「节省」= 常驻成本 - 按量成本
混合形态(最常见):
□ 核心模型常驻(保延迟)
□ 长尾/低频模型 Serverless(省成本)
□ 流量突增时 Serverless 兜底扩容(混合弹性)
→ 常驻保底 + Serverless 弹性,是生产主流

工程要点:选型的核心是**「看利用率与延迟容忍度」——利用率低、容忍秒级延迟 → Serverless 省大钱;核心高频服务 → 常驻。生产最常见的其实是混合形态**:核心常驻保延迟,长尾 Serverless 省钱,突增用 Serverless 兜底弹性。

8. 成本账:按量计费、闲置回收与预留实例

算清楚账,才知道 Serverless 到底省多少:

成本结构:
□ 按量计费:按「实例运行时长 × 卡型单价」× 利用率
  (比常驻单价贵 1.5~3 倍,但只算「用的时候」)
□ 闲置回收:无调用 → 实例释放 → 成本归零
□ 预留实例(Provisioned Concurrency):
  → 保留 K 个热实例,付「保底费」换「零冷启动」

算账:
常驻成本 = 卡数 × 单价 × 24h
Serverless = 卡数 × 单价 × 实际利用小时 + 预留费
省多少 = 利用率反比
→ 利用率 10% 的工作负载:可能省 60~80%
→ 利用率 70% 的持续负载:几乎不省,甚至更贵

省钱杠杆:
□ 缩闲置(最大杠杆):空闲回收 + 合理池大小
□ 降卡型:FP8/量化让单卡装更大模型(省卡数)
□ 提高装箱:多模型共享 GPU 池
案例账(示意):
1 卡 A100 常驻:$3/h × 24h = $72/天
Serverless 利用率 15%:$3/h × 3.6h ≈ $11 + 预留费 ≈ $15/天
→ 省 ~80%(但冷启动换来的)

工程要点:Serverless 的账核心是**「利用率反比省钱」**——利用率越低省越多(60~80%),持续高负载反而不省。省钱杠杆排序:缩闲置 > 降卡型(FP8)> 装箱复用。预留实例是「花钱买零冷启动」的选项,只在延迟敏感场景用。

9. 生产落地:Serverless 平台建设与稳定性

Serverless 推理平台不是「套壳」,稳定性要单独设计:

建设清单:
□ 模型管理:版本化、多副本、回滚
□ 路由:按模型/版本/租户路由 → 对应实例池
□ 鉴权限流:API 网关 + 租户配额
□ 可观测:冷启动率、热实例命中率、排队等待、GPU 利用率
□ 容灾:节点故障 → 实例重建 + 请求重试

稳定性关键指标:
□ 冷启动率:<5%(大多数请求命中热实例)
□ 排队等待 P95:< 阈值(如 2s)
□ 回收误伤:别把「刚活跃」的实例回收(冷却期)
□ 故障自愈:实例崩溃 → 自动重建 + 拉请求转移

LLM 特有风险:
□ 长请求超时:流式生成可能几十秒 → 超时阈值设高
□ 前缀缓存失效:冷实例无前缀缓存 → 首次慢
□ 突发多租户:一个租户流量洪峰打爆共享池 → 配额隔离

流程:
监控冷启动率/命中率 → 调水位线/池大小 → 灰度调整
上线检查:
□ 冷启动在可接受范围(用预留/池化兜底)
□ 有配额与限流(防单租户打爆)
□ 故障自愈经过演练(节点宕机→实例重建)
□ 成本核算接入(按模型/租户分账)

工程要点:Serverless 平台建设的关键是**「把冷启动/命中率/排队当成核心指标管」**——冷启动率 <5%、排队 P95 达标、冷却期防误回收、配额防打爆。LLM 特有风险(长请求超时、前缀缓存、多租户洪峰)要单独设计。可观测与成本分账是平台级能力,不是附加项。

10. 速查表与一句话记忆

问题一句话答案
是什么无调用不跑、按调用计费的推理 API
架构控制面(管理)+ 数据面(推理)+ 调度器(拉起/回收)
冷启动瓶颈模型加载 > 容器拉起 > 引擎初始化
优化权重本地缓存、实例池命中、预热分级、FP8 减半
弹性调度实例池复用 + 水位线扩缩 + 碎片整理
扩缩容按排队/等待时间 + 提前量扩容,冷却防抖动
何时用利用率低、容忍秒级延迟、长尾模型
何时不用高频核心、P99 敏感、长会话状态
成本账利用率反比省钱;预留实例买零冷启动
生产关键冷启动率/命中率指标、配额限流、故障自愈

一句话记忆:Serverless 推理 = 按调用计费(闲置归零)+ 冷热实例分层(热命中毫秒/冷拉起分钟)+ 冷启动瓶颈是模型加载(缓存/预热/FP8 减半)+ 池化与水位线调度(利用率换延迟)+ 扩缩按排队加提前量(防抖动)+ 选型看利用率与延迟容忍(常驻保底 + Serverless 弹性)+ 平台管冷启动率与配额——「低利用率推理的成本解药,用冷启动换钱」。

延伸阅读

  • /ai-vllm-system/ — vLLM 推理引擎与调度
  • /ai-triton-server/ — Triton 推理服务器
  • /ai-inference-engine-comparison/ — 推理引擎选型
  • /ai-distributed-inference-gpu-cluster/ — 多卡推理集群
  • /ai-fp8-inference/ — FP8 量化省带宽
  • DevOps 专题 — 云原生部署与弹性
  • 分布式系统专题 — 调度与一致性

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「ai」更多文章

  1. 类别不平衡与异常检测:从重采样到半监督方法
  2. Embedding 深入:对比学习、双塔架构与向量检索工程
  3. MLOps 治理与可复现:模型注册、漂移监控与合规