阶段四 · 落地与进阶

Chapter 08 · 部署、压测、监控、源码阅读与毕业项目

到这里,路线必须真正闭环。你不仅要“知道”推理引擎怎么回事,还要能搭起一个最小服务,设计基础压测,读懂关键指标,知道源码从哪里切进去,并把这些结果沉淀成可以复盘和展示的毕业项目。

时长 5-6 天
难度 L4 落地
先修
部署闭环 压测与监控 毕业项目

章节导读

最终检验一条学习路线是否有价值,不是你看了多少页文档,而是你能否把它转成一个可运行、可压测、可解释、可复盘的系统实践。本章把整个学习路径收束成真实工程工作流。

这一章的核心问题

如何把推理引擎知识真正落到部署、压测、监控、源码阅读和项目沉淀上。

你要形成的能力

不只是把服务跑起来,还能设计指标、解释现象、组织结论。

完成本章意味着什么

你已经从“会描述系统”走到“能驱动一轮完整工程闭环”。

本章目标

  • 完成最小推理服务的部署闭环:启动、调用、记录、复盘。
  • 设计一套基础压测方案,知道不同负载组合要看哪些指标。
  • 建立监控与定位视角,把“感觉慢”翻译成“哪里慢”。
  • 知道源码阅读如何从关键路径切入,而不是盲目通读。
  • 设计一个能真正体现学习成果的毕业项目。

前置知识

必须知道

  • 你已经能分清首 token latency、总 latency、吞吐和资源占用。
  • 你至少理解过一条主流框架路线的定位。
  • 你知道部署不是目标本身,而是后续压测和观测的前提。

建议知道

  • 接触过 Prometheus、Grafana、k6 这类观测或压测工具名字。
  • 知道仓库源码通常存在“入口层、调度层、执行层”分工。
  • 愿意用图表、表格和文字记录实验过程。

本章的学习态度

  • 不要追求一次做成完美生产系统。
  • 先做最小闭环,再做可解释闭环,最后才谈优化深度。
  • 所有实验都要保留记录,不要只记最终结论。

正文主线

1. 最小部署闭环应该长什么样

一个合格的最小闭环,不是“启动命令执行成功”,而是至少满足四件事:模型能加载、接口能返回、日志能看到、基本资源占用能观察。只有这样,你后面做压测和定位时才有抓手。

这意味着部署的第一目标不是炫配置,而是建立一个可被持续调用和观察的基线系统。

2. 压测不是跑一个数字,而是设计一组负载实验

如果你只跑一组默认参数,然后记下一个 QPS 或 tokens/s,这几乎没有太大分析价值。更合理的做法是设计负载矩阵:短输入短输出、长输入短输出、长输入长输出、不同并发度、不同 batch 条件,再观察指标如何变化。

压测的核心不是“跑大数”,而是让系统行为在不同负载下显形。

3. 监控与指标:把“系统慢”翻译成可解释信号

没有监控时,团队讨论经常停留在“今天感觉变慢了”。有监控之后,你至少能问:是首 token 延迟上升了,还是总 latency 拉长了?是并发上去后队列变长,还是显存压力上来后出现回收问题?是 GPU 利用率上不去,还是带宽已接近上限?

监控的价值,从来不是面板本身漂亮,而是让系统问题可定位、可回放、可复盘。

4. 源码阅读要沿着问题和路径切进去

看推理引擎源码最忌讳从入口一路顺着翻到底。你应该先带着问题进去,例如“请求在哪里入队”“缓存对象是什么”“调度器怎样决定谁先跑”“服务接口如何把生成参数传进内核路径”。这样读到的不是一堆文件,而是一条条关键路径。

一个常见做法是先锁定四类对象:服务入口、请求状态对象、调度器、执行后端。把这四类对象连起来,你就已经抓住了系统骨架。

5. 毕业项目为什么要同时有过程、数据和结论

一个好的毕业项目,不只是“我部署了某个框架”。它应该至少包含:背景与目标、系统配置、负载设计、指标结果、问题解释、源码发现和最终结论。这样它既能证明你动手做过,也能证明你理解了系统为什么表现成这样。

换句话说,毕业项目真正展示的不是你“会操作”,而是你已经具备了基本的系统分析能力。

6. 可复盘的实验记录,决定你能不能真正进步

很多人做完部署和压测,脑子里有一堆印象,但没有留下足够的配置、负载、图表和结论,几天后就很难再解释当时到底发生了什么。工程学习如果不沉淀工件,最后只会剩下模糊记忆。

一份可复盘记录至少要包含:环境、模型版本、关键参数、负载描述、观察到的指标、你当时的判断和下一步要验证的问题。这样它才会变成真正可迭代的学习资产。

工程判断

先建立基线,再谈优化

没有一个稳定可调用、可观测的最小系统,后面的压测和优化都会缺少参照物。

  • 先把启动、调用、日志、资源观察打通。
  • 再做负载实验和参数比较。
  • 这样每次变化才知道是相对谁在变。

先定义问题,再设计压测矩阵

压测不是“多跑几组数字”而已,必须先明确你想证明什么:首包、吞吐、并发承载、长上下文表现,还是多卡扩展。

  • 每个问题对应不同的负载组合。
  • 每组实验都要有明确观察指标。
  • 否则最后只会得到一堆无法解释的结果表。

