Skip to content

01. 推理系统的分工 ​

本篇导读 ​

从一个最普通的提问开始:“年假怎么申请?” 本篇先拆开屏幕背后的三件事:应用准备问题、引擎安排执行、模型在设备上计算。读完后,应能指出 vLLM、SGLang 放在哪里,以及换引擎会改变什么。暂时不用记住框架清单和底层公式。

从小林的提问到资料准备、模型执行和逐步回答

先看一个资料问答助手 ​

小林在公司的资料助手里输入问题。应用找到他有权阅读的《请假制度》,把相关片段和问题交给模型服务,收到回答后显示出来。图中的制度与答复均为教学示例,不代表某家公司的实际规则。

此时有两个不同任务:找对资料,以及根据资料组织答案。模型服务收到的是本次输入,不会因为读到新制度就自动更新自己的长期参数。

可以把业务应用理解为柜台,把推理引擎理解为派单与进度管理。实际答复还要依靠模型规定的计算和设备执行。点选下列环节,沿同一个问题查看各自职责。

小林:年假怎么申请?

业务柜台
把“年假怎么申请?”和有权访问的制度片段交给模型服务;结果回来后决定如何展示、是否调用业务接口。

这也解释了一个常见现象:换成更高效的引擎后,回答可以更早出现、同时接待更多人;但如果制度根本没送进来,或模型理解能力不足,单换引擎不会补上这部分事实与能力。

训练像学习方法,推理像完成这一次答复 ​

训练时,模型根据大量样本调整参数。部署后的常规推理使用已确定的参数处理当前问题,产生本次结果。好比培训阶段形成工作能力,接待阶段使用这些能力和眼前资料完成任务。

训练更新模型参数,推理使用参数处理当前输入

类比有边界:模型并不是一个能保证理解和查证事实的人;权重也不是保存完整原文的数据库。制度会更新时,常需要应用重新检索资料;要核对原文,则应回到文档或业务系统。

一个人能回答,为什么还需要引擎 ​

只有小林时,加载模型后调用一次生成,已经能完成实验。到了上班时间,几十位同事同时提问:有人读一页制度,有人上传整份手册,有人中途关闭窗口。

如果每次都重新加载模型,启动和权重占用会浪费;如果所有请求简单串行,后面的人会等很久。推理引擎于是持续管理三件事:哪些请求在等、哪些状态要保存、下一轮一起算谁。后面第 3—5 篇会逐项拆开它们。

资料从应用进入引擎,再交给计算框架与硬件的职责分层

到这里,只需要能在图上找到 vLLM、SGLang:它们主要负责中间的引擎层。模型、底层算子和业务应用仍有各自的职责。

深入:常见项目分别处在哪一层?
层次例子主要职责
模型与配置具体 checkpoint、tokenizer、chat template规定计算、参数与输入约定
计算框架PyTorch、MLX张量、设备执行、编译等
算子库FlashAttention、FlashInfer高效完成 attention 等计算
推理引擎vLLM、SGLang、TensorRT-LLM状态、调度、采样、执行与服务
本地路线llama.cpp、MLX-LM本地执行、量化与设备适配
外围系统Dynamo、Mooncake、LMCache路由、KV 传输、缓存或存储
应用资料助手、语音助手检索、权限、会话、工具和业务校验

边界并非互斥:引擎也可以实现 kernel、提供 HTTP 接口。本系列先按主要职责理解,再到第 8—12 篇看实际组合。

深入:所有模型都像聊天模型这样回答吗?

Embedding 通常一次前向得到向量,reranker 得到相关分数;CTC ASR 按声学帧输出再解码;扩散或 flow 音频生成按去噪或积分步骤执行。它们都需要计算资源和调度,却不一定存在文本 LLM 式的逐 token 生成。本系列先以常规因果语言模型建立直觉,第 11 篇再展开语音差异。

另外,NVIDIA Triton Inference Server 与 Triton 编程语言是不同项目;GGUF 是容器格式;Ollama 偏重本地模型管理与使用入口。遇到名字时,先问它在链路上负责哪一段。

本篇回顾 ​

  • 模型规定计算和已学参数,设备实际执行;本次制度从应用输入进入。
  • 推理引擎管理请求和状态,让同一模型能持续服务多人。
  • 回答“可以提交申请”只是生成文字;实际提交仍由业务应用检查权限和状态。

现在已经知道谁在工作。下一篇继续追问:模型为什么先停一会儿,再一个片段一个片段地回答? 进入从输入到逐步生成。

别急,先让缓存热一下。