第 16 章 从 Agent 开发者到 Infra 工程师:职业路径
这是本书的最后一章。前面十五章我们从推理引擎聊到显存管理,从 KV Cache 聊到多模态部署,覆盖了 LLM Infra 的核心知识。但知识本身不是目的——你需要一条可执行的路径,把这些知识变成职业竞争力。
我的背景和很多读者类似:前端出身,写了几年 React/Node.js,后来转做 Agent 开发,再慢慢深入到 Infra 层。这一章分享的不是”标准答案”,而是我和身边工程师走过的弯路和心得。
16.1 技能树规划
从 JS/TS 到 Python 的迁移
好消息是,如果你已经有扎实的 JS/TS 经验,Python 本身不是门槛。语法一两周就能上手,真正的挑战是生态的切换。
JS 世界里你习惯了 npm、ESM、TypeScript 的类型系统。Python 生态是另一套逻辑:
| JS/TS 概念 | Python 对应 | 注意事项 |
|---|---|---|
| npm/yarn | pip/uv/conda | uv 是新一代包管理器,速度极快,推荐使用 |
| package.json | pyproject.toml | 别再用 requirements.txt 管理正式项目了 |
| TypeScript | Python type hints + mypy | 可选的类型标注,但大项目里很重要 |
| async/await | asyncio | 概念相似,但 Python 的 async 生态不如 JS 成熟 |
| Jest | pytest | 测试框架,几乎所有 Python 项目都用 pytest |
| ESLint | ruff | ruff 是 Rust 写的 Python linter,飞快 |
需要重点掌握的 Python 库:
- NumPy:不是让你做数学题,而是因为整个 ML 生态都建立在 ndarray 之上。至少理解 shape、dtype、broadcasting
- PyTorch:后面详细说
- FastAPI:你的模型服务 90% 概率会用 FastAPI 暴露 HTTP 接口
- Pydantic:数据验证和序列化,配合 FastAPI 使用
- asyncio + aiohttp:异步网络编程,高并发服务的基础
一个务实的建议:不要花时间系统学 Python。直接开始写项目,遇到语法不懂的查一下就行。你的编程基础已经够了,Python 的学习曲线对有经验的开发者来说非常平缓。
PyTorch 学习路径:从改代码开始
很多人一提到 PyTorch 就想”从零开始学深度学习”——翻开《动手学深度学习》从线性回归写起。如果你的目标是做 Infra 而不是做研究,这条路太慢了。
推荐的学习路径:
-
第一周:跑通一个推理脚本
- 用 Hugging Face transformers 加载一个小模型(比如 Qwen2.5-0.5B)
- 理解
model.generate()的参数含义 - 用
torch.profiler看看推理时 GPU 在干什么
-
第二周:读 transformers 的核心代码
- 从
modeling_qwen2.py开始读,理解 Attention、MLP、RMSNorm 这些模块 - 不用理解数学推导,但要知道 tensor 怎么在各模块之间流动
- 加一些
print(tensor.shape)看数据维度的变化
- 从
-
第三到四周:改一个推理引擎的代码
- Fork vLLM 或 SGLang,本地跑起来
- 改一个简单的配置项,比如调整 batch scheduler 的参数
- 读 KV Cache 管理的代码,对照本书第三章的内容理解实现
-
之后:在实际项目中持续加深
- 需要什么学什么,不要贪多
- 遇到不理解的数学公式,先 skip,等你需要优化某个 kernel 时再回头学
核心原则:Infra 工程师需要理解的 PyTorch 和 ML 研究员需要理解的 PyTorch 是不一样的。你不需要会写新模型架构,但需要理解现有模型的计算图、知道哪里是性能瓶颈、能读懂和修改模型代码。
CUDA 编程的学习节奏
CUDA 是 LLM Infra 的”硬通货”,但也是最让人望而生畏的部分。实话说,大多数 Infra 工程师的日常工作不需要从头写 CUDA kernel。但你需要能读懂别人写的 kernel,以及在必要时能改。
分三个阶段:
阶段一:能读懂(1-2 个月)
- 学习 CUDA 的基本概念:thread、block、grid、shared memory、warp
- 读一些简单的 kernel:矩阵乘法、softmax、RMSNorm
- 推荐资源:gpu-mode 社区的入门课程,直接看 CUDA 代码讲解
- 目标:看到一个 kernel,能说出它在干什么、为什么这么写
阶段二:能改(3-6 个月)
- 拿一个现有的 kernel,尝试做优化(比如增加 shared memory 的利用)
- 学习 Triton——这是一个比 CUDA C 友好很多的 GPU 编程语言,Python 语法
- 读 FlashAttention 的 Triton 实现(比 CUDA 版好读很多)
- 目标:能修复 kernel 里的 bug,能做简单的性能优化
阶段三:能写(6-12 个月+)
- 从零实现一个自定义 kernel
- 深入理解 GPU 架构:memory hierarchy、bank conflict、occupancy
- 用 NSight Compute 做 profiling,理解 roofline model
- 这个阶段需要持续投入,不是一次性学会的
时间投入的建议:如果你是全职工作,前两个阶段可以利用业余时间完成。第三个阶段需要在实际项目中练手。不要急于求成——很多资深 Infra 工程师也是在工作中逐步积累 CUDA 经验的。
推荐的总体学习顺序
按时间线排列,一个从 Agent 开发者转型到 Infra 工程师的合理节奏:
月 1-2: Python 生态熟悉 + PyTorch 基础 + 跑通推理脚本
月 3-4: 读 vLLM/SGLang 代码 + 理解推理引擎核心概念
月 5-6: CUDA 基础 + Triton 入门 + 写第一个简单 kernel
月 7-9: 开源贡献 + 深入某个方向(量化 / 调度 / 分布式)
月 10-12: 争取一个 Infra 相关的工作项目或岗位这不是严格的时间表,而是一个大致的节奏参考。有人快有人慢,重要的是保持持续投入。
16.2 开源贡献路径
为什么开源贡献是最好的学习方式
在 LLM Infra 领域,开源贡献的价值远超其他学习方式,原因有三:
- 面对真实的工程问题。教程和课程给你的是简化后的问题,开源项目里的 issue 才是真实世界的样子——边界情况、性能退化、兼容性问题。
- 代码 review 是最高效的学习。当 vLLM 的核心维护者 review 你的 PR 时,你获得的 feedback 质量远超任何课程。
- 可验证的能力证明。招聘时,一个被 merge 的 vLLM PR 比简历上写”精通 CUDA”有说服力一百倍。
从哪些项目开始
vLLM(社区活跃,截至 2026 年初 GitHub 40k+ stars)
- 最成熟的 LLM 推理引擎
- Python 为主,核心调度逻辑可读性不错
- Issue 数量多,
good first issue标签的任务适合新手 - 社区活跃,PR review 速度快
SGLang(社区活跃,截至 2026 年初 GitHub 10k+ stars)
- 性能导向的推理框架,一些 benchmark 超过 vLLM
- 团队更小,贡献者更容易被注意到
- 对长期活跃贡献者提供 AI 编程工具赞助(Cursor、Claude Code 等)
- 比 vLLM 更激进地采用新技术
llama.cpp(社区活跃,截至 2026 年初 GitHub 70k+ stars)
- 纯 C/C++ 实现,量化推理的事实标准
- 代码质量高,是学习底层实现的好教材
- 对 C++ 功底有一定要求
- 支持的硬件平台最多:CPU、CUDA、Metal、Vulkan
贡献路径:从文档到核心
一条被验证过的、渐进式的贡献路径:
Level 1:文档和测试(第 1-2 个 PR)
- 修正文档里的错误或过时信息
- 补充缺失的测试用例
- 改善错误信息的可读性
- 目的:熟悉项目的 PR 流程、CI 系统、代码规范
Level 2:Bug Fix(第 3-5 个 PR)
- 从 issue 列表中找复现了的 bug
- 边界情况处理、错误处理改进
- 小的性能优化(比如减少不必要的内存拷贝)
- 这一阶段你会开始理解项目的核心架构
Level 3:Feature(第 5-10 个 PR)
- 新增对某个模型的支持
- 实现一个被社区讨论过的功能
- 参与 RFC 讨论,提出设计方案
- 此时你已经对项目有较深的理解
Level 4:Core(持续)
- 核心模块的重构或优化
- 性能关键路径的改进
- 帮助 review 其他人的 PR
- 参与项目方向的讨论
如何读懂大型 C++/CUDA 项目
面对 llama.cpp 或 vLLM 的 CUDA 代码,很多人的第一反应是”完全看不懂”。几个实用技巧:
- 从入口点开始。不要试图从头到尾读代码,先找到
main()或 API 入口,然后沿调用链往下追。 - 用 Debug 模式跑。编译 debug 版本,用 GDB(C++)或 Python debugger 加断点,观察实际的执行路径和数据。
- 画调用图。用纸笔或工具画出核心函数的调用关系,几个核心模块搞清楚后,其他的就好理解了。
- 读 Git 历史。
git log --oneline --follow <file>看某个文件的变更历史,从早期的简单版本开始读,比读最新的复杂版本容易得多。 - 善用 AI 工具。把一段看不懂的代码丢给 Claude,让它逐行解释。这不丢人,这是效率。
16.3 学习资源索引
课程
必看:
- Andrej Karpathy — Neural Networks: Zero to Hero:从最基础的反向传播讲到 GPT,是理解 transformer 最好的免费课程。不需要全部看完,前几集 + 最后的 GPT 实现就够了。
- Stanford CS149 — Parallel Computing:理解 GPU 并行计算的原理,对后续学 CUDA 帮助很大。课程主页公开可看。
- gpu-mode 社区的 GPU 编程课:社区驱动的课程,内容非常实战。从 CUDA 基础到 Triton 优化,每一讲都有代码可以跟着写。YouTube 和 Discord 都有。
推荐:
- Stanford CS229 — Machine Learning:Andrew Ng 的经典课程,适合补 ML 基础。不需要全听,选择和 LLM 相关的部分。
- NVIDIA Deep Learning Institute 的 CUDA 课程:官方课程,质量有保证,有些需要付费。
- Hugging Face 的 NLP Course:免费,实战导向,从 tokenizer 到模型训练都有覆盖。
书籍
- 《Programming Massively Parallel Processors》(Kirk & Hwu):CUDA 编程的圣经级教材。不用从头读,用到哪个章节翻哪个。
- 《CUDA by Example》:比上一本更易读的入门书。
- 《Designing Data-Intensive Applications》(Martin Kleppmann):不是 ML 相关的,但分布式系统的思维方式在 LLM Infra 中处处用得到。
- 《Systems Performance》(Brendan Gregg):性能分析的方法论,适用于任何系统工程师。
博客和技术社区
必关注:
- vLLM Blog(vllm-project.github.io):官方技术博客,新功能和设计决策的第一手资料
- Hugging Face Blog:模型和推理相关的高质量技术文章
- GPU MODE Discord:最活跃的 GPU 编程社区之一
- r/LocalLLaMA(Reddit):本地部署 LLM 的社区,很多实战经验分享
推荐关注的个人 / 团队博客:
- Tri Dao 的论文和博客(FlashAttention 作者)
- Woosuk Kwon 的技术分享(vLLM 作者)
- The AI Infra landscape 系列文章
会议和论文
不需要”读论文”成为日常习惯,但有些论文是绕不开的:
- Attention Is All You Need(2017):Transformer 的原始论文,必读
- FlashAttention 系列(Tri Dao):理解高效 attention 计算
- PagedAttention / vLLM 论文:理解现代推理引擎的核心
- GGML/GPTQ/AWQ 的量化论文:理解量化方法的原理
会议方面,MLSys 和 OSDI/SOSP 上的 ML 系统论文最值得关注。不需要亲自参加会议,论文和视频都是公开的。
16.4 Infra 工程师的日常
理论讲完了,我们来看看一个 LLM Infra 工程师实际在做什么。
一天的工作样本
这是一个比较典型的日子(以部署和维护在线推理服务为例):
早上:
- 看监控面板,检查过夜的指标是否正常——P99 延迟、GPU 利用率、错误率
- 发现某个模型的 P99 延迟从 2s 涨到了 3.5s,开始排查
- 查 Grafana 发现是凌晨更新了模型版本后,新版本的 KV Cache 配置不对
上午:
- 修复 KV Cache 配置,写测试验证,部署到 staging 环境
- 和 ML 团队开会,他们要上线一个新的 72B 模型,讨论需要多少张 GPU、用什么并行策略
- 写一个 capacity planning 文档:按预期 QPS 估算需要的 GPU 数量
下午:
- Review 同事的 PR:一个新的请求限流策略
- 做性能测试:对比 FP8 和 INT8 量化在 H100 上的吞吐差异
- 更新内部的部署 runbook
晚上(如果 on-call):
- 收到告警:某个 region 的 GPU 节点 OOM 了
- 紧急扩容 + 排查原因(某个用户发了超长的 prompt)
需要关注的核心指标
| 指标 | 含义 | 健康范围 |
|---|---|---|
| TTFT P50/P99 | 首 token 延迟 | P99 < 2s |
| TPOT P50/P99 | 每 token 生成延迟 | P50 < 50ms |
| GPU Utilization | GPU 计算利用率 | 60-85% |
| GPU Memory Usage | 显存使用率 | < 90%(留 buffer) |
| Request Error Rate | 请求错误率 | < 0.1% |
| Queue Depth | 排队等待的请求数 | 不持续增长 |
| Throughput (tok/s) | 每秒生成 token 数 | 取决于 SLA |
常见的 on-call 问题
按频率排列:
- OOM(Out of Memory):最常见。通常是异常长的输入、图片 token 过多、或 batch size 配置不当。
- 延迟飙升:可能是 GPU 过热降频、某个请求卡住了、或者模型权重加载出了问题。
- GPU 掉卡:物理层面的硬件故障,尤其在大规模集群中概率不低。需要自动检测和自动迁移。
- 模型加载失败:新版本的模型权重下载不完整、格式不兼容、显存不够装不下。
- 流量突增:某个下游服务突然增加了请求量,需要快速扩容或限流。
与其他团队的协作
LLM Infra 工程师是一个”连接器”角色:
- 与 ML 研究员:他们训练模型,你负责把模型跑快。你需要理解他们的需求(“这个模型需要 BF16”),他们需要理解你的约束(“线上只有 A100 40GB”)。
- 与产品团队:他们定义 SLA(“P99 延迟不能超过 3 秒”),你评估可行性和成本。
- 与平台团队:K8s 集群管理、GPU 调度、网络配置——这些通常由平台团队负责,你需要和他们紧密配合。
- 与安全团队:模型权重的访问控制、推理日志的隐私合规。
16.5 写在最后
写这本书的初衷很简单:2024 年我开始转做 LLM Infra 时,发现中文社区缺少一本系统性的学习资料。关于 prompt engineering 和 Agent 开发的文章遍地都是,但”怎么让模型跑得快、跑得稳、跑得省钱”这件事,要么是零散的博客文章,要么是假设你已经有 ML 背景的论文。
对于从前端/全栈转过来的工程师来说,最大的心理障碍不是 CUDA 或 PyTorch 本身,而是”我没有 ML 背景,能做这个吗?“。答案是:绝对能。
LLM Infra 的核心是系统工程——理解计算和 I/O 的瓶颈、做好资源调度、保证服务可靠性。这些能力和你之前做 Web 服务、微服务、CI/CD 的经验是相通的。GPU 编程和模型原理是需要新学的部分,但只要你有系统工程的直觉,学习速度会比你预期的快得多。
几点最后的建议:
这个领域的机会窗口仍然很大。 2025-2026 年,几乎所有科技公司都在扩张 AI Infra 团队。有能力部署和优化 LLM 的工程师供不应求。这个窗口不会永远开着,但至少未来两三年,需求只会增加不会减少。
动手比什么都重要。 看完这本书,不要觉得”我还需要再学点什么”。打开一个终端,pip install vllm,跑一个模型。遇到问题,查 issue、问社区、读代码。每解决一个实际问题,你的理解就会深一层。
从应用到基础设施不是终点。 当你能理解模型是怎么从 GPU 上一个 token 一个 token 蹦出来的,当你能看着 CUDA kernel 的 profiling 结果说出”瓶颈在 memory bandwidth”的时候,你看到的不是终点——而是一个新世界的入口。从这里出发,你可以往 GPU 架构、编译器优化、分布式系统等更多方向延伸。
技术的世界没有终点,只有不断打开的新大门。
祝你路上顺利。
全书完。