源码阅读从关键路径下刀

当你想验证某个框架怎样调度或管理缓存时,应该沿着请求入口、状态对象和调度器去读,而不是从 README 往下机械翻页。

  • 带着问题进源码。
  • 只抓关键对象和调用链。
  • 让阅读结果能回到你的实验现象上。

场景拆解

部署完成 首包偏慢 动作

服务已经能返回结果,但第一句总要等很久

这时最有价值的动作不是立刻改一堆参数,而是先补日志和指标,把首 token latency、输入长度和等待时间拆开看。

  • 先确认是输入阶段慢还是队列等待长。
  • 再结合第 2、5 章的链路和调度知识解释现象。
  • 让问题从“感觉慢”落到具体阶段。
性能提升 成本变化 动作

某轮优化后 tokens/s 更高了,但 GPU 成本也上去了

这时不能只汇报“更快了”,还要把资源占用、并发承载和单位成本一起拿出来,否则结论是不完整的。

  • 重新看目标是体验优先还是成本优先。
  • 把吞吐、时延和资源三者一起复盘。
  • 这正是毕业项目里最值得写的分析部分。

图解实验室

真正的学习闭环不是“部署完就结束”,而是一轮一轮把实验、观察、源码和结论串起来。

推理引擎工程闭环图

每一轮输出的工件,都会反过来影响下一轮实验设计。毕业项目就是把这个闭环完整留下来。

部署基线 先做出一个稳定可调用、可观察的最小服务。
↓
负载实验 按目标设计压测矩阵,让系统行为在不同负载下显形。
↓
指标分析 把首包、总时延、吞吐、显存和 GPU 利用率放回同一张判断表。
↓
源码验证 沿着请求、状态对象和调度器验证你的判断到底对不对。
↓
项目沉淀 把配置、图表、结论和发现整理成能复盘的项目工件。
复盘回路 项目沉淀不是终点,它会生成下一轮假设,重新更新你的部署基线和实验设计。
结论沉淀 → 提出新假设 → 重新验证

关键表格与结论

工作环节 最低要产出什么 如果缺失会怎样
部署 稳定可调用的最小服务 后续压测与指标分析无从谈起
压测 负载矩阵、结果记录、指标趋势 你只会得到孤立数字,无法解释系统行为
监控 关键指标面板或记录 问题只能靠主观感觉判断
源码阅读 关键路径与关键对象笔记 阅读会碎片化,难以形成系统理解
毕业项目 背景、过程、数据、结论 成果不可复盘,也难以展示真正能力

结论 1

部署只是起点。没有压测、监控和解释能力,系统学习仍然停留在“会运行命令”。

结论 2

一个好的学习闭环一定留下工件:图、表、脚本、结果、结论,而不是只留下印象。

动手任务

任务 1:定义你的最小部署清单

写清楚模型、框架、硬件、接口、日志和资源观察方式。最低完成标准是:别人拿到这份清单也能复现你的最小服务。

任务 2:设计一份基础压测矩阵

至少包含三组输入输出长度组合和两档并发度。最低完成标准是:每组都写出要观察的关键指标。

任务 3:规划一份关键监控面板

至少包括首 token latency、总 latency、tokens/s、显存占用、GPU 利用率。最低完成标准是:你能解释每个指标看什么。

任务 4:写一页毕业项目提纲

最低完成标准是:包含背景、目标、选型、实验设计、结果分析、源码阅读发现、最终结论这几部分。

阶段产出

产出 1

一份最小部署清单。

产出 2

一份基础压测矩阵与结果模板。

产出 3

一页毕业项目提纲。

自测问题

  1. 1. 为什么部署成功不等于你已经掌握推理系统?

    如果你的答案里没有“压测、监控、解释”三个环节,说明闭环还没有形成。

  2. 2. 压测为什么必须设计负载矩阵,而不是只跑一组默认配置?

    因为系统行为要在不同长度和并发组合下才会显形。

  3. 3. 源码阅读为什么要从关键路径切入,而不是按文件顺序通读?

    如果你能把答案落到“问题驱动”上,就抓住重点了。

  4. 4. 一个合格的毕业项目为什么一定要同时包含过程、数据和结论?

    因为这才能证明你不仅做了,还理解了系统为何表现成这样。

推荐资料

官方文档

  • Official Docs Prometheus Getting Started

    适合理解如何把系统指标稳定采集下来。

  • Grafana 文档

    适合理解如何把监控面板真正搭起来,而不是只停留在“想看指标”。

  • Grafana k6 文档

    适合理解如何组织基础性能测试与负载脚本。

源码入口

  • Source vllm-project/vllm

    适合作为“高吞吐 serving 路线”的源码阅读起点。

  • NVIDIA/TensorRT-LLM

    适合作为“平台深度优化路线”的源码阅读起点。

常见误区

误区 1:把部署看成路线终点

部署只是为压测、监控、定位和复盘创造前提。

误区 2:压测只记录一个总结果

没有负载矩阵和过程记录,就很难解释任何现象。

误区 3:源码阅读不带问题进去

这样读完通常只剩“看过很多文件”,却抓不住系统骨架。

路线收口

这已经是整条学习路线的终章。接下来最重要的动作不是再加章节,而是回到首页,决定你要先做哪条实战线,然后把部署、压测、监控和源码阅读收成一个真正能复盘的毕业项目。