LLM 推理平台¶
传统模型服务多半是“一个请求对应一次短计算”,而 LLM 推理具有长连接、流式输出、动态批处理、巨量显存和 KV Cache 等特征。平台设计因此从普通 Service 负载均衡,演进到模型感知、缓存感知和请求感知的调度。
需要比较 vLLM、KServe、AIBrix、Ray Serve、BentoML 和 NVIDIA NIM 的层次与组合方式,见LLM Serving 与 AI 微服务框架;计划统一使用 Ray Data、Train、Tune 与 Serve 时,见Ray 在大模型训练与推理中的角色。
1. 先分清四层¶
客户端 / OpenAI-Compatible API
│
▼
网关与请求调度:Gateway API / Inference Gateway / Envoy AI Gateway
│
▼
服务控制面:KServe / Ray Serve / Seldon / 自研 Operator
│
▼
推理引擎:vLLM / SGLang / Triton / TensorRT-LLM
│
▼
GPU、模型权重、KV Cache、网络与存储
- 推理引擎执行模型计算,决定批处理、量化、并行和缓存效率。
- 服务控制面管理 Deployment、模型加载、健康检查、扩缩容和版本。
- 推理网关理解模型、请求和后端状态,选择合适实例。
- Kubernetes提供资源、生命周期、网络和故障恢复底座。
把这几层混成一个“Serving 工具”会造成选型误判。例如 KServe 和 vLLM 通常是组合关系,不是二选一。
2. 推理引擎怎么选¶
| 引擎 | 主要特点 | 常见场景 |
|---|---|---|
| vLLM | 连续批处理、PagedAttention、OpenAI API、广泛模型与硬件支持 | 通用 LLM 在线与批推理,云原生生态集成最活跃 |
| SGLang | Radix/Prefix Cache、结构化生成、复杂 Agent/多模态工作负载 | 重复前缀多、结构化输出和推理程序 |
| NVIDIA Triton | 多框架、动态批处理、模型仓库、统一指标 | 传统 ML/DL、多模型、多后端统一服务 |
| TensorRT-LLM | NVIDIA 平台深度优化、编译和 Kernel 优化 | 追求 NVIDIA GPU 极限性能且接受构建复杂度 |
| llama.cpp / Ollama | 轻量、CPU/边缘/开发体验 | 本地开发、小模型和边缘,不是大规模集群首选 |
评测时必须固定模型、精度、上下文长度、输入/输出 Token 分布、并发、硬件和 SLO。只比较“每秒 Token”而不看 TTFT 与尾延迟,结论通常没有生产意义。
3. KServe 的两个主要入口¶
InferenceService¶
标准 InferenceService 适合传统预测模型和大多数普通 LLM 部署。它提供:
- 模型制品加载与可插拔 ServingRuntime;
- Deployment/Service、健康检查和网络管理;
- Canary、A/B 和推理图;
- Standard、Knative/Serverless 等部署模式;
- vLLM、Triton 和自定义容器等后端。
LLMInferenceService¶
当平台需要 Prefix-aware Routing、KV Cache Offloading、Prefill/Decode 分离或更细粒度的多机 GPU 管理时,可以评估 LLMInferenceService。截至 2026 年,其 API 仍处于较快演进阶段,生产平台应固定版本并保留迁移测试。
KServe 官方建议先从标准 InferenceService 开始,确实遇到高级 LLM 需求时再切换到 LLMInferenceService。
参考:KServe Administrator Guide、LLMInferenceService Architecture
4. 多机模型需要 LeaderWorkerSet¶
当单个模型副本跨多台机器分片时,一个“副本”已经不再是一个 Pod。LeaderWorkerSet(LWS)把一个 Leader 和若干 Worker 作为整体复制和管理,提供稳定身份、并行创建和统一生命周期。
适合 LWS 的模式:
- 一个模型副本使用多节点 Tensor Parallel / Pipeline Parallel;
- Leader 接收请求,Worker 只参与 Collective;
- 需要以整个 Pod Group 为单位扩缩和滚动升级;
- 一个服务运行多个互相独立的分布式模型副本。
LWS 解决工作负载编排,不自动解决队列准入和 GPU 配额。生产中通常还需要 Kueue 负责成组准入和拓扑感知。
5. 为什么普通轮询不够¶
两个 vLLM Pod 即使副本规格相同,真实状态也可能不同:
- 一个实例已有相同 System Prompt 的 Prefix Cache;
- 一个实例队列已满,另一个空闲;
- 一个实例正在加载 LoRA Adapter;
- 一个实例可用显存更少或处于恢复状态;
- 请求模型、版本、上下文长度和优先级不同。
普通 Service 轮询看不到这些信息。Gateway API Inference Extension 引入 InferencePool 和 Endpoint Picker,让路由器根据模型服务暴露的指标与能力筛选、打分后端。
可用的路由信号包括:
- 请求的模型和 Adapter 是否已加载;
- KV/Prefix Cache 命中可能性;
- Running Request、Waiting Queue 与预计延迟;
- GPU KV Cache 使用率和可接受的最大上下文;
- 租户优先级、Token 预算和流控策略。
参考:Gateway API Inference Extension
6. KV Cache 是一种分布式资源¶
KV Cache 直接影响显存占用、吞吐和延迟。平台要明确四类缓存:
| 缓存 | 内容 | 价值 | 风险 |
|---|---|---|---|
| 模型权重缓存 | 模型文件、Tokenizer、Adapter | 缩短 Pod 冷启动 | 本地盘空间、一致性和淘汰 |
| Prefix Cache | 重复 Prompt 的 KV | 降低 TTFT 和重复计算 | 路由必须保持缓存亲和 |
| Runtime KV Cache | 活跃请求上下文 | 支撑生成过程 | 占用大量 GPU 显存 |
| Offloaded/Distributed KV | CPU、NVMe 或远端缓存 | 扩大上下文或跨实例复用 | 网络开销和一致性复杂度 |
“把请求发给最空闲实例”不总是最优;如果另一个稍忙的实例已有高价值 Prefix Cache,总成本可能反而更低。因此现代推理路由是多目标优化,而不是简单 Least Connections。
7. Prefill / Decode 分离¶
LLM 请求大致分为:
- Prefill:处理全部输入 Token,计算密集、并行度高;
- Decode:逐 Token 生成,受显存带宽和同步延迟影响,更关注尾延迟。
在大规模场景中,可以由不同 GPU Pool 分别承担 Prefill 和 Decode,再传输 KV Cache。好处是两类负载可以独立扩容和调参;代价是:
- 增加 KV 传输和网络要求;
- 故障路径和可观测性更复杂;
- 小规模或短 Prompt 场景可能得不偿失;
- 容量规划必须同时平衡两个 Pool。
llm-d 将 vLLM、Inference Gateway、KV Cache 感知路由、流控和分离式推理组合成可复用方案。它适合达到一定规模后优化性能/成本,不应成为第一个 LLM Pod 的前置条件。
参考:llm-d
8. 扩缩容应该看什么¶
CPU 使用率通常不是 LLM 服务的有效扩缩容信号。更有价值的指标包括:
- Waiting Request / Queue Depth;
- Running Request 与最大并发;
- Prompt/Generation Token Rate;
- KV Cache 使用率;
- TTFT、TPOT 和 P95/P99;
- 请求拒绝、超时与 Preemption;
- 每个副本的模型加载状态。
常用延迟指标¶
| 指标 | 含义 |
|---|---|
| TTFT | Time To First Token,用户等到首个 Token 的时间 |
| TPOT | Time Per Output Token,首 Token 后平均每 Token 时间 |
| ITL | Inter-Token Latency,相邻 Token 间延迟 |
| E2E | 从请求进入到完成的总延迟 |
一个简化容量关系:
安全并发必须来自压测曲线,不能直接采用引擎理论上限。扩容还要计入节点创建、镜像拉取、模型下载和权重加载时间;大型模型的冷启动可能远长于流量突增窗口。
9. 发布和回滚¶
LLM 发布至少有四种变化:
- 模型权重或量化版本;
- 推理引擎与 CUDA/驱动组合;
- Prompt、工具定义或安全策略;
- 路由、批处理和并行参数。
推荐流程:
- 用镜像 Digest 和不可变模型 URI 固定制品;
- 离线评估通过后再部署 Shadow 实例;
- 使用固定流量或租户白名单做 Canary;
- 同时比较质量、TTFT、TPOT、吞吐、错误率和成本;
- 回滚必须同时恢复模型、引擎参数、Prompt 和路由配置;
- 不要让 HPA 在 Canary 期间改变样本比例而影响结论。
10. 安全与多租户¶
- 在网关做认证、租户配额、Token Rate Limit 和最大上下文限制。
- 不信任用户输入时,对 Tool Calling 和外部连接设置独立权限边界。
- 模型下载凭据使用短期身份或 Secret,不写入镜像。
- 按租户记录 Token、延迟、模型版本和费用,但避免把敏感 Prompt 放进普通日志。
- LoRA/Adapter 的上传、加载和路由需要审批与大小限制。
- 公网接口设置超时、最大 Body、并发和流式连接上限。
- NetworkPolicy 应限制模型 Pod 仅访问必要对象存储、缓存和观测服务。
11. 生产检查清单¶
- 用真实输入/输出 Token 分布完成基准测试。
- 定义 TTFT、TPOT、P99、可用性和拒绝率 SLO。
- 模型 URI、镜像 Digest、量化和引擎参数全部可追溯。
- 模型冷启动、节点扩容和缓存预热时间已测量。
- 多机副本按整体调度、扩缩和升级。
- 路由器能避开未加载、过载或不健康的实例。
- Autoscaler 使用队列、Token 或延迟信号,而非只看 CPU。
- Canary 同时评估模型质量和基础设施性能。
- 已验证流式连接中断、Pod 驱逐和节点故障。
- 每租户的 Token、并发、模型权限和成本可审计。