---
title: SGLang 与 vLLM Excalidraw 教程
jupyter: python3
---


更新时间：2026-05-25

本目录包含 7 张标准 `.excalidraw` 图：

1. `00_overview_sglang_vllm_2026.excalidraw`：学习路线总览
2. `01_sglang_core_mechanisms.excalidraw`：SGLang 核心机制
3. `02_sglang_frontier_features_2026q2.excalidraw`：SGLang 前沿 feature 更新
4. `03_sglang_interview_questions.excalidraw`：SGLang 面试常考题
5. `04_vllm_core_mechanisms.excalidraw`：vLLM 核心机制
6. `05_vllm_frontier_features_2026q2.excalidraw`：vLLM 前沿 feature 更新
7. `06_vllm_interview_questions.excalidraw`：vLLM 面试常考题

主要资料源：

- SGLang docs: https://docs.sglang.io/
- SGLang release notes: https://github.com/sgl-project/sglang/releases
- SGLang Q2 roadmap: https://github.com/sgl-project/sglang/issues/22949
- NVIDIA SGLang overview: https://docs.nvidia.com/deeplearning/frameworks/sglang-release-notes/overview.html
- vLLM docs: https://docs.vllm.ai/
- vLLM release notes: https://github.com/vllm-project/vllm/releases
- vLLM V1 guide: https://docs.vllm.ai/en/stable/usage/v1_guide/
- vLLM hybrid SSM disaggregation blog: https://vllm.ai/blog/2026-04-21-hybrid-ssm-disagg

## 练习题

1. 画出一次请求从 HTTP/gRPC 入口到 scheduler、KV cache、decode worker、返回 token 的完整路径，并标出 TTFT、TPOT、queueing latency 分别在哪里产生。
2. 对 SGLang：设计一个 RadixAttention prefix cache 命中实验，分别构造完全命中、部分命中和完全未命中的 prompt 集合。
3. 对 vLLM：手算 3 个不同长度序列在 PagedAttention block table 中的分配和释放过程，说明它如何降低 KV cache 碎片。
4. 对比 prefill/decode disaggregation、chunked prefill、continuous batching 三个机制：分别写出它们优化的瓶颈和可能带来的副作用。

## 面试题

1. SGLang 的 RadixAttention 与普通 prefix cache 的核心差异是什么，为什么适合多轮和结构化请求？
2. vLLM 的 PagedAttention 为什么能提升显存利用率，它和 OS virtual memory 的类比在哪里成立、在哪里不成立？
3. 服务端 LLM runtime 中，scheduler 需要同时平衡哪些目标：吞吐、尾延迟、公平性、显存和 cache 命中率如何取舍？
4. 如果线上 decode TPOT 突然恶化，你会按哪些证据顺序排查：队列、KV cache、GPU kernel、通信、batch shape 还是模型配置？

## 图示

```{=html}
<!-- xboard:00_overview_sglang_vllm_2026.excalidraw -->
<div class="xboard"><div class="xb-h1" style="--tc:#1e40af" data-a="c">SGLang 与 vLLM 推理框架教程总览</div><div class="xb-t" data-a="c">目标：核心机制 + 面试高频题 + 2026-05-25 前沿功能更新</div><div class="xb-row"><div class="xb-box" style="--bc:#64748b;flex-grow:50" data-d="1"><div class="xb-h1" style="--tc:#1e40af" data-a="c">SGLang 教程</div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">定位<br>结构化生成语言 + 高性能 runtime<br>适合 agentic / RAG / 多轮共享前缀</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">核心机制<br>RadixAttention 前缀树<br>连续批处理 + cache-aware scheduling<br>结构化输出与工具调用</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">前沿重点<br>Spec V2 overlap / DFLASH / adaptive spec<br>PD disaggregation / decode-side radix cache<br>CP/EP/MoE/FA3/FA4/Omni/RL</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">面试抓手<br>解释 prefix reuse 为什么能降 TTFT<br>区分 prefill compute-bound 与 decode memory-bound<br>会从指标定位瓶颈</div></div></div></div><div class="xb-box" style="--bc:#64748b;flex-grow:50" data-d="1"><div class="xb-h1" style="--tc:#1e40af" data-a="c">vLLM 教程</div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">定位<br>生产级 LLM serving engine<br>OpenAI API / offline batch / 多硬件生态</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">核心机制<br>PagedAttention KV block table<br>V1 unified scheduler<br>chunked prefill + prefix cache</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">前沿重点<br>v0.21 KV offload + HMA<br>thinking budget spec decode<br>Blackwell TOKENSPEED_MLA<br>NIXL / Mooncake / disagg serving</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#2563eb;flex-grow:100" data-d="2"><div class="xb-t" data-a="c">面试抓手<br>讲清 logical block 到 physical block 映射<br>讲清 scheduler 如何平衡 TTFT 与吞吐<br>会调 max tokens / KV dtype / cache hit</div></div></div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-h2" style="--tc:#374151" data-a="c">共同底层问题<br>请求调度<br>KV cache<br>prefill/decode 分离<br>speculative decoding<br>并行与通信<br>观测指标</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-t" data-a="c">学习顺序<br>1 基础推理链路<br>2 KV cache 与调度<br>3 高级特性<br>4 前沿 release<br>5 面试题反推系统设计</div></div></div></div>
<!-- /xboard -->
```
<p class="caption">学习路线总览 · <a href="00_overview_sglang_vllm_2026.excalidraw">Excalidraw 源文件</a></p>

