大模型推理服务生产运维:vLLM、KServe与GPU资源治理

把模型启动并提供一个兼容 OpenAI 的接口只是第一步。生产推理还要解决模型来源、显存容量、并发调度、KV Cache、长上下文、冷启动、自动伸缩、限流、内容安全、成本和故障降级。本文以 vLLM 与 KServe 为代表,给出大模型推理平台的生产运维路线。

一、先定义服务目标

传统 Web 服务关注请求数和毫秒级延迟,大模型还需要关注 Token。

定义:

  • TTFT:首 Token 延迟;
  • TPOT:后续每 Token 时间;
  • 端到端延迟;
  • 输入/输出 Token 数;
  • 每秒输入与输出 Token;
  • 并发序列数;
  • 上下文长度;
  • 生成成功率与截断率;
  • GPU 利用率、显存和单 Token 成本。

交互问答重视 TTFT,批量生成更重视总吞吐。两者若混在同一队列,长请求可能拖慢短请求。

二、容量不是只看模型文件大小

显存消耗包括:

模型权重
+ KV Cache
+ 激活与工作区
+ CUDA Graph/通信缓冲
+ 运行时和碎片

权重量可按参数量 × 每参数字节粗估,但量化格式、张量并行和加载格式会改变实际值。KV Cache 与层数、隐藏维度、并发序列、上下文和数据类型相关,长上下文通常是容量风险核心。

上线前用真实输入分布压测,不能只用几十 Token 的简单请求。

三、vLLM核心机制

vLLM 通过分页式 KV Cache、连续批处理和高效内核提高吞吐。关键参数通常包括:

  • 模型和 Tokenizer;
  • tensor parallel size;
  • pipeline parallel size;
  • GPU memory utilization;
  • max model length;
  • max number of sequences;
  • max batched tokens;
  • KV Cache 数据类型;
  • 前缀缓存;
  • 量化方式;
  • eager/CUDA Graph 行为。

不要为追求显存利用率把余量压得过小。模型加载、请求峰值、碎片和运行时变化都可能触发 OOM。

四、并行策略

张量并行

将单层计算拆到多 GPU,适合模型无法放入单卡。要求 GPU 间有足够高速互联,PCIe、NVLink 和跨 NUMA 拓扑会显著影响性能。

流水线并行

将不同层放在不同设备,可能产生流水线气泡,对小批量交互请求影响明显。

数据并行

每个副本持有完整模型,通过入口分配请求。扩展简单,但每个副本都占一份权重显存。

专家并行

MoE 模型还要关注专家分布和 all-to-all 通信热点。

选择并行策略要结合模型大小、GPU 型号、拓扑、请求长度和容错,而不是只看 GPU 数量。

五、KServe生产架构

KServe 负责模型服务 CRD、路由、伸缩、健康检查和部署管理,可接入 vLLM 等后端。

生产需要拆分:

  • 控制面;
  • 模型存储与下载凭据;
  • 本地模型缓存;
  • 推理工作负载;
  • 网关和认证;
  • 可观测性;
  • 配额和调度;
  • 灰度/回滚。

控制面暂时不可用时,已有数据面应尽量继续服务。升级前验证 CRD、Webhook、网关和后端兼容。

六、模型供应链

模型文件本质上是生产制品。记录:

  • 来源仓库和许可证;
  • 精确 revision/commit;
  • 文件哈希;
  • 权重格式;
  • Tokenizer 与配置;
  • 量化工具和参数;
  • 安全扫描和评测结果;
  • 审批人和上线时间。

不要在生产启动时无版本地下载 latest。将模型同步到受控对象存储或制品库,固定 revision,并验证哈希。

部分模型序列化格式可能执行代码。优先安全格式并限制 trust_remote_code,构建过程放入隔离环境。

七、冷启动与模型缓存

大模型启动包含调度、镜像拉取、权重下载、加载、通信初始化和图编译,可能耗时数分钟。

优化:

  • 节点预拉镜像;
  • 本地 NVMe 模型缓存;
  • 固定模型 revision;
  • 分离权重下载与服务启动;
  • 设置 startup probe;
  • 预热典型请求;
  • 保留最小副本;
  • 预测扩容;
  • 监控每个启动阶段。

缓存要有容量水位、LRU 清理、校验和租户隔离,防止节点磁盘被权重占满。

八、自动伸缩

CPU 利用率通常不能代表推理压力。更合适的信号包括:

  • 等待队列长度;
  • 运行中请求;
  • Token 吞吐;
  • TTFT;
  • KV Cache 使用率;
  • GPU 利用率和显存;
  • 请求拒绝数。

扩容速度受 GPU 节点供给和模型冷启动限制。应同时使用:

  • 最小热副本;
  • 队列和并发上限;
  • 预测扩容;
  • 不同优先级队列;
  • 超时和快速拒绝;
  • 小模型降级。

Scale-to-zero 适合低频模型,不一定适合对首请求时延敏感的服务。

九、批处理与公平调度

连续批处理提高吞吐,但长提示和长输出会占用更多 KV Cache。需限制:

  • 单请求输入 Token;
  • 最大生成 Token;
  • 并发序列;
  • 每租户请求与 Token 速率;
  • 队列等待时间;
  • 单请求总预算。

仅按请求数限流不公平:一个 200 Token 请求和一个 100000 Token 请求成本完全不同。应按输入、输出和在途 Token 建模。

十、GPU调度与节点

