技术笔记

vLLM 与 DeepSpeed 学习路线 从推理服务到训练系统

先分清推理和训练,再理解 KV Cache、连续批处理和 ZeRO,最后用小实验连接到 Agentic RL。四篇笔记组成一条可以持续补充的学习路线。

作者与贡献:基于官方文档与论文整理的原理笔记;公式为理论估算,配套 GPU 实测见独立实验记录。

如果已经会调用模型 API,接下来很容易遇到两个问题:为什么同时来了几个请求,回答就变慢了?为什么模型权重看起来能放进显卡,训练时却仍然显存不足?

这组笔记沿着这两个问题展开:先理解 vLLM 如何组织生成任务,再理解 DeepSpeed 如何管理训练状态。它们也能帮助理解 Agentic RL 中“生成交互轨迹”和“更新模型参数”的系统开销。

四篇笔记的阅读顺序

顺序 主题 要回答的问题 学完后的小产出
1 本篇 学习路线 两个系统分别解决什么问题 画出推理与训练的边界
2 vLLM 推理原理 KV Cache 为什么占显存,分页和调度有什么用 手算一条序列的 KV 大小
3 DeepSpeed 与 ZeRO 权重之外还有什么,ZeRO 分别切分什么 手算四卡训练的状态显存
4 入门实验与 Agentic RL 如何验证理解,如何连接生成与学习 留下一份能复查的实验记录

先分清两种工作

推理像已经学会解题的人在回答问题。通常不更新模型参数,但需要计算新 token,并为生成过程保留中间状态。vLLM 提供在线服务和离线批量生成,是学习这一侧的入口。vLLM Quickstart

训练要根据损失调整参数。除了前向计算,还要进行反向传播和优化器更新;DeepSpeed 可以包装 PyTorch 模型,管理分布式训练中的这些步骤。DeepSpeed Getting Started

flowchart TB
    A[模型权重] --> B[推理 生成新 token]
    A --> C[训练 根据损失更新参数]
    B --> D[vLLM 学习入口]
    D --> E[KV Cache 与请求调度]
    C --> F[DeepSpeed 学习入口]
    F --> G[梯度 优化器状态 与 ZeRO]

这是一张学习分工图。DeepSpeed 也有推理能力;这里选择 ZeRO 训练作为入门主线。DeepSpeed 推理教程

先补齐这五个概念

概念 通俗理解 后面会用在哪里
token 模型处理文本的单位,不必等同于一个汉字或单词 输入输出长度、吞吐量
自回归生成 根据已有内容继续生成后续 token Prefill 与 Decode
KV Cache 保留历史 token 的注意力键和值,供后续生成使用 vLLM 显存估算
梯度与 Adam 梯度提供更新方向;Adam 还维护更新所需的历史统计 训练为什么比加载权重大
数据并行 不同设备处理不同样本,再协调参数更新 ZeRO 的切分范围

暂时不需要从 CUDA 内核开始。能解释“一次生成保存什么、一次训练更新什么”,就可以继续往下读。

两条显存问题要分开分析

下面是阅读后续内容时可以使用的简化账本,不是显存上限计算器。

场景 先检查什么 还需要预留什么
自回归推理 模型权重与活跃序列的 KV Cache 激活、算子工作区、图捕获、运行时开销
Adam 全参数训练 参数、梯度、优化器状态 激活、通信缓冲、临时聚合、运行时开销

例如,一个 FP16 的 7B 参数模型,单看权重约为 $7\times10^9\times2=14\times10^9$ 字节,即 14 GB。但训练的账本还没有算完;多请求推理的 KV 账本也没有算完。这里 GB 按十进制计算,不能与 GPU 工具中显示的 GiB 直接混用。

与 Agentic RL 的联系

可以先把一个学习循环拆成三个动作:生成轨迹、评价轨迹、更新策略。轨迹不仅是最终答案,还可能包括工具调用、环境反馈和多轮消息。

flowchart TB
    A[当前策略权重] --> B[生成回答或工具调用]
    B --> C[环境执行并返回反馈]
    C --> D{任务是否结束}
    D -->|继续| B
    D -->|结束| E[整理轨迹与奖励]
    E --> F[训练器更新策略]
    F --> G[同步新权重到生成侧]
    G --> A

这是用于拆解系统的示意图:生成侧可以选择 vLLM,训练侧可以选择 DeepSpeed 或其他后端;具体框架还要负责数据格式、策略版本、权重同步等接口。把两个库装好,并不等于已经实现了 Agentic RL。

可以把后续项目问题定得很具体:同一批任务的生成时间占多少?工具等待占多少?训练和权重同步分别占多少?先把一轮耗时拆开,再讨论优化对象。

建议的学习安排

  1. 先读第二篇,用纸笔算一次 KV Cache,解释上下文变长和并发增大为什么都会带来压力。
  2. 再读第三篇,用同一个参数规模比较普通数据并行与三个 ZeRO 阶段。
  3. 最后按第四篇做最小实验。先验证程序能运行,再固定条件比较配置,每次只改变一个变量。

阅读材料核对日期为 2026 年 10 月 15 日。文中的分页图与显存计算用于解释原理。配套本机实验记录 单独提供设备、版本、原始日志与测量口径,注意区分理论估算和实际分配。

下一篇:vLLM 推理原理 从 KV Cache 到分页与连续批处理

END OF NOTE✳
← 返回文章列表