```{=html}
<!-- xboard:01_sglang_core_mechanisms.excalidraw -->
<div class="xboard"><div class="xb-h1" style="--tc:#1e40af" data-a="c">SGLang 核心机制：从结构化程序到 RadixAttention</div><div class="xb-t" data-a="c">面试主线：SGLang 的价值不是只跑模型，而是让复杂 LLM 程序自动复用 KV cache</div><div class="xb-row xb-flow n7"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">客户端<br>OpenAI API<br>或 sgl 程序</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">前端语言<br>prompt + gen<br>控制流 + 工具</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">调度器<br>waiting/running<br>cache-aware</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">RadixCache<br>前缀树匹配<br>LRU eviction</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">Runtime<br>batch + memory pool<br>CUDA graph</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">Model Runner<br>attention backend<br>MoE / quant</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">输出<br>stream tokens<br>structured JSON</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#475569;flex-grow:16" data-d="1"><div class="xb-h1" style="--tc:#1e40af" data-a="c">RadixAttention 前缀树示意</div><div class="xb-t" data-a="c">root</div></div><div class="xb-box" style="--bc:#334155;flex-grow:42" data-d="1"><div class="xb-h1" style="--tc:#1e40af" data-a="c">Runtime 为什么快</div><div class="xb-t" data-a="c">连续批处理<br>每轮 forward 接纳新请求<br>减少 GPU 空转</div></div><div class="xb-box" style="--bc:#334155;flex-grow:42" data-d="1"><div class="xb-t" data-a="c">结构化输出<br>约束解码 / FSM<br>减少无效 token 路径</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#0f766e;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">system prompt<br>few-shot examples</div></div><div class="xb-box" style="--bc:#334155;flex-grow:34" data-d="1"><div class="xb-t" data-a="c">Speculative decoding<br>EAGLE / MTP / NGRAM / DFLASH<br>用 draft 降低 target 调用次数</div></div><div class="xb-box" style="--bc:#334155;flex-grow:34" data-d="1"><div class="xb-t" data-a="c">并行策略<br>TP / PP / DP / EP / CP<br>MoE all-to-all 与长上下文拆分</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">用户 A 新增 token<br>只算增量 KV</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">用户 B 新增 token<br>共享同一 prefix</div></div><div class="xb-box" style="--bc:#334155;flex-grow:37" data-d="1"><div class="xb-t" data-a="c">多后端 kernel<br>FA3 / FA4 / TRTLLM / FlashInfer<br>按 prefill/decode 选择</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:50" data-d="1"><div class="xb-t" data-a="c">关键点<br>相同 token prefix 对应同一段 KV<br>命中时跳过重复 prefill<br>缓存满时倾向淘汰无引用的叶子</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:50" data-d="1"><div class="xb-h2" style="--tc:#374151" data-a="c">面试一句话<br>SGLang = 可编程前端 + cache-aware runtime。<br>核心是把复杂多轮程序拆成可复用 prefix，<br>再用调度器和 GPU kernel 把命中变成吞吐。</div></div></div></div>
<!-- /xboard -->
```
<p class="caption">SGLang 核心机制 · <a href="01_sglang_core_mechanisms.excalidraw">Excalidraw 源文件</a></p>

