中文 EN

系统设计 Lab

LLM inference 是 autoregressive 的:KV cache 每个 token 都在长,主导着 GPU memory,所以 batching 和 memory 布局决定了 throughput。

调整 request rate、prompt 和 output 长度、模型大小、GPU 数,以及 time-to-first-token 目标。切换带 paged attention 的 continuous batching 和 tensor parallelism。设计会从一块 GPU 一次只服务一个 request,演进到带 batching 的 KV cache,再到 continuous batching 加 paged attention,再到为大模型做 tensor-parallel sharding,最后在规模化下做 prefill/decode disaggregation。

分步讲解

一步一步把它想清楚

常规演进场景

从左到右点击,就是预设的演示路径。每张卡片都会改变 workload 输入。

Workload

这些是输入,不是预设好的架构阶段。

推荐形态

当前架构路径
LLM inference serving 架构图 LLM inference 的白板风格架构图:client stream token、一个 inference gateway、一个 continuous-batching scheduler、持有 paged KV cache 的 GPU worker、tensor-parallel 的 model shard,以及一条异步 metrics stream。 Clients Gateway Scheduler GPU workers Model + async Client streams tokens Inference gateway admits + streams Scheduler continuous batching Prefill pool first token GPU worker decode loop Paged KV cache per-token state Model shards tensor parallel Metrics stream async telemetry
Clients
Client 发送一个 prompt,并在生成的 token stream 回来时读取它们
Gateway
Inference gateway 做鉴权、把 request 排队,并通过连接把 token stream 回去
Scheduler
Scheduler 每个 decode step 都 admit 和 retire request,让 GPU 一直忙着
Prefill pool 跑计算量大的 prefill,让长 prompt 不会卡住 decode
GPU workers
GPU worker 为当前 batch autoregressive 地生成 token
Paged KV cache 把 attention 的 key 和 value 存在固定 page 里,避免碎片化
Model + async
Model shards 把每层 split 到多块 GPU 上,让大模型装得下也跑得动
Metrics stream 在热路径之外收集 throughput 和 latency,供 autoscaling 用

瓶颈

KV cache 压力

每 GPU weight 占用(shard 后会下降)

Decode throughput vs 容量

Batch slot 饱和度

Time-to-first-token

为什么会变

    决策权衡

    KV cache 管理

    Continuous batching

    Tensor-parallel sharding

    Prefill/decode split

    GPU autoscaling

    Token streaming

    有出处支撑的规则

    这些是模型背后那些经得起时间考验的 system design 论断。而 slider 的具体阈值,则被刻意标注为教学用的假设。

    已验证的规则

    PagedAttention 把 KV cache 存在固定 page 里,消除碎片化

    借用 OS 虚拟内存的 paging,vLLM 把 KV cache 存在不连续的固定大小块里,削掉碎片化造成的浪费,把 serving throughput 提高 2-4 倍。

    vLLM (PagedAttention)
    已验证的规则

    vLLM 把 continuous batching 和 paged attention 结合起来做高 throughput serving

    文档把 continuous(in-flight)batching 和 PagedAttention 描述为核心机制,让 GPU 在不同长度的 request 之间一直忙着。

    vLLM Docs
    已验证的规则

    TensorRT-LLM 用 tensor 和 pipeline parallelism 把大模型 shard 到多块 GPU 上

    对于太大、一块 GPU 装不下的模型,TensorRT-LLM 把每层切分到多设备上,支持 multi-GPU、multi-node parallelism 以及 disaggregated serving。

    NVIDIA TensorRT-LLM
    已验证的规则

    Triton Inference Server 在生产中调度并 batch inference request

    Triton 记录了 dynamic 和 in-flight batching、调度,以及 multi-backend serving,用于在单个 endpoint 背后大规模运行 LLM inference。

    NVIDIA Triton

    教学用假设

    • 每 GPU memory、token throughput、batching 效率都是针对一块现代数据中心 GPU 的保守教学数字,不是 vendor benchmark。
    • KV cache 大小被近似成与 sequence length 成正比、对模型规模 sub-linear;现代 frontier 模型用 Grouped-Query Attention(GQA/MQA)共享 key/value head,把 KV cache 缩小约 8 倍,这里已经折进系数里了。
    • prefill 被建模成 compute-bound 的 first-token 阶段,decode 被建模成 memory-bound 的 token loop;它们的相对成本随硬件和 kernel 而变。