作品集、简历与学习计划¶
推理岗看重"真的做过":一个有数字、有对比、能讲清楚取舍的项目,胜过一长串熟悉的名词。这一章给出几个由浅入深、适合放进简历的项目方向(大多可以直接在本手册的代码上扩展),简历中怎样描述它们,以及一份把四本手册串起来的学习计划。
岗位画像¶
推理相关的岗位大致分三类,侧重点不同:
| 方向 | 日常工作 | 最看重 |
|---|---|---|
| 推理框架开发 | 在 vLLM/SGLang 或自研引擎上开发调度、KV 管理、并行、新模型支持 | 引擎架构的理解、Python/C++ 工程能力、读大型代码库的能力 |
| 推理优化 / 算子 | 写和调优 kernel(注意力、GEMM、MoE、量化),profiling 与性能分析 | CUDA/Triton、屋顶线分析、硬件知识 |
| 推理平台 / 部署 | 大规模部署、路由、弹性伸缩、成本优化、SLO 保障 | 系统设计、容量规划、压测与监控、分布式系统 |
三类岗位的面试都会考面试题库中的基础题,差别在于深挖的方向。
项目方向¶
1. 迷你推理引擎的 GPU 版本(框架方向,★ 推荐)¶
一条现成的路径是跟着手写 mini-sglang一章一章地实现:它的结构、接口与官方 mini-sglang 一致,GPU 上直接使用 FlashInfer、FlashAttention 和 CUDA Graph,下面列出的几项它都已经覆盖,你可以在它的基础上做对比实验。
在本手册的迷你引擎基础上:
- 把参考实现的注意力换成 FlashInfer 或 FlashAttention 的分页/varlen 接口,一个 kernel 处理整个批次;
- 加上 CUDA Graph(按 batch 大小分桶录制)和异步调度;
- 用 NCCL 实现张量并行;
- 实现一个 OpenAI 兼容的服务并压测;
交付物:代码仓库、在同一模型与负载下与 vLLM 的对比(吞吐、TTFT、TPOT 的差距与原因分析)、一篇技术博客。能说清"我的引擎比 vLLM 慢 30%,时间差在 CPU 开销和 X kernel 上",比声称"比 vLLM 快"可信得多。
2. 融合算子与 kernel 优化(优化方向)¶
用 Triton 或 CUDA 实现推理中的关键算子,每个都给出正确性测试和屋顶线分析:
- fused add + RMSNorm、SiLU × up(可附带 FP8 量化输出)、RoPE;
- 分页 decode attention(支持 GQA,可选 split-KV);
- W4A16 的 GEMV / GEMM;
参考 CUDA 手册的作品集项目和各算子章节。把自己的 kernel 接进迷你引擎或 vLLM,测端到端的收益,是一个完整的故事。
3. 量化实验(优化方向)¶
在一个开源模型上系统比较量化方案:RTN、GPTQ、AWQ、SmoothQuant、FP8(不同缩放粒度)、KV Cache 量化,用 lm-evaluation-harness 评测精度,用 vLLM 实测吞吐与延迟;分析"哪些层敏感、为什么"。本手册的量化部署一章是起点。
4. 服务调优报告(平台方向)¶
选一个模型,在 vLLM 和 SGLang 上部署,用开环压测画出延迟–吞吐曲线,逐个调整关键参数(token 预算、并发上限、前缀缓存、CUDA Graph、量化、投机解码),记录每个参数对 goodput 的影响,最后给出一份"在 X SLO 下,单卡能扛 Y req/s,最优配置是 Z"的报告。这类报告直接对应平台岗位的日常工作。
5. 系统专题原型(进阶)¶
- 缓存感知路由器:在多个 vLLM 实例前实现一个路由器,利用 KV 事件或近似的前缀树做路由,对比随机路由的命中率与 TTFT;
- PD 分离实验:用 vLLM 的 KV connector 搭一个 1P1D 的最小系统,测量 KV 传输开销和 TPOT 抖动的改善;
- RL rollout 长尾优化:实现 partial rollout,测量利用率的提升(参考 RL 训练中的推理)。
6. 开源贡献¶
从 good first issue、文档、测试、模型支持开始,逐步到 bug 修复与性能改进。几点建议:
- 先读项目的贡献指南并遵守。例如 vLLM 明确要求:提 PR 前检查是否已有相同的工作;不接受孤立的琐碎改动;AI 辅助的贡献必须由提交者理解并能为每一行辩护,PR 描述中要说明 AI 的使用情况、测试命令与结果;
- 修复一个真实的 bug,比十个拼写修正更有价值;
- 在 issue 和 PR 讨论中学到的设计取舍,本身就是很好的面试素材。
简历怎么写¶
- 每个项目写成"做了什么 + 效果数字 + 关键技术":例如"实现分页 KV 与连续批处理的推理引擎,6 个并发请求的总耗时从逐个生成的 4.7 s 降到 1.8 s;profiling 定位到逐请求注意力占 82% 的时间,改用批量 kernel 后单步延迟下降 X%";
- 数字要有对照:相对什么提升?在什么硬件、模型、负载下?与理论下限差多少?
- 少写"熟悉",多写"做过":列出读过的源码模块、实现过的组件、解决过的问题;
- 准备好被追问:简历上的每个数字,面试官都可能问"怎么测的""为什么是这个数""瓶颈在哪"。
精简版学习计划(约 12 周)¶
完整的安排是 17 周:逐周的学习、练习、产出和验收见冲刺计划,逐章的版本(每章标注必学、推荐、选学,按框架、优化、平台三个方向标出重点,可以记录进度)见学习路线图。时间更紧时,可以按下表压缩到 12 周左右(去掉两个前沿专题和作品 C,面试准备缩短)。
| 周 | 内容 | 产出 |
|---|---|---|
| 1 | Python 进阶手册中不熟悉的章节(并发、性能分析、测试) | 能熟练写和测试工程代码 |
| 2~4 | 大模型原理手册:基础与数学 → Transformer 解剖 → 推理原理 | 手写 mini_llm,能做所有估算题 |
| 5~7 | CUDA 进阶手册:GPU 基础 → 经典算子 → Tensor Core、FlashAttention、量化 GEMV 与工具链 | 写出几个能跑、有测试的 kernel |
| 8 | 本手册:从零写推理引擎 | 迷你引擎跑通 |
| 9 | 本手册:源码导读 | 能画出 vLLM/SGLang 的请求路径 |
| 10 | 本手册:分布式推理 | 能手推 TP/EP,说清 PD 分离的取舍 |
| 11 | 本手册:性能工程与进阶专题 | 会做容量规划;能讲清投机解码、长上下文、结构化输出 |
| 9~12 | 与学习并行:做一个项目(上面的方向 1~4 之一) | 仓库 + 报告/博客 |
| 12 | 面试准备:题库、手撕代码、系统设计、模拟面试 | 能流畅讲出项目与题库中的高频题 |
这是面向求职的冲刺节奏(每周 15~20 小时,只精读必学章节)。各手册首页的建议用时按从零精读估算,合计约 7~8 个月;时间宽裕时按那个节奏来,走推理优化方向的,CUDA 部分尤其值得多花几周把 kernel 真正写出来。
节奏建议:每天至少跑一段代码或读一段源码,不要只读文字;每学完一章,用章首的自测题检验,答不上来的回头重读;每周写一篇简短的学习笔记,积累下来就是博客和面试素材。
小结¶
- 推理岗分框架、优化、平台三个方向,基础题相同,深挖方向不同。
- 最有价值的项目是"有数字、有对比、能讲清瓶颈"的:迷你引擎 GPU 版、融合算子、量化实验、服务调优报告、系统原型、开源贡献。
- 简历上的每个数字都要有对照、能经得起追问。
- 按"Python → 大模型原理 → CUDA → 推理系统 → 项目 → 面试"的顺序,大约 12 周可以系统地走一遍。
发现错误或有更好的写法?在 GitHub 上编辑此页提交问题