Kubernetes 环境关注:

  • NVIDIA Driver、Container Toolkit 和 device plugin 兼容;
  • GPU Operator 版本;
  • 节点标签、污点和亲和性;
  • GPU 型号、显存和互联拓扑;
  • NUMA、CPU、内存和本地盘;
  • MIG 划分;
  • RDMA/NCCL 网络;
  • 驱动升级和节点维护。

GPU 工作负载不能只申请 GPU,还要请求足够 CPU、内存、共享内存和临时存储。

十一、MIG与共享

MIG 能把支持的 GPU 划分为隔离实例,适合小模型或多租户;时间切片提高利用率但隔离和性能可预测性较弱。

选择时考虑:

  • 模型最小显存;
  • 是否需要独占带宽;
  • 故障隔离;
  • 多租户安全;
  • 调度碎片;
  • 监控粒度;
  • 动态重配置是否需要驱逐任务。

十二、入口网关与API治理

推理入口应处理:

  • 认证和租户;
  • 配额和 Token 限流;
  • 模型别名到精确版本;
  • 流式响应;
  • 请求大小和上下文上限;
  • 超时与取消;
  • 幂等和重试;
  • 审计;
  • 敏感字段脱敏。

流式请求一旦客户端断开,应尽快将取消传递到后端,避免 GPU 继续生成无人消费的 Token。

十三、重试与降级

生成请求可能已经消耗大量算力,代理无脑重试会成倍增加成本。只对连接建立失败、明确未开始计算或幂等场景有限重试。

降级选项:

  • 缩短最大输出;
  • 降低上下文;
  • 切换小模型;
  • 关闭非必要工具调用;
  • 返回缓存答案;
  • 排队或异步处理;
  • 对低优先级快速拒绝。

十四、可观测性

指标按四层组织:

请求层

请求率、错误率、TTFT、TPOT、端到端延迟、输入/输出 Token、取消和截断。

调度层

等待/运行请求、批大小、抢占、KV Cache 使用率、前缀缓存命中、队列时间。

GPU层

利用率、显存、功耗、温度、时钟、ECC、Xid 错误、PCIe/NVLink 吞吐。

平台层

Pod 重启、调度失败、镜像/模型下载、节点压力、网关连接和对象存储延迟。

日志避免记录完整提示词和输出。生产调试可抽样、脱敏并设置短保留期。

十五、常见故障

CUDA OOM

确认是权重、KV Cache、批量、上下文、其他进程还是碎片。保存并发、Token 和显存时间线;降低上限或分流,不要只依赖自动重启。

TTFT突然升高

检查队列、批大小、长提示比例、KV Cache、GPU 降频、模型副本和入口重试;区分排队与实际计算。

GPU Xid错误

保存 Xid、驱动、GPU 序列号、温度和任务;隔离节点并按 NVIDIA 指南判断驱动、硬件或链路故障。反复 Xid 的节点不应继续承载关键流量。

模型启动失败

按调度、镜像、凭据、存储、哈希、显存、并行拓扑和健康探针逐段定位。不要把 startup probe 配置得比模型正常加载时间更短。

NCCL超时

检查 GPU 拓扑、网卡/RDMA、MTU、PFC/ECN、NCCL 环境、节点时钟和某个 rank 是否 OOM 或进程退出。

十六、灰度与模型评测

模型版本灰度不仅看系统指标,还要看质量与安全:

  • 固定评测集;
  • 事实正确率;
  • 拒答与越权;
  • 提示注入;
  • 工具调用正确率;
  • 延迟和 Token 成本;
  • 用户反馈;
  • 不同语言和长度分布。

通过模型别名将少量租户导向新版本,保留快速切回。提示模板、Tokenizer 和模型必须作为一个发布单元管理。

十七、成本治理

成本拆解:

  • GPU 节点时间;
  • 空闲保底副本;
  • 模型和镜像存储;
  • 跨区网络;
  • 输入/输出 Token;
  • 失败与重试请求;
  • 预热和评测。

按模型、版本、租户和业务标签分摊。优化顺序通常是减少无效请求、限制 Token、提升批处理和缓存命中,再评估量化和更换 GPU。

十八、安全边界

  • 权重和数据来源合规;
  • 模型服务不直接暴露管理端口;
  • 提示词、输出和向量数据分类保护;
  • 工具调用采用最小权限和人工确认;
  • 防止 SSRF、命令执行和数据越权;
  • 多租户配额与日志隔离;
  • 管理员不能随意读取用户对话;
  • 敏感模型和数据不进入不受控外部服务。

十九、上线清单

  • [ ] 模型 revision、哈希、许可证和评测可追溯;
  • [ ] 显存模型包含权重、KV Cache 和运行时余量;
  • [ ] 真实上下文和输出分布压测完成;
  • [ ] GPU 拓扑、驱动、运行时和调度兼容;
  • [ ] 冷启动、模型缓存和最小热副本可控;
  • [ ] 入口按 Token 与租户限流,支持取消;
  • [ ] 自动伸缩使用队列、Token 或延迟指标;
  • [ ] OOM、Xid、节点故障和小模型降级已演练;
  • [ ] 提示与输出日志经过采样和脱敏;
  • [ ] 模型质量、安全、成本和系统指标共同作为发布门禁。

二十、结语

大模型推理平台是“高成本、长请求、强状态缓存”的特殊在线系统。可靠性来自对 Token、显存、KV Cache、队列和 GPU 拓扑的共同治理。真正成熟的平台既要让模型跑得快,也要在过载、节点故障和新模型发布时保持可控、可降级、可审计。

参考资料

Copyright © yan-jian.com 2023 - 2026 · Powered by GitBook更新时间: 2026-10-28 21:12:06

results matching ""

    No results matching ""