阶段一 · 建立认知

Chapter 01 · 认识推理引擎与学习地图

如果你一上来就去看某个框架的安装命令,通常会很快陷入“命令会跑,但不知道为什么这么跑”的状态。本章的任务,就是先把地图摊开:什么是模型,什么是推理引擎,什么是服务系统,为什么后面要先学推理链路,再学硬件与显存,再学调度和优化,最后再落到框架、压测和源码。

时长 2 天
难度 L1 入门
先修
定位学习边界 建立术语表 确认阶段顺序

章节导读

这一章不是在讲“一个具体技术点”,而是在给后面所有章节定坐标系。你要先知道自己在学什么、为什么按这个顺序学,以及什么样的问题才属于推理引擎范畴。

这一章回答什么问题

推理引擎究竟是模型、服务框架、部署工具中的哪一层?它到底接住了哪些工程问题?

读完之后你要会什么

至少能把模型、推理后端、服务层、部署层分开说清楚,并说明为什么吞吐、延迟、显存和并发是核心指标。

推荐阅读方式

先看地图,再记术语;先记边界,再进细节。不要把这一章当成“概念绪论”轻轻翻过,它决定你后面怎么看问题。

本章目标

  • 区分“模型本身”和“推理引擎 / 推理服务”的职责边界。
  • 认识后续章节会高频出现的关键词:token、context、latency、throughput、KV Cache、batch、scheduler。
  • 建立“先链路、再硬件、再调度、再框架”的学习顺序意识。
  • 能说明为什么一个推理服务的工程问题,不能只靠读模型论文解决。

前置知识

必须知道

  • LLM 接收文本输入,并按 token 逐步生成输出。
  • 模型训练和模型推理是两类目标不同的系统问题。
  • 你大致知道“服务”意味着请求进入、被处理、再返回结果。

建议知道

  • 用过至少一个模型 API 或本地推理工具。
  • 见过 HTTP 服务、RPC 服务或命令行程序的基本调用方式。
  • 对 GPU、显存、容器这些词有最粗粒度印象。

这一章不要求

  • 不要求会写 CUDA 代码。
  • 不要求会部署完整集群。
  • 不要求会推导 Transformer 数学公式。

正文主线

1. 为什么“推理引擎”值得单独拿出来学

很多人第一次接触大模型系统,会把一切都混成“模型服务”。但工程上这并不准确。模型定义的是参数、结构和推理能力;推理引擎关心的是如何把请求组织起来,怎样让模型在硬件上高效执行;服务层又关心接口暴露、鉴权、限流、日志与监控。它们彼此相关,但不是同一层问题。

你可以把模型看成“要被执行的核心资产”,把推理引擎看成“把模型高效跑起来的执行系统”,再把服务层看成“把执行系统包装成可被业务调用的产品接口”。一旦你把这三层分开,后续很多概念就会自然归位:为什么显存问题是引擎问题,为什么压测是服务问题,为什么参数量和上下文长度会共同影响系统表现。

为什么这件事重要

如果你不先做这层拆分,后面一遇到“响应变慢”“显存爆了”“吞吐上不去”就很难判断问题究竟出在模型能力、引擎调度、缓存管理,还是接口层和流量组织。

2. 一个最小推理系统通常包含哪些层

从外部看,一个用户只是在发请求、收回复;但从系统内部看,至少包含五个层次:客户端或调用方、服务入口层、请求编排与调度层、模型执行后端、以及日志监控与资源管理层。真正的大模型推理问题,往往发生在中间三层,而不是最表面的“接口能不能返回”。

  • 客户端层:构造请求、提交 prompt、接收返回。
  • 服务入口层:路由、鉴权、限流、协议转换。
  • 推理引擎层:入队、batch、缓存管理、采样、状态维护。
  • 执行后端层:具体模型运行、内核调用、硬件资源使用。
  • 观测层:日志、指标、告警、压测结果分析。

这也是为什么“启动成功”远远不等于“系统设计正确”。启动只是证明你连到了模型,真正的工程能力来自能否把请求流、资源使用和性能目标串起来理解。

3. 推理系统真正关心的指标是什么

新手最容易把“快”理解成一个单一指标。但在线推理场景至少同时关心四件事:首 token 延迟、总延迟、吞吐和资源占用。对话产品通常特别在乎“用户多久看到第一个字”,批量任务更在乎单位时间能跑多少 token,平台团队还会关心同样预算下能不能承载更多并发。