```{=html}
<!-- xboard:02_sglang_frontier_features_2026q2.excalidraw -->
<div class="xboard"><div class="xb-h1" style="--tc:#1e40af" data-a="c">SGLang 前沿更新：2026 Q2 功能地图</div><div class="xb-t" data-a="c">资料基于官方文档、GitHub release v0.5.11 与 2026 Q2 roadmap</div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">基础栈</div></div><div class="xb-box" style="--bc:#334155;flex-grow:83" data-d="1"><div class="xb-t" data-a="c">最新 feature 不只是新模型，而是围绕大规模 serving 的五条线：KV、调度、并行、kernel、观测</div><div class="xb-t" data-a="c">CUDA 13 + Torch 2.11<br>Docker / wheel 构建矩阵更新<br>多硬件：NVIDIA / AMD / TPU / CPU / XPU / NPU</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">Attention / Kernel</div></div><div class="xb-box" style="--bc:#334155;flex-grow:83" data-d="1"><div class="xb-t" data-a="c">FA3 community kernels<br>FA4 与 TRTLLM MLA 混合 backend<br>DSA sparse attention 与 hybrid attention</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">Spec decode</div></div><div class="xb-box" style="--bc:#334155;flex-grow:83" data-d="1"><div class="xb-t" data-a="c">Spec V2 overlap scheduler<br>DFLASH 初始支持与 ROCm<br>adaptive speculative_num_steps<br>piecewise CUDA graph 兼容</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">KV / PD disagg</div></div><div class="xb-box" style="--bc:#334155;flex-grow:83" data-d="1"><div class="xb-t" data-a="c">decode-side radix cache<br>Mooncake incremental transfer<br>NIXL heterogeneous TP KV transfer<br>Mamba state slice transfer</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">Parallel / MoE / LoRA</div></div><div class="xb-box" style="--bc:#334155;flex-grow:83" data-d="1"><div class="xb-t" data-a="c">CP all-reduce fusion<br>DP attention reduce_scatterv<br>DeepSeek-V3 / Kimi-K2 LoRA<br>FlashInfer CuteDSL FP4 MoE runner</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">Diffusion / Omni / RL</div></div><div class="xb-box" style="--bc:#334155;flex-grow:83" data-d="1"><div class="xb-t" data-a="c">SGLang-Diffusion dynamic batching<br>Disaggregated diffusion<br>Omni audio / multi-stage runtime<br>Miles / verl / slime rollout backend</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">Observability</div></div><div class="xb-box" style="--bc:#334155;flex-grow:83" data-d="1"><div class="xb-t" data-a="c">OpenTelemetry for spec decode / PP<br>Prometheus gRPC metrics<br>raw KV token gauges<br>pending token count in load</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-t" data-a="c">面试表达方式<br>不要只背 release 名称。回答时按瓶颈归类：<br>TTFT 高 -&gt; prefix / chunked prefill / PD<br>TPOT 高 -&gt; decode kernel / KV bandwidth / spec accept<br>P99 高 -&gt; scheduler / LoRA drain / disagg transfer / observability</div></div></div></div>
<!-- /xboard -->
```
<p class="caption">SGLang 前沿 feature 更新 · <a href="02_sglang_frontier_features_2026q2.excalidraw">Excalidraw 源文件</a></p>

```{=html}
<!-- xboard:03_sglang_interview_questions.excalidraw -->
<div class="xboard"><div class="xb-h1" style="--tc:#1e40af" data-a="c">SGLang 面试常考问题速查</div><div class="xb-t" data-a="c">问法通常围绕：RadixAttention、调度、结构化输出、spec decode、PD disagg、MoE 并行</div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>RadixAttention 解决什么</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>重复 prompt 的 KV 不重算<br>用前缀树记录共享 token 序列</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>和 PagedAttention 区别</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>SGLang 强调 trie prefix reuse<br>vLLM 强调 block table 内存分页</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>prefill 与 decode 瓶颈</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>prefill 更 compute-bound<br>decode 更 KV bandwidth / memory-bound</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>continuous batching</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>每轮 forward 动态加入和移出请求<br>提升 GPU 利用率</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>结构化输出怎么加速</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>约束候选 token<br>FSM / grammar 降低非法路径</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>spec decode 原理</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>draft 先猜多个 token<br>target 一次验证并接受前缀</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>PD disaggregation</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>prefill 节点算 KV<br>decode 节点拉取 KV 继续生成</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>MoE 并行怎么讲</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>EP 负责 expert 分布<br>all-to-all 和负载均衡决定尾延迟</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>关键线上指标</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>TTFT / TPOT / throughput<br>cache hit / KV usage / P99</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>常见坑</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>tokenizer 不一致导致 cache miss<br>backend 不匹配导致 kernel 退化</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-t" data-a="c">答题模板<br>先说系统瓶颈，再说数据结构，再说调度策略，最后落到指标：<br>例如 RadixAttention = KV cache prefix tree + cache-aware scheduling + TTFT/cache-hit 观测。</div></div></div></div>
<!-- /xboard -->
```
<p class="caption">SGLang 面试常考题 · <a href="03_sglang_interview_questions.excalidraw">Excalidraw 源文件</a></p>

