LLM Inference Handbook
LLM Inference Handbook 集技术术语表、指南和参考资料于一体。它涵盖了你需要了解的有关 LLM inference 的一切内容:从核心概念和性能指标(例如 Time to First Token 和 Tokens per Second),到优化技术(例如 continuous batching和 prefix caching)、GPU architecture,以及 BYOC和 on-prem等部署模式。
- 提供有关在生产环境中部署、扩展和运维 LLM 的实用指导。
- 通过交互式计算器、模拟器和可视化工具探索相关概念。
- 使用针对具体使用场景定制的优化技术提升性能。
- 持续更新最新的最佳实践和经过实际验证的经验洞见。
动机
我们编写这本手册,是为了解决开发者普遍面临的一个问题:LLM inference 知识往往支离破碎;它们深埋在学术论文中、散落于厂商博客里、隐藏在 GitHub issue 中,或零散地出现在 Discord 讨论串里。更糟糕的是,其中很多内容都默认你已经理解了技术栈的一半。
很少有资源能将这些知识汇集在一起——例如,inference 与 training 有何不同、为了满足 SLO 为什么 goodput 比 raw throughput 更重要,以及 prefill-decode disaggregation在实践中如何运作。
因此,我们开始将这些内容系统地整理到一起。
适用人群
本手册面向在生产环境中部署、扩展或运维 LLM 的工程师,无论你是在 fine-tuning 小型开放模型,还是在自己的技术栈上运行大规模部署。
如果你的目标是让 LLM inference 更快、成本更低或更可靠,那么这本手册正适合你。
使用方式
你可以从头读到尾,也可以把它当作速查表。无论如何浏览都没有错。随着这一领域不断发展,我们会持续更新本手册,因为 LLM inference 的变化非常快,今天有效的方法,明天未必仍是最佳选择。
交互式工具
本手册提供了多种交互式工具,帮助你通过直接尝试相关概念来学习:
- LLM Inference 可视化工具:逐步了解请求生命周期,并观察 Token 如何流经 prefill 和 decode 阶段。
- LLM Lifecycle 可视化工具:了解 training 和 inference 在 model lifecycle 中的位置,以及 inference 如何针对每个请求运行。
- 逐 Token Decode Loop:逐步查看 autoregressive decoding 过程,并观察每个新 Token 如何扩展序列和 KV cache。
- Latency Timeline 可视化工具:了解每个 decode 步骤之后如何进行 detokenization,以及 TTFT、ITL 和 E2EL 各自涵盖哪些阶段。
- Context Window 模拟器:了解完整对话如何在每一轮被重新发送,并逐渐填满 context window。
- Latency Metrics 试验场:探索 TTFT、E2EL、TPOT 和基于 SLO 的 goodput。
- Top-p 与 Top-k Filter:比较两种 filter 如何处理尖峰型、混合型和平坦型分布。
- 模型浏览器:浏览热门开源 LLM,并比较其架构、规模、context window 和典型 GPU 部署方式。
- GPU 对照表:为热门开源 LLM 匹配合适的 NVIDIA 和 AMD GPU。
- GPU Memory 计算器:估算部署 LLM inference 服务所需的 VRAM。
- Quantization Memory Impact 可视化工具:比较不同 quantization format 下的 weight memory 占用。
- Batching Strategy 模拟器:比较 static batching、dynamic batching 和 continuous batching 的行为。
- Chunked Prefill Scheduler:了解完整 prefill 如何阻塞正在进行的 decode,以及 chunked prefill 如何让解码继续执行。
- KV Cache Memory 计算器:估算 KV cache 占用的内存大小。
- GPU Execution and Memory Map:可视化 thread、warp、SM 和 GPU memory hierarchy 之间的关系。
- Warp Divergence 可视化工具:了解 branch 如何将一个 warp 拆分为串行执行的多个 pass,从而使部分 lane 处于空闲状态。
- GPU Memory 浏览器:理解不同的 memory tier,并观察数据移动时 reuse scope 如何变化。
- Memory Coalescing 可视化工具:比较 contiguous、misaligned、strided 和 scattered access,并查看每种访问方式会迫使 GPU 获取多少个 sector。
- Streaming Multiprocessor 浏览器:探索 SM 内部的单元,并查看 H100 中每种单元的数量。
- Warp Scheduler 可视化工具:在 scheduler timeline 上比较 resident warp 过少、充足和额外增加时的情况。
- Kernel Fusion 可视化工具:了解独立 kernel 如何让每个中间结果在 HBM 中往返,以及进行 kernel fusion 后可以节省哪些开销。
贡献
欢迎贡献!如果你发现错误、有改进建议或希望添加新主题,请在我们的 GitHub repository中提交 issue 或 pull request。