从零实现一个mini vLLM--生产部署 项目 生产部署:让 mini vLLM 从能跑变成能稳定服务 到上一篇为止,mini vLLM 已经可以通过 OpenAI 风格 API 对外提供服务。 用户可以调用 /v1/completions 或 /v1/chat/completions。非流式请求会等待完整结果,流式请求会通过 SSE 持续返回增
从零实现一个mini vLLM--API兼容 项目 兼容 OpenAI API:让 mini vLLM 接入真实应用 前面几篇文章里,我们已经把 mini vLLM 的推理内核做得越来越完整。 它现在已经有了请求状态抽象、Scheduler、prefill 和 decode 分离、流式输出、Block Manager、PagedAttention、P
从零实现一个mini vLLM--量化推理 项目 量化推理:用更低精度换取更高吞吐和更低显存 前面一篇我们讨论了 tensor parallel。 Tensor parallel 解决的是一个非常直接的问题:模型太大,一张 GPU 放不下,那就把模型权重切到多张 GPU 上,让多张 GPU 一起完成一次 forward。 这一篇我们讨论另一个方向:
从零实现一个mini vLLM--Tensor parallel 项目 Tensor Parallel:当一张 GPU 放不下一个大模型 前面的文章里,我们一直默认模型可以完整放在一张 GPU 上。 这让系统设计简单很多。Engine 只需要管理请求状态,Scheduler 只需要决定哪些 Sequence 运行,Block Manager 只需要管理这张 GPU 上的
从零实现一个mini vLLM--Speculative decoding 项目 Speculative Decoding:用小模型帮大模型提前草拟答案 前面几篇文章里,我们优化 LLM 推理的方向主要集中在系统层。 KV cache 避免重复计算历史 token。 Continuous batching 提高多请求 decode 的 GPU 利用率。 PagedAttentio
从零实现一个mini vLLM--Benchmark 项目 Benchmark:如何证明你的推理引擎真的更快 到目前为止,mini vLLM 已经实现了很多关键能力。 我们从最朴素的手写 generate 开始,逐步加入 KV cache,把请求抽象成 Sequence,实现 Scheduler,拆分 prefill 和 decode,引入流式输出和异步 E
从零实现一个mini vLLM--Chunked Prefill 项目 Chunked Prefill:别让长 prompt 阻塞整个推理引擎 前面几篇文章里,我们围绕 KV cache 做了几层优化。 Block Manager 让 KV cache 变成可分配、可释放、可复用的 blocks。PagedAttention 让 attention 可以通过 block
从零实现一个mini vLLM--Prefix Caching 项目 Prefix Caching:复用相同前缀的 KV cache 前面几篇文章里,我们已经把 mini vLLM 的核心推理链路搭起来了。 请求进入系统后会变成 Sequence。Scheduler 决定每一轮做 prefill 还是 decode。Block Manager 把 KV cache 切
从零实现一个mini vLLM--设计Sampling 系统 项目 Sampling 系统设计:从 logits 到可控生成 前面几篇文章里,我们已经把 mini vLLM 的核心推理链路搭了起来。 请求会被抽象成 Sequence。Scheduler 决定每一轮哪些请求做 prefill,哪些请求做 decode。Block Manager 负责管理 KV cac
从零实现一个mini vLLM--优化PagedAttention 项目 从正确到更快:PagedAttention 的优化路线 上一篇文章里,我们实现了一个教学版 PagedAttention。 那个版本的目标不是快,而是正确和清晰。我们让 Sequence 通过 block table 找到自己的 physical KV cache blocks,然后把历史 K 和