系统设计 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 输入。
推荐形态
瓶颈
为什么会变
决策权衡
有出处支撑的规则
这些是模型背后那些经得起时间考验的 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 DocsTensorRT-LLM 用 tensor 和 pipeline parallelism 把大模型 shard 到多块 GPU 上
对于太大、一块 GPU 装不下的模型,TensorRT-LLM 把每层切分到多设备上,支持 multi-GPU、multi-node parallelism 以及 disaggregated serving。
NVIDIA TensorRT-LLMTriton 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 而变。