A Hands-On Course
从 nano-vllm 到生产级推理引擎
10 章 · 完整拆解 LLM Serving 核心机制
Why vLLM Matters
vLLM 是当前最主流的开源 LLM serving 框架,通过 PagedAttention 和 Continuous Batching 实现了接近理论极限的 GPU 利用率。
本课程从一个 ~2000 行的最小实现 nano-vllm 出发,逐层映射到生产级 vLLM 代码库,让你真正理解每一个设计决策。
"先看懂 2000 行,再读懂 20 万行。"
— nano-vllm 学习方法论
Chapter 01
LLMEngine 是一切的起点
Chapters 02–03
每个推理请求经历 WAITING → RUNNING → FINISHED 的完整生命周期,调度器在每一步决定谁上 GPU。
不再等一批请求全部完成才开始下一批。新请求随时插入,完成的请求随时退出,GPU 利用率大幅提升。
Prefill 处理完整 prompt(计算密集),Decode 逐 token 生成(内存密集)。调度器需要平衡两种工作负载。
生产 vLLM 将长 prompt 切块,与 decode 请求混合调度,避免长 prompt 独占 GPU 导致其他请求饿死。
Chapter 04 · The Key Innovation
借鉴操作系统虚拟内存的思想
用分页管理 KV Cache,彻底解决显存碎片化
Block-Level Memory
逻辑块 → 物理块的映射表。每个序列维护自己的 block table,物理块可以在序列间共享。
基于 hash 的块级缓存。相同 prompt 前缀的请求可以复用已计算的 KV cache 块,跳过重复计算。
当显存不足时,按 LRU 策略淘汰最久未使用的缓存块。被淘汰的块可以在需要时重新计算。
Chapters 05–06
KV Cache Write(Triton kernel 写入缓存)→ Prefill Attention(FlashAttention 变长批处理)→ Decode Attention(Paged 读取散布的块)
以 Qwen3 为参考:融合 QKV 投影、SwiGLU 激活、RMSNorm + 残差融合、RoPE 位置编码。每一层都有对应的性能优化。
FlashAttention、FlashInfer、Triton — 不同硬件选择不同的 attention 实现,统一接口无缝切换。
Pre-norm Residual Pattern:x + Attn(Norm(x))x + FFN(Norm(x))
— Transformer Decoder Layer
Chapter 07
把模型权重切分到多块 GPU,用 All-Reduce 同步
权重矩阵按列切分,每块 GPU 计算部分输出。QKV 投影、Gate/Up 投影都用列并行。
权重矩阵按行切分,每块 GPU 处理部分输入。Down 投影、O 投影用行并行,输出做 All-Reduce 聚合。
NCCL 通信原语。每层只需一次 All-Reduce,通信开销可控。多节点通过 Ray 扩展。
Chapters 08–09
Decode 阶段每步只处理 1 个 token,kernel launch 开销占比极高。CUDA Graph 将整个计算图录制后重放,消除 launch 延迟。
启动时用 dummy 数据跑一遍,测量 KV cache 可用显存,按 power-of-2 batch size 预录制 CUDA Graph。
Temperature → Top-k → Top-p → 惩罚项(repetition / frequency / presence)→ Gumbel-max 采样。每一步都是可组合的 logits 处理器。
Guided Decoding(结构化输出)、Speculative Decoding(EAGLE / Medusa 草稿模型加速)— 在不牺牲质量的前提下提升吞吐。
Chapter 10 · The Last Mile
控制反转设计 — 框架遍历 safetensors 文件,每个 tensor 调用对应 layer 的 weight_loader 方法,由 layer 自己决定如何切分和放置。
QKV 三个投影矩阵打包成一个 tensor,Gate 和 Up 投影也打包。加载时按 shard 偏移量精确切分到对应位置。
FP8、GPTQ、AWQ、BitsAndBytes — 量化方法通过 Loader 工厂模式注入,对模型代码完全透明。
Safetensors 格式:
零拷贝 mmap 加载
无 pickle 安全风险
支持分片并行读取
— HuggingFace Standard
Full Curriculum
Act I · 基础
Ch.1 Architecture Overview
Ch.2 Sequence & Request State
Act II · 核心
Ch.3 Scheduling & Continuous Batching
Ch.4 KV Cache & Block Management
Ch.5 Attention Mechanism
Act III · 模型
Ch.6 Model Architecture
Ch.7 Tensor Parallelism
Act IV · 运行时
Ch.8 Model Runner & CUDA Graphs
Ch.9 Sampling & Decoding
Ch.10 Weight Loading
Start Learning
从第一行代码开始
理解 LLM 推理引擎的每一个齿轮
github.com/GeeeekExplorer/nano-vllm → github.com/vllm-project/vllm