阶段四 · 落地与进阶

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:源码阅读不带问题进去

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

路线收口

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