这些指标之间并不是天然一致的。为了吞吐做大 batch,可能会抬高等待时间;为了极低延迟减少队列等待,可能牺牲资源利用率;为了省显存启用更激进的量化,可能影响兼容性和精度。你后面看到的每一个引擎优化,最终都在这些目标之间做取舍。

工程直觉

当你听到别人说“某个引擎更快”,第一反应应该不是接受这个结论,而是追问:在什么负载下、用什么指标衡量、为了什么目标做快。

4. 为什么学习顺序必须是“链路 → 基础 → 核心 → 落地”

先学链路,是为了知道请求到底怎么流动;再学硬件、显存和缓存,是为了知道成本从哪来;再学调度、batch 和量化,是为了知道系统如何优化;最后再回到具体框架、部署和源码,是为了把抽象认知落地。如果你把顺序倒过来,通常会出现两种情况:命令会跑但问题看不懂,或者名词会背但系统不会分析。

这也是本网站设计成 4 个阶段、8 个章节的原因。它不是为了“显得完整”,而是为了逼你按系统逻辑而不是按热度标签学习。

5. 为什么术语一定要按层分类记忆

初学者最容易把 token、batch、QPS、显存、采样参数、容器配置混着记,因为它们都出现在“大模型系统”里。但这些词分别属于输入表达、引擎执行、服务指标、硬件资源和部署运维层。如果你不按层分类,后面碰到问题时就只能“全都看一遍”,没有排查顺序。

更有效的记忆方法是先问这个词在回答什么问题:是在描述模型看到的单位,还是在描述请求如何被组织,还是在描述系统如何被观测。这样术语表不是词典,而是一张问题地图。

6. 从用户感受到工程问题,中间隔着一层“翻译”

用户通常只会描述现象,例如“今天回复慢了”“一长段资料贴进去就卡住”“有时第一句很慢但后面很快”。工程师的工作,是把这些表面现象翻译成系统语言:首 token 延迟上升、prefill 压力变大、长上下文导致缓存和显存压力提升、队列等待变长。

这层翻译能力,就是你学习推理引擎最核心的收益之一。它决定你以后是只能复述框架特性,还是能真正分析一个线上系统发生了什么。

工程判断

先分层,再下结论

遇到任何“推理服务有问题”的描述,第一步不是改参数,而是先判断问题更像模型层、引擎层、服务层还是部署层。

  • 回答质量异常,先看模型能力与 prompt。
  • 时延和吞吐异常,优先看引擎链路与调度。
  • 接口不稳、鉴权或限流问题,优先看服务层。

先问指标,再谈“快不快”

任何“更快”的结论都要追问衡量指标,否则很容易拿吞吐优化去误伤交互体验。

  • 对话产品先看首 token latency。
  • 批量任务先看总吞吐与单位成本。
  • 平台团队要同时看稳定性和资源占用。

学习顺序本身也是工程判断

先理解请求链路和问题边界,再学习硬件与优化,最后再看具体框架,这样你学到的是方法,不是命令集合。

  • 先学链路,后面名词才有位置。
  • 先学基础,后面优化才知道在救什么。
  • 最后学框架,才不会被实现细节牵着走。

场景拆解

现象 分层 动作

聊天产品“最近第一句明显更慢”

这类问题不能直接说“模型变差了”。更合理的第一判断是:首 token latency 是否上升,最近是否引入更长系统提示词、RAG 拼接内容或新的排队等待。

  • 先看链路:输入是否更长,prefill 是否更重。
  • 再看引擎:队列与 batch 组织是否改变。
  • 最后看服务:接口层是否增加了前置处理。
目标 指标 判断

批量摘要服务应该优先追什么

如果这是离线或准离线任务,系统往往更关心单位时间能处理多少 token、多少文档,而不是单个请求最先返回的那一刻。

  • 主指标通常是吞吐和资源利用率。
  • 可接受更高单请求等待时间。
  • 这会直接影响你后面对 batch 和调度策略的偏好。

图解实验室

先把四层边界放到一张图里。你后面碰到任何问题,都可以先问它更像落在哪一层。

推理系统四层分工地图

这张图的重点不是层数本身,而是提醒你:能力、执行、服务和运行环境不是同一个问题域。

