llm-wiki wiki · analysis 2026-06-09

这页把当前知识库里的 LLM 推理与 serving 相关材料横向整理。核心结论:LLM serving 已经从“单机推理引擎优化”演进成多层系统工程:KV cache 管理、batch 调度、P/D 分离、KV-aware routing、多级 offload、SLA 扩缩、GPU 资源调度和多云控制面都在同一条链路上。

Client API / OpenAI-compatible protocol
        ↓
serving frontend: HTTP/SSE/gRPC, tokenizer, request validation
        ↓
scheduler: continuous batching, prefill/decode, admission, chunking
        ↓
KV cache manager: paged blocks / radix tree / offload tiers
        ↓
GPU execution: attention backend, CUDA graph, speculative decoding
        ↓
cluster orchestration: P/D pools, routing, KV transfer, autoscaling
        ↓
infrastructure control plane: Kubernetes, GPU sharing, multi-cloud, observability
        ↓
peripheral control planes: batch jobs, benchmark, simulator, variant autoscaling

一句话分层

项目 / 概念 一句话定位 抽象层
vllm LLM serving 的事实基线,paged-attention 把 KV cache 按 block 管理 单机推理引擎
sglang 高性能推理引擎,radix-attention token 级 KV 复用 + 4 进程流水线 + speculative decoding 单机/多实例推理引擎
dynamo NVIDIA 数据中心级 LLM 推理编排层,把 vLLM/SGLang/TRT-LLM 组成协调集群 多节点 serving 编排
llm-d CNCF Sandbox 分布式 LLM inference serving stack,围绕 Router/EPP、InferencePool、KV/P-D/autoscaling 组织 K8s serving control plane
llm-d-batch-gateway OpenAI Batch API / 离线推理控制面,把 batch job/file/queue/output 接到下游 llm-d Router/model endpoint Batch serving control plane
llm-d-benchmark llm-d 实验编排器,把 scenario/spec、K8s lifecycle、harness 和 result workspace 串起来 Benchmark lifecycle
llm-d-workload-variant-autoscaler 同一模型多个 serving variant 的全局 autoscaling 决策层,经 Prometheus/HPA/KEDA 执行扩缩 Variant autoscaling
llm-d-inference-sim 无 GPU vLLM 行为模拟器,用 OpenAI/vLLM API、KV events、latency/failure/metrics 验证控制面 Simulator / test double
SkyPilot AI/ML 多云算力控制平面,负责跨云/K8s/Slurm 选择资源、failover、managed jobs/serve 算力控制平面
K8s GPU stack device plugin / GPU Operator / DRA / CDI / DCGM / GPU sharing GPU 资源基础设施

横向对比

维度 vllm sglang dynamo SkyPilot K8s GPU stack
主问题 单机/单服务高吞吐推理 极致推理执行和 KV 复用 多 GPU/多节点协调 serving 跨云/集群算力选择和作业控制 GPU 设备暴露、共享、观测
核心抽象 Paged KV block table RadixCache + Scheduler pipeline Request/control/event planes + KVBM Task/Dag/Resources + Optimizer DevicePlugin/DRA/CDI/Operator
KV 粒度 16-token block token-level radix tree SequenceHash + G1-G4 cache tiers 不直接管理 KV 不直接管理 KV,但影响显存资源
调度 continuous batching 4 进程 pipeline + Scheduler mixins KV-aware router + P/D pool + Planner Optimizer 选 cloud/region/instance kube-scheduler/device allocation
P/D 分离 实验/生态扩展中 多 backend 支持 默认核心架构 可部署 serving 集群 提供底层 GPU 资源
扩缩 通常交给外部平台 外部平台或自建 Planner + K8s Operator Managed jobs / serve / pools HPA/Kueue/GPU operator 等
容错 引擎级错误处理 引擎级错误处理 RetryManager 迁移在飞请求 provisioning failover 节点/设备健康与重调度
强项 生态最大、基线稳 KV 复用和执行路径激进 集群协调、KV-aware、SLA 多云和资源经济 生产 GPU 集群底座
代价 block 级复用有碎片 复杂度高、特性组合约束多 系统栈重、组件多 不优化内核推理路径 只管资源,不管模型执行

架构交叉矩阵