```{=html}
<!-- xboard:04_vllm_core_mechanisms.excalidraw -->
<div class="xboard"><div class="xb-h1" style="--tc:#1e40af" data-a="c">vLLM 核心机制：PagedAttention 与 V1 引擎</div><div class="xb-t" data-a="c">面试主线：vLLM 用分页式 KV 管理和统一调度把 GPU batch 做大、做满、做稳</div><div class="xb-row xb-flow n7"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">OpenAI API<br>Offline LLM</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">Processor<br>chat template<br>tokenizer</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">EngineCore<br>request queue<br>output processor</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">V1 Scheduler<br>统一 token budget<br>FCFS / priority</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">KV Manager<br>BlockPool<br>hash APC</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">Model Runner V2<br>CUDA graph<br>attention backend</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:14" data-d="1"><div class="xb-t" data-a="c">Sampler<br>stream response<br>metrics</div></div></div><div class="xb-h2" style="--tc:#1e40af" data-a="c">V1 scheduler 循环</div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:20" data-d="1"><div class="xb-t" data-a="c">Request A<br>logical blocks<br>0  1  2</div></div><div class="xb-box" style="--bc:#b45309;flex-grow:20" data-d="1"><div class="xb-h2" style="--tc:#1e40af" data-a="c">PagedAttention：logical block 到 physical block</div><div class="xb-t" data-a="c">Block table<br>0 -&gt; p7<br>1 -&gt; p2<br>2 -&gt; p9</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:22" data-d="1"><div class="xb-t" data-a="c">GPU physical KV<br>p2 p7 p9 p13<br>可非连续分配</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:17" data-d="1"><div class="xb-t" data-a="c">等待队列<br>新请求</div></div><div class="xb-box" style="--bc:#b45309;flex-grow:21" data-d="1"><div class="xb-t" data-a="c">分配 token budget<br>prompt 与 output 统一</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#0f766e;flex-grow:61" data-d="1"><div class="xb-t" data-a="c">Automatic Prefix Caching<br>hash(prefix tokens + block tokens) -&gt; KV Block<br>共享 block 通过 ref count 管理</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">释放 / 命中 / 驱逐<br>KV block</div></div><div class="xb-box" style="--bc:#6d28d9;flex-grow:21" data-d="1"><div class="xb-t" data-a="c">一次 forward<br>chunked prefill + decode</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-t" data-a="c">关键点<br>V1 把 prompt token 与 output token 放进同一预算模型，<br>因此 chunked prefill、prefix cache、spec decode 能在同一调度循环里协作。</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-h2" style="--tc:#374151" data-a="c">面试一句话<br>vLLM = PagedAttention 内存管理 + iteration-level scheduling。<br>它把 KV cache 从连续大块变成可共享、可驱逐、可分页的 block。</div></div></div></div>
<!-- /xboard -->
```
<p class="caption">vLLM 核心机制 · <a href="04_vllm_core_mechanisms.excalidraw">Excalidraw 源文件</a></p>