模型层 负责参数、结构和能力边界,回答“模型会不会答、能答到什么程度”。
↓
推理引擎层 负责请求组织、batch、缓存、采样和执行效率,回答“怎样把模型高效跑起来”。
↓
服务框架层 负责接口暴露、协议兼容、鉴权和限流,回答“外部系统怎样稳定调用”。
↓
部署平台层 负责容器、资源调度、监控和扩缩容,回答“服务怎样长期运行在真实环境”。
你分析问题的第一步 先判断问题是能力、执行、接口还是运行环境,再决定去看哪一层。
你后面学习的顺序 先看引擎链路,再看资源与调度,最后回到框架和部署闭环。

关键表格与结论

对象 它主要解决什么 你在学习时要关注什么
模型 参数、结构、能力边界、输出质量 它会不会回答、回答能力到哪
推理引擎 请求调度、batch、KV Cache、采样、执行效率 它怎样把模型高效地跑在硬件上
服务框架 接口暴露、协议兼容、鉴权、运维接入 它怎样让外部系统稳定调用推理能力
部署平台 容器、节点、资源调度、监控、扩缩容 它怎样把服务放到真实环境并持续运行

本章最重要的判断

以后你看到任何“推理系统问题”,先判断它属于模型层、引擎层、服务层还是部署层,再决定去哪里找答案。

本章最重要的学习方法

不要先背框架命令,先记住边界和目标。理解“系统为谁优化”比记“系统支持什么参数”更值钱。

动手任务

任务 1:画一张最小推理系统结构图

把客户端、服务入口、推理引擎、执行后端、监控五层画出来,并给每层写一句职责说明。最低完成标准是:你自己能对着图讲清楚每层边界。

任务 2:写一份术语对照表

把 token、context、latency、throughput、batch、KV Cache、scheduler 分成“输入、执行、输出、资源、调度”几类。最低完成标准是:任意一个词你都能说出它更接近哪类问题。

任务 3:拿一个线上产品,判断它最关心的指标是什么

例如聊天产品、批量摘要服务、RAG 问答服务。最低完成标准是:你能写出它更在乎首 token、总延迟还是吞吐,并解释原因。

任务 4:写一段 150 字以内的“什么是推理引擎”说明

要求面对有工程背景但没学过 LLM 的同学也能看懂。最低完成标准是:里面要同时提到“请求组织”“模型执行”和“性能目标”。

阶段产出

产出 1

一张最小推理系统结构图。

产出 2

一份你自己的核心术语表。

产出 3

一段你能复述给别人听的“什么是推理引擎”解释。

自测问题

  1. 1. 模型、推理引擎、服务框架三者的边界分别是什么?

    如果你只能回答“它们都和推理有关”,说明边界还没有真正建立起来。

  2. 2. 为什么“系统更快了”这个说法本身不完整?

    尝试补全它:在什么负载下、用什么指标衡量、为谁变快。

  3. 3. 为什么学习推理引擎不能直接从部署命令开始?

    如果你能把原因和“问题定位能力”联系起来,说明你理解到位了。

  4. 4. 你能否举出一个“属于引擎层”的问题和一个“属于服务层”的问题?

    如果两者你总是分不开,后面学习会反复混淆。

推荐资料

官方文档

源码入口

  • Source vllm-project/vllm

    把文档和真实工程代码对应起来,后面读调度、缓存和 serving 路径会用到。

  • NVIDIA/TensorRT-LLM

    适合作为“厂商路线如何组织推理栈”的对照样本。

实践仓库 / 路线对照

  • Practice sgl-project/sglang

    适合后面从服务编排和高性能推理框架角度对比不同路线。

  • ggml-org/llama.cpp

    适合用来观察“轻量、本地、跨硬件”路线与数据中心 GPU 路线的差异。

常见误区

误区 1:把推理引擎理解成“模型接口库”

这样会低估调度、缓存、采样和资源管理的重要性,后面遇到性能问题就只会从接口参数里找答案。

误区 2:以为“部署成功”就等于“系统理解完成”

部署只是开始,真正的工程能力来自你能解释为什么某种流量、上下文长度和并发模式会改变系统表现。

误区 3:只按热度学框架,不按问题域学系统

这样学出来的信息很碎,换一个框架名词就容易失去判断力。

下一章衔接

现在你已经知道自己在学哪一层系统了。下一章会把“推理系统”这个抽象概念落回一次真实请求:文本如何变成 token,prefill 和 decode 各自做什么,为什么输出阶段不是“一次算完”,而是一轮轮向前推进。