交叉模式 采用项目 工程含义
KV cache 显式管理 vllm, sglang, dynamo KV cache 是 serving 吞吐和显存效率的核心资源,不再是模型内部细节
前缀复用 vllm, sglang, dynamo system prompt、few-shot、agent template 可共享,路由/调度要感知 prefix
Prefill/Decode 分离 sglang, dynamo, disaggregated-serving prefill 计算密集,decode 内存带宽密集,独立扩缩能提高资源利用
多级 KV offload dynamo, kv-cache-offload GPU 显存不够时,把 KV 分层到 CPU/NVMe/Object store
Speculative decoding sglang, vllm 用 draft/target 或 ngram 等方法降低 decode latency
K8s 控制面 dynamo, SkyPilot, K8s GPU stack serving 从进程问题变成 CRD/operator/scheduler 问题
Batch / benchmark / simulator llm-d-batch-gateway, llm-d-benchmark, llm-d-inference-sim serving 选型需要异步任务、可复现实验和低成本控制面替身
Variant autoscaling llm-d-workload-variant-autoscaler 同一模型的多硬件/多角色/多成本 variant 需要全局 allocation,而不是单 Deployment 指标
资源经济 SkyPilot, dynamo Planner, K8s GPU stack 不只是跑得快,还要按 SLA、成本和容量调度

核心设计轴

1. KV cache:从内存优化到系统接口

LLM serving 的很多架构分歧都来自 KV cache:

结论:KV cache 已经从“GPU 内部 buffer”变成 serving 系统的一等资源。后续的路由、扩缩、迁移、offload、GPU sharing 都需要知道 KV 的存在。

2. 单机引擎和集群编排是两层问题

vllm / sglang 解决的是“一个实例怎么高效执行请求”;dynamo 解决的是“一组实例怎么协调”。

single engine:
  tokenizer → scheduler → model runner → KV cache → attention backend

cluster serving:
  frontend → route → prefill/decode worker pools → KV transfer → autoscale → recover

把这两层混淆会导致选型误判。vLLM/SGLang 的强项是内核执行与 batching;Dynamo 的强项是多节点协调、KV-aware routing、P/D disaggregation 和 SLA planner。SkyPilot 再往上,解决集群/云在哪里、怎么拉起、失败怎么换区/换云。

3. P/D 分离改变了 GPU 池形态

Prefill 和 decode 的资源特征不同:

disaggregated-serving 把两者拆开后,系统需要额外解决:

dynamo 把 P/D 分离做成默认集群架构;sglang 提供 Mooncake/NIXL/Mori/Ascend 等 KV transfer backend;vllm 仍更多是基线引擎和生态底座。

4. 路由不再只是负载均衡

传统 HTTP 负载均衡按连接数、延迟或权重分发。LLM serving 的路由还要考虑:

dynamo 的 KV-aware router 用 cost function 同时计算 prefix overlap credit 和 worker 负载,softmax 采样而不是绝对 argmin。这说明 serving router 的目标不是“最大化 cache hit”,而是在 cache hit、queue load、tail latency 之间做平衡。

5. GPU 资源层正在变成 serving 架构的一部分

K8s GPU 资源层不再只是 “NVIDIA device plugin 把 /dev/nvidia0 暴露给 Pod”。

当前材料已经显示出完整栈:

当 serving 系统进入 P/D 分离、多级 KV、GPU sharing 后,K8s 的设备 API、DRA/CDI、GPU health 和调度策略会直接影响模型服务设计。

项目工程剖面

vllm:事实基线和 PagedAttention

vllm 的最大价值是把 KV cache 管理变成一个系统问题。PagedAttention 的 block table 让显存按需分配,替代按最大序列长度预留。这是 LLM serving 的转折点。

适合借鉴的点:

主要局限:

sglang:执行路径极致模块化

sglang 的工程特点是把推理执行的差异化轴都做成可插拔路径:

它的核心收益是性能和灵活性;代价是特性组合约束复杂,例如 speculative、chunked prefill、disagg 之间存在互斥/兼容边界。对于工程研究,它是理解现代推理引擎内部结构的最好材料之一。

dynamo:数据中心级 serving 编排

dynamo 把 serving 从单实例推进到集群系统:

HTTP frontend
        ↓
preprocess / migration
        ↓
KV-aware routing
        ↓
prefill/decode worker pools
        ↓
KVBM G1-G4
        ↓
NATS JetStream KV events
        ↓
Planner + K8s Operator

它的工程难点集中在三平面解耦:

它的独特价值不是替代 vLLM/SGLang,而是把它们当 backend,补上多节点路由、KV transfer、请求迁移、SLA 扩缩和拓扑感知部署。