```{=html}
<!-- xboard:05_vllm_frontier_features_2026q2.excalidraw -->
<div class="xboard"><div class="xb-h1" style="--tc:#1e40af" data-a="c">vLLM 前沿更新：v0.21 与 2026 大规模 serving</div><div class="xb-t" data-a="c">资料基于 GitHub v0.21.0 release、vLLM V1 文档与 2026-04 hybrid SSM disagg 博客</div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Breaking / 基础栈</div></div><div class="xb-box" style="--bc:#334155;flex-grow:82" data-d="1"><div class="xb-t" data-a="c">前沿方向：KV offload、disagg、hybrid models、Blackwell kernels、reasoning/spec decode、Responses API</div><div class="xb-t" data-a="c">Transformers v4 deprecated<br>C++20 build requirement<br>CUDA 13 与 Torch 2.11 生态迁移</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">KV Offload + HMA</div></div><div class="xb-box" style="--bc:#334155;flex-grow:82" data-d="1"><div class="xb-t" data-a="c">Hybrid Memory Allocator 集成<br>scheduler-side sliding window groups<br>multi-connector HMA / MooncakeStoreConnector<br>DCP / PCP in OffloadingConnector</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Spec decode</div></div><div class="xb-box" style="--bc:#334155;flex-grow:82" data-d="1"><div class="xb-t" data-a="c">thinking budget support<br>independent drafter attention backend<br>multimodal support guard<br>per-step allocation elimination</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Model Runner V2</div></div><div class="xb-box" style="--bc:#334155;flex-grow:82" data-d="1"><div class="xb-t" data-a="c">Qwen3.5 / Mamba hybrid support<br>CUDA graph for ViT / EAGLE prefill<br>metadata rebuild 优化<br>RayExecutorV2 default</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Kernel / Hardware</div></div><div class="xb-box" style="--bc:#334155;flex-grow:82" data-d="1"><div class="xb-t" data-a="c">Blackwell TOKENSPEED_MLA<br>FlashInfer sampler default<br>FA4 default MLA prefill from v0.20<br>TurboQuant 2-bit KV cache<br>NVFP4 KV cache</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Disaggregated serving</div></div><div class="xb-box" style="--bc:#334155;flex-grow:82" data-d="1"><div class="xb-t" data-a="c">bi-directional KV transfer P &lt;-&gt; D<br>NIXL transfer redesign and 1.x<br>Mooncake transfer observability<br>hybrid SSM-FA disagg available in v0.20+</div></div></div><div class="xb-row xb-flow n2"><div class="xb-box" style="--bc:#334155;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">API / Frontend</div></div><div class="xb-box" style="--bc:#334155;flex-grow:82" data-d="1"><div class="xb-t" data-a="c">Responses API streaming tool calling<br>strict tool calling with XGrammar 0.2<br>Fastokens tokenizer path<br>RLHF weight update APIs</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-t" data-a="c">面试表达方式<br>vLLM 的新 feature 大多围绕两个生产痛点：<br>1 KV cache 太贵：offload / quant / APC / disagg<br>2 复杂模型变多：Mamba hybrid / multimodal / reasoning / tool calling</div></div></div></div>
<!-- /xboard -->
```
<p class="caption">vLLM 前沿 feature 更新 · <a href="05_vllm_frontier_features_2026q2.excalidraw">Excalidraw 源文件</a></p>

```{=html}
<!-- xboard:06_vllm_interview_questions.excalidraw -->
<div class="xboard"><div class="xb-h1" style="--tc:#1e40af" data-a="c">vLLM 面试常考问题速查</div><div class="xb-t" data-a="c">问法通常围绕：PagedAttention、continuous batching、APC、V1 scheduler、chunked prefill、disagg</div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>PagedAttention 解决什么</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>KV cache 分成固定 block<br>逻辑 block 映射到非连续物理 block</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>为什么能提升 batch</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>减少碎片与预分配浪费<br>同显存容纳更多并发请求</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>APC 怎么做</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>hash(prefix + block tokens)<br>共享物理 KV block</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>和 RadixAttention 区别</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>vLLM 使用 hash block cache<br>SGLang 使用前缀树组织共享</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>V1 scheduler 核心</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>prompt 与 output 统一 token budget<br>支持 FCFS / priority</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>chunked prefill</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>长 prompt 分块进入调度<br>避免 decode 被长 prefill 饿死</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>spec decode</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>drafter 生成候选<br>target 验证接受前缀</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>PD disaggregation</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>prefill worker 产 KV<br>decode worker 通过 NIXL / Mooncake 拉 KV</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>线上怎么调</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>max_num_batched_tokens<br>max_num_seqs / gpu_memory_utilization<br>kv_cache_dtype / prefix hit</div></div><div class="xb-box" style="--bc:#1d4ed8;flex-grow:18" data-d="1"><div class="xb-t" data-a="c">Q<br>如何看瓶颈</div></div><div class="xb-box" style="--bc:#15803d;flex-grow:32" data-d="1"><div class="xb-t" data-a="c">A<br>TTFT 看 prefill / queue / cache<br>TPOT 看 decode kernel / KV bandwidth<br>P99 看调度与通信</div></div></div><div class="xb-row"><div class="xb-box" style="--bc:#f59e0b;flex-grow:100" data-d="1"><div class="xb-t" data-a="c">答题模板<br>先画 block table，再讲 scheduler loop，最后落到指标和参数。<br>这比只说 PagedAttention 是虚拟内存类比更像工程答案。</div></div></div></div>
<!-- /xboard -->
```
<p class="caption">vLLM 面试常考题 · <a href="06_vllm_interview_questions.excalidraw">Excalidraw 源文件</a></p>
