LLM 推理优化

LLM Inference Optimization

KV Cache、Paged Attention、Flash Attention、Speculative Decoding 和 Continuous Batching 这类技术,让 LLM 在生产环境中变得更快,也更容易扩展。我们逐个学习这些技术。

LLM 中的 KV Cache

在这篇文章里,我们会学习 KV CacheK 代表 KeyV 代表 Value;也会理解它为什么会用在大语言模型(LLM)里,用来加速文本生成。

我们会先看 LLM 如何一次生成一个 token,理解 Key、Value 和 Query 在模型内部的作用;再通过一个例子看看重复计算的问题;最后一步步看 KV Cache 如何通过保存并复用过去的结果来解决这个问题。

阅读这里: LLM 中的 KV Cache

LLM 中的 Paged Attention

在这篇文章里,我们会学习 Paged Attention。这是一种解决 KV Cache 内存浪费问题的技术,可以让 LLM 同时服务多得多的用户。

我们会先快速回顾 KV Cache,理解它带来的内存问题;再通过一个例子看看传统内存分配方式如何浪费空间;最后一步步看 Paged Attention 如何借用计算机管理内存的思路来解决这个问题。

阅读这里: LLM 中的 Paged Attention

解码 LLM 中的 Flash Attention

在这篇文章里,我们会一块一块拆开 Flash Attention 来学习:理解为什么标准注意力很慢,Flash Attention 为什么快,它如何巧妙使用 GPU 内存,以及为什么几乎每个现代大语言模型(LLM)都在使用它。

我们会讲这些内容:

  • 快速回顾标准注意力
  • 为什么标准注意力很慢
  • GPU 内存实际如何工作(HBM vs SRAM)
  • Flash Attention 的核心思路
  • Tiling:把工作拆成小块
  • Online softmax:不构建完整矩阵也能计算 softmax
  • 反向传播(backward pass)中的重计算
  • Flash Attention 2
  • Flash Attention 3
  • Flash Attention 的优势和影响

阅读这里: 解码 LLM 中的 Flash Attention

Grouped Query Attention

在这篇文章里,我们会学习 Grouped-Query Attention(GQA),以及它和 Multi-Head Attention(MHA) 有什么不同。

今天我们会讲下面这些主题:

  • 快速回顾:Multi-Head Attention(MHA)
  • Multi-Head Attention 的问题
  • 什么是 Multi-Query Attention(MQA)?
  • 什么是 Grouped-Query Attention(GQA)?
  • Grouped-Query Attention 如何工作
  • GQA 是 MHA 和 MQA 的泛化
  • GQA vs MHA vs MQA
  • 真实世界用例
  • 关于术语的一点说明
  • Uptraining:从 MHA 转成 GQA
  • 快速总结

阅读这里: Grouped Query Attention

给你一个小提示

无论你在哪个技术领域工作,都应该熟悉这些主题:

  • LLM
  • RAG
  • MCP
  • Agent
  • Fine-tuning
  • Quantization

我们把它们整理进了一个视频:

AI Engineering Explained: LLM, RAG, MCP, Agent, Fine-Tuning, and Quantization

不用现在停下来去看——先收藏,等有时间再看。未来的你会感谢现在的你。

现在,我们回到主题。

Speculative Decoding

在这篇文章里,我们会学习 Speculative Decoding:它是什么,为什么没有它时 LLM 生成会慢,小型草稿模型(draft model)和大型目标模型(target model)如何配合来更快生成 token,能保证质量不下降的拒绝采样(rejection sampling)数学原理,展示 2 倍到 3 倍加速效果的真实数字,它在生产中用在哪里,以及需要注意哪些取舍。

我们会讲这些内容:

  • Speculative Decoding 解决什么问题?
  • 大图景
  • 为什么 LLM 生成很慢?
  • Speculative Decoding 的核心思路
  • 分步骤演示
  • 验证步骤
  • 真实数字与加速效果
  • 用在哪里
  • 取舍
  • 快速总结

阅读这里: Speculative Decoding

LLM 中的 Continuous Batching

在这篇文章里,我们会学习 Continuous Batching。这是一种让 LLM 服务器在生成的每一步都让 GPU 保持忙碌,从而同时处理更多用户的技术。

我们会讲这些内容:

  • 快速回顾:LLM 如何生成 token
  • 为什么 Batching 对 LLM 很重要
  • 旧做法:Static Batching
  • Static Batching 的问题
  • 什么是 Continuous Batching?
  • 拼车类比
  • Continuous Batching 如何一步步工作
  • 一个数字例子
  • 真实数字与加速效果
  • Continuous Batching 的好处
  • 几点重要说明
  • 快速总结

阅读这里: LLM 中的 Continuous Batching

Prompt Caching

在这篇文章里,我们会学习 Prompt Caching 是怎么工作的。我们还会看到为什么需要它、它在大语言模型内部到底怎么运作,以及它在 AI 助手和 agent 这类真实系统里会用在哪里。

我们会讲这些内容:

  • 什么是 prompt
  • 简单回顾一下 LLM 如何读取 prompt
  • 什么是 Prompt Caching
  • 为什么需要 Prompt Caching
  • Prompt Caching 的核心思路
  • 精确前缀规则
  • cache write、cache read 和 TTL
  • 应该把什么放进缓存
  • Prompt Caching 的好处
  • 真实世界里的 Prompt Caching

阅读这里: Prompt Caching 是怎么工作的?

vLLM 是怎么工作的?

在这篇文章里,我们会学习 vLLM 是怎么工作的。我们还会看到为什么需要它、它如何如此巧妙地管理内存,以及它在真实世界里如何用于向很多用户服务大语言模型。

我们会讲这些内容:

  • 什么是服务一个 LLM
  • 快速回顾 prefill、decode 和 KV cache
  • 问题:KV cache 吃掉 GPU 内存
  • 为什么朴素服务方式会浪费内存
  • 什么是 vLLM
  • PagedAttention,核心思路
  • PagedAttention 如何共享内存
  • Continuous Batching
  • OpenAI 兼容 API 服务器
  • vLLM 的好处
  • 真实世界里的 vLLM

阅读这里: vLLM 是怎么工作的?

SGLang 是怎么工作的?

在这篇文章里,我们会学习 SGLang 是怎么工作的。我们还会看到它解决什么问题、它如何让大语言模型服务更快,以及哪些巧妙思路让它显得特别。

我们会讲这些内容:

  • 什么是 SGLang
  • RadixAttention:SGLang 的核心
  • RadixAttention 如何复用过去的工作
  • SGLang 的前端语言
  • SGLang 中的 Continuous Batching
  • 结构化输出和更快解码
  • SGLang 更强大的功能
  • SGLang 和 vLLM 的对比

阅读这里: SGLang 是怎么工作的?

准备 AI 工程面试可以看这里:AI Engineering Interview Questions

这次就到这里。

谢谢

Amit Shekhar Outcome School 创始人