SkyPilot:算力控制面而不是 serving engine

SkyPilot 不优化 attention kernel,也不管理 KV cache。它解决的是:在 Kubernetes、Slurm、公有云、on-prem 之间怎么选择资源、启动集群、failover、运行 managed jobs / serve。

它在 serving 地图里的位置更高:

YAML / SDK intent
        ↓
API server request queue
        ↓
Optimizer
        ↓
CloudVmRayBackend / provider
        ↓
cluster / managed job / serve

对 LLM serving 来说,SkyPilot 适合承接“服务应该部署在哪、容量不足如何换 region/cloud、成本如何比较”的问题。它不替代 Dynamo/SGLang/vLLM,而是它们上方的资源选择和执行控制面。

K8s GPU stack:设备层正在上移

K8s GPU & Device Plugins star list 已经足够说明:GPU 资源层正在从 device plugin 扩展为完整平台。

关键分层:

对于 serving 系统,这层决定了 GPU 能不能细粒度共享、能不能按拓扑调度、能不能自动诊断、能不能把 KV cache/显存压力暴露给调度器。

核心难点

1. 吞吐和延迟不是同一个优化目标

Continuous batching 提高吞吐,但可能增加单请求排队延迟;speculative decoding 降低 decode latency,但引入 draft model 和验证开销;P/D 分离提高资源利用,但多一次 KV transfer。Serving 系统必须按 workload profile 调优,而不是追求单一指标。

2. KV 复用和负载均衡天然冲突

把请求发给已有 prefix KV 的 worker 能省 prefill,但那个 worker 可能很忙。把请求发给空闲 worker 延迟可能更低,但要重新 prefill。dynamo 的 cost-based softmax 正是在处理这个冲突。

3. P/D 分离引入状态转移问题

Prefill 输出的 KV 必须被 decode 节点可见。这个过程涉及 RDMA/NIXL/Mooncake/Mori/Ascend 等 transfer backend,也涉及失败恢复:worker 挂掉后请求是否可迁移,guided decoding/n>1 这种状态机是否可复制。

4. 多级 KV offload 是缓存系统,不是简单 swap

把 KV 从 GPU 放到 CPU/NVMe/S3,需要回答:

dynamo 的 KVBM 把它做成 G1-G4 tier + LRU/TinyLFU + SequenceHash,这说明 offload 已经是缓存系统设计。

5. GPU 资源调度和模型调度开始交叉

GPU sharing、MIG/vGPU、DRA/CDI、KV cache offload、P/D 分离都会改变“一个 Pod 需要几张 GPU”的简单假设。Serving control plane 需要更懂 GPU 拓扑、NVLink、NUMA、显存压力、KV cache 热度。

6. 可观测必须覆盖 token、KV、队列和 GPU

普通 HTTP latency 不够。现代 LLM serving 至少要观测:

设计分型

分型 代表 核心问题
单机基线引擎 vllm 高吞吐 serving、PagedAttention、生态兼容
高性能执行引擎 sglang token-level KV、pipeline、spec decode、P/D backend
数据中心编排层 dynamo 多节点 routing、KV offload、SLA autoscale、K8s operator
K8s serving control plane llm-daibrixkserve Gateway API / InferencePool、Operator、Endpoint picking、autoscaling
算力控制面 SkyPilot 多云/K8s/Slurm 资源选择、failover、managed jobs/serve
GPU 资源层 K8s GPU stack device plugin、DRA、GPU sharing、observability

选型建议

目标 优先看 工程关注点
需要最稳的开源 serving baseline vllm PagedAttention、模型兼容、OpenAI API
研究现代推理引擎内部优化 sglang RadixAttention、Scheduler、spec decoding、P/D transfer
构建多节点高 SLA serving 集群 dynamo KV-aware routing、KVBM、Planner、K8s operator
构建 Kubernetes-native inference control plane llm-d / aibrix / kserve Gateway API、InferencePool、Operator、autoscaling、batch/benchmark 配套
跨云/跨集群管理 AI workload SkyPilot optimizer、failover、managed jobs、serve
建生产 GPU Kubernetes 底座 k8s-gpu-device-stack device plugin、GPU Operator、DRA/CDI、DCGM/GPUd

下一批候选

详见 llm-d-kubernetes-sigs-candidate-map。当前 llm-d P0 外围能力已经补齐,下一步最值得做的是把这些能力连接到 Kubernetes 调度、队列和 metrics 生态:

当前知识库缺口