阶段一 · 建立认知

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 各自做什么,为什么输出阶段不是“一次算完”,而是一轮轮向前推进。