如何成为一名 LLM 算法工程师
从基础、Transformer、RAG、微调、偏好优化到推理部署的 LLM 算法工程师学习路线
如何成为一名 LLM 算法工程师
这篇文章记录如何规划 LLM 算法工程师的学习路径,也希望给同样在入门和进阶的人一个可复用的参考。
不停留在“会调用大模型 API”这个层面,也不想只读论文、看概念,却没有可以复现和交付的东西。目标是逐步建立一套能落地的 LLM 算法能力:理解模型机制,能处理和构造数据,能做训练与后训练实验,能搭建可评估的 RAG/Agent 系统,也能把模型用可观测、可控成本的方式部署到业务场景里。
这条路线会按“先跑通、再理解、再优化、最后交付”的节奏推进。每个阶段都会留下明确产出,避免学习变成碎片化收藏。
目标画像
LLM 算法工程师最终需要具备四层能力:
| 能力层 | 我要回答的问题 | 阶段产出 |
|---|---|---|
| 基础层 | 我能否稳定训练、调试、复现实验? | PyTorch 训练循环、实验记录、误差分析 |
| 模型层 | 我是否理解 Transformer、生成、微调和对齐? | mini Transformer、SFT/LoRA/DPO 实验报告 |
| 系统层 | 我能否把模型接入数据、工具、检索和评估? | RAG 服务、评估集、可观测 trace |
| 交付层 | 我能否解释成本、延迟、效果和风险? | benchmark、上线方案、模型卡、复盘文档 |
四层交替推进。只学理论会缺少工程判断,只堆框架会很难定位效果问题,只追大模型新闻会缺少可复用的基本功。
方向选择
LLM 算法岗位有很多分支,需要先确定主线,再补齐旁支。
| 方向 | 我为什么关注 | 重点能力 | 我可以做的项目 |
|---|---|---|---|
| LLM 应用算法 | 最容易和真实业务结合,也最适合快速形成作品 | Prompt、RAG、Agent、评估、业务闭环 | 企业知识库问答、智能客服、BI Agent |
| 模型微调与后训练 | 能建立更深的算法壁垒,避免只会调 API | 数据构造、SFT、LoRA、DPO/GRPO、训练诊断 | 领域指令模型、偏好优化实验 |
| 推理部署与性能优化 | 私有化部署和成本控制是企业场景的关键问题 | vLLM、量化、批处理、KV cache、吞吐延迟权衡 | 私有化模型服务、推理网关 |
| 研究复现与评测 | 训练我判断新方法是否真的有效 | paper reading、benchmark、ablation、误差归因 | 论文复现、模型能力评估 |
当前的主线会先放在“LLM 应用算法 + 评估”上,因为它最容易形成闭环;第二阶段再深入“微调与后训练”;如果后续有明确私有化部署需求,会把“推理部署”作为差异化能力继续加强。
Milestone 进度看板
这是后续持续更新学习进度的主表。每完成一个 milestone,不只勾选状态,还要补上证据:代码仓库、实验截图、指标表、博客文章或复盘结论。
| Milestone | 建议周期 | 状态 | 完成度 | 验收产出 | 证据链接 / 笔记 |
|---|---|---|---|---|---|
| M0:定位与环境基线 | 第 1 周 | [ ] 未开始 [x] 进行中 [ ] 完成 | 10% | 能在本机或云 GPU 跑通一个开源 LLM 推理样例 | 当前已完成学习规划 |
| M1:Python、数学与 PyTorch 基础 | 第 2-4 周 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 独立写出训练循环,并解释 loss、梯度、优化器和过拟合 | |
| M2:NLP 与 Transformer 基础 | 第 5-8 周 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 实现一个 mini decoder-only Transformer 或完成逐行阅读笔记 | |
| M3:LLM 推理、Prompt 与工具调用 | 第 9-10 周 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 建立一套 prompt 测试集,能稳定输出结构化结果 | |
| M4:RAG 与评估体系 | 第 11-14 周 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 做出一个带 retrieval/generation eval 的知识库问答系统 | |
| M5:SFT、PEFT 与数据工程 | 第 15-19 周 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 使用 LoRA/QLoRA 完成一次领域微调并写实验报告 | |
| M6:偏好优化与后训练 | 第 20-23 周 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 完成 DPO 或 GRPO toy experiment,说明偏好数据如何影响输出 | |
| M7:推理服务与性能优化 | 第 24-27 周 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 部署 OpenAI-compatible LLM 服务并完成吞吐、延迟、成本 benchmark | |
| M8:作品集与面试闭环 | 持续进行 | [ ] 未开始 [ ] 进行中 [ ] 完成 | 0% | 形成 3-5 个可讲清楚 trade-off 的项目和文章 |
M0:定位与环境基线
这个阶段的目标不是一开始就训练大模型,而是先建立可复现实验环境。只要环境和记录方式不稳定,后面的训练、评估和复盘都会变得很混乱。
需要掌握
- Python 环境管理:
uv、conda或venv任选其一,但要能固定依赖。 - 基础工具:Git、Linux shell、Jupyter、VS Code、CUDA/MPS 基本排障。
- LLM 基础库:
torch、transformers、datasets、accelerate、peft、trl。 - 推理入口:本地小模型、云端 API、OpenAI-compatible server 至少跑通一种。
验收清单
- 创建一个专门的
llm-learning仓库。 - 固定 Python 版本和依赖文件。
- 跑通一个 tokenizer 示例,解释 token、context window、special tokens。
- 跑通一个小模型生成示例,记录输入、输出、耗时、显存或内存占用。
- 写一篇环境搭建和踩坑记录。
目录规划
llm-learning/
├── README.md
├── env/
├── notebooks/
├── experiments/
├── evals/
└── notes/
M1:Python、数学与 PyTorch 基础
这一阶段不追求“知道很多模型名字”,而是把训练过程拆开看清楚。以后遇到 loss 不降、显存溢出、数据泄漏、过拟合这些问题时,需要能自己定位,而不是只换框架或换模型。
需要掌握
- Python 数据处理:迭代器、类型标注、日志、配置、单元测试。
- 数学基础:线性代数、概率统计、信息论、微积分中与梯度相关的部分。
- 机器学习基础:训练/验证/测试拆分,偏差方差,正则化,交叉熵,指标选择。
- PyTorch 基础:Tensor、autograd、
nn.Module、optimizer、scheduler、DataLoader、混合精度。
验收清单
- 用 PyTorch 写一个完整训练循环,不依赖高级 trainer。
- 画出训练集和验证集 loss 曲线,并解释是否过拟合。
- 实现 early stopping、checkpoint、resume training。
- 对同一模型至少做 3 次学习率或 batch size 对比实验。
- 写一份“训练异常排查清单”:loss 不降、梯度爆炸、显存溢出、数据泄漏。
练习安排
- 用 sklearn 或 PyTorch 训练一个文本分类 baseline。
- 用纯 PyTorch 复现一个小型语言模型训练循环。
- 把实验配置、随机种子、指标和模型文件统一记录下来。
M2:NLP 与 Transformer 基础
Transformer 是 LLM 的核心抽象。这个阶段不希望只停留在“Self-Attention 很重要”,而是要能解释每个张量形状如何变化,以及训练和生成阶段的差异。
需要掌握
- NLP 基础:分词、词向量、语言模型、序列标注、文本分类、问答。
- Tokenization:BPE、WordPiece、Unigram、chat template、特殊 token。
- Transformer:embedding、positional encoding、multi-head attention、FFN、LayerNorm、residual。
- Decoder-only LLM:causal mask、next-token prediction、KV cache、generation decoding。
- 生成策略:greedy、beam search、temperature、top-k、top-p、repetition penalty。
验收清单
- 画出 decoder-only Transformer 的数据流。
- 手写 scaled dot-product attention,并验证输入输出 shape。
- 解释 causal mask 为什么训练时并行、生成时自回归。
- 实现一个 mini Transformer language model,哪怕只在小语料上训练。
- 阅读并整理 Transformer、RAG、LoRA、DPO 相关论文笔记。
阅读顺序
- 先读课程讲义或教程,建立概念图。
- 再读论文摘要、方法图和实验设置。
- 最后复现最小可运行版本,不一开始追求完整训练规模。
M3:LLM 推理、Prompt 与工具调用
这个阶段会把 Prompt 当成可测试的工程接口,而不是凭感觉写提示词。要学会把任务定义、上下文、约束、输出格式和评估标准说清楚。
需要掌握
- Chat message 结构:system、user、assistant、tool。
- 输出控制:JSON schema、结构化输出、函数调用、错误重试。
- Prompt 设计:任务说明、少样本示例、反例、边界条件、引用上下文。
- 推理参数:temperature、top-p、max tokens、stop、seed。
- 评估方式:黄金集、人工评分、LLM-as-judge、规则断言、回归测试。
验收清单
- 为一个真实任务建立 30-100 条测试输入。
- 为输出定义可机器检查的 schema。
- 比较至少 3 版 prompt,并记录准确率、稳定性和失败样例。
- 加入工具调用或函数调用,处理调用失败和空结果。
- 写出“什么时候该 prompt,什么时候该 RAG,什么时候该微调”的判断规则。
判断规则
| 问题类型 | 我会优先选择 | 原因 |
|---|---|---|
| 输出格式不稳定 | 结构化输出 / 函数调用 | 我先约束接口,不急着训练 |
| 缺少私有知识 | RAG | 知识可更新,成本低于微调 |
| 固定风格或固定流程 | Prompt + eval | 快速迭代,容易回归测试 |
| 领域术语和输出习惯长期稳定 | SFT / LoRA | 让模型学习模式,而不是每次塞长 prompt |
| 人类偏好难以用规则描述 | DPO / RLHF / GRPO | 用偏好数据优化排序或行为 |
M4:RAG 与评估体系
RAG 是最想先做出闭环的方向。它的难点不是“把文档放进向量库”,而是让检索、重排、生成和评估能互相校验。没有评估的 RAG 很容易变成“看起来能答,实际上不可控”的系统。
需要掌握
- 文档处理:解析、清洗、切块、去重、metadata、版本管理。
- 向量检索:embedding、相似度、召回率、top-k、hybrid search。
- 重排:cross encoder reranker、规则 rerank、业务字段加权。
- 生成:上下文压缩、引用来源、拒答策略、答案格式控制。
- 评估:retrieval recall、faithfulness、answer correctness、latency、成本。
验收清单
- 选一个知识库,例如 Obsidian、项目文档或部署文档。
- 构造至少 50 条问题,标注答案来源文档。
- 分别评估 chunk size、top-k、embedding model、reranker 对结果的影响。
- 输出每次回答引用的来源片段。
- 建立失败样例分类:没召回、召回错、上下文冲突、模型幻觉、格式错误。
项目设想
先做一个“Obsidian 知识库问答”项目:
- 读取 Markdown 文档,保留标题层级和路径 metadata。
- 将内容切块并写入 FAISS、Milvus 或 pgvector。
- 对每个问题返回答案、引用段落和置信度。
- 使用固定评估集比较不同切块和检索策略。
- 把失败样例写回笔记,形成下一轮优化任务。
M5:SFT、PEFT 与数据工程
进入微调阶段后,要提醒自己:微调的核心不是把训练命令跑起来,而是理解数据为什么能改变模型行为。多数微调失败不是算法失败,而是数据定义、格式、分布和评估出了问题。
需要掌握
- 数据格式:instruction、input、output、conversation、chat template。
- 数据质量:去重、清洗、长度分布、标签一致性、泄漏检查。
- SFT:teacher forcing、loss mask、packing、learning rate、warmup、checkpoint。
- PEFT:LoRA、QLoRA、rank、alpha、target modules、merge。
- 实验诊断:训练 loss、验证 loss、样例输出、灾难性遗忘、过拟合。
验收清单
- 构造一个 500-5000 条的领域指令数据集。
- 写数据检查脚本,统计长度、空值、重复、异常标签。
- 使用 LoRA/QLoRA 完成一次 SFT。
- 设计 baseline:原始模型、prompt-only、SFT 模型对比。
- 写实验报告,包含配置、指标、样例、失败分析和下一步计划。
实验报告模板
| 项目 | 我要记录的内容 |
|---|---|
| 目标 | 这次微调希望改善什么行为 |
| 数据 | 数据来源、规模、格式、清洗规则 |
| 模型 | base model、上下文长度、tokenizer |
| 训练 | batch size、learning rate、epoch、LoRA 参数 |
| 评估 | 自动指标、人工评分、失败样例 |
| 结论 | 是否值得继续扩大数据或训练规模 |
M6:偏好优化与后训练
这个阶段会学习如何让模型更符合偏好,而不是简单学会答案。它通常用于改善风格、安全性、帮助性、拒答边界、推理过程或多候选答案排序。
需要掌握
- 偏好数据:chosen/rejected、pairwise ranking、rubric、标注一致性。
- Reward modeling:奖励模型目标、过优化风险、reward hacking。
- DPO:直接用偏好对优化策略模型,工程上比完整 RLHF 更容易入门。
- GRPO/RLHF:理解 policy、reward、advantage、KL 约束、采样成本。
- 安全与边界:拒答、敏感问题、越权工具调用、幻觉控制。
验收清单
- 从一个任务中采集至少 200 组 chosen/rejected 样例。
- 定义偏好标注规则,并记录难判样例。
- 跑通 DPO 或 GRPO 的最小实验。
- 比较 SFT 模型与偏好优化模型的输出差异。
- 写出偏好优化带来的收益、代价和风险。
需要注意
偏好优化不适合拿来修复所有问题。如果模型缺少知识,优先做 RAG;如果输出格式不稳定,优先做结构化输出;如果领域任务样例不足,优先补 SFT 数据;只有当“多个可行答案之间的偏好”本身很重要时,再考虑 DPO、RLHF 或 GRPO。
M7:推理服务与性能优化
模型效果只是上线的一半。真实业务还会关心吞吐、首 token 延迟、总延迟、显存、并发、成本、稳定性和降级策略。这个阶段要从“模型能跑”推进到“服务可用”。
需要掌握
- 推理引擎:vLLM、SGLang、TGI、llama.cpp 的定位和差异。
- 性能概念:prefill、decode、KV cache、continuous batching、tensor parallel。
- 压缩优化:量化、蒸馏、speculative decoding、上下文压缩。
- 服务接口:OpenAI-compatible API、鉴权、限流、超时、重试。
- 可观测性:请求日志、trace、token 用量、延迟分位数、错误分类。
验收清单
- 使用 vLLM 或同类引擎部署一个 OpenAI-compatible endpoint。
- 对不同并发、输入长度、输出长度做 benchmark。
- 记录 TTFT、TPOT、吞吐、显存占用和错误率。
- 设计限流、超时、fallback 和日志脱敏策略。
- 写一份“模型上线前检查清单”。
Benchmark 记录表
| 模型 | 引擎 | 并发 | 输入 tokens | 输出 tokens | TTFT | 总延迟 P50/P95 | 吞吐 tokens/s | 显存 | 备注 |
|---|---|---|---|---|---|---|---|---|---|
M8:作品集与面试闭环
作品集不需要堆很多 demo。希望每个项目都能讲清楚“问题、方案、指标、失败、取舍”。如果一个项目只能演示,不能解释取舍,它对长期成长的帮助就有限。
作品集规划
| 项目 | 我想展示的能力 | 最低验收标准 |
|---|---|---|
| mini Transformer 复现 | 模型基础 | 能解释 attention、mask、loss 和生成过程 |
| RAG 知识库问答 | 应用算法 | 有评估集、引用、失败分类和优化记录 |
| 领域 LoRA 微调 | 后训练入门 | 有数据报告、baseline 对比和误差分析 |
| 偏好优化实验 | 对齐理解 | 有 chosen/rejected 数据和 DPO/GRPO 对比 |
| vLLM 推理服务 | 工程交付 | 有 benchmark、限流、日志和部署说明 |
需要能回答的问题
- Transformer 中 Q/K/V 的作用是什么?为什么需要 multi-head?
- causal mask 解决什么问题?训练和生成阶段有什么不同?
- RAG 中 chunk size、top-k、reranker 如何影响召回和幻觉?
- 什么场景该用 prompt,什么场景该用 RAG,什么场景才需要微调?
- LoRA 的 rank、alpha、target modules 分别影响什么?
- SFT 后效果变差,会如何排查数据、训练和评估问题?
- DPO 和 RLHF 的核心区别是什么?
- vLLM 为什么能提升吞吐?KV cache 对显存有什么影响?
- 如何设计一个 LLM 应用的离线评估和线上监控?
每周学习节奏
把每周学习固定成四类动作,避免只输入不输出。
| 动作 | 时间占比 | 执行要求 |
|---|---|---|
| 学概念 | 25% | 课程、文档、论文,目标是建立概念图 |
| 写代码 | 35% | 每周至少一个可运行实验 |
| 做评估 | 25% | 用固定数据集比较不同方案 |
| 写复盘 | 15% | 记录失败样例、指标变化和下一步 |
进度日志模板
后续更新学习进度时,直接复制这个模板追加到本节下面。
### YYYY-MM-DD
- Milestone:
- 本周完成:
- 关键证据:
- 指标变化:
- 主要卡点:
- 下周计划:
2026-05-20
- Milestone:M0
- 本周完成:创建 LLM 算法工程师学习路线和 milestone 进度看板。
- 关键证据:本文档。
- 指标变化:暂无。
- 主要卡点:还需要确认每周可投入时间,并尽快搭建第一个学习仓库。
- 下周计划:搭建
llm-learning仓库,跑通 tokenizer 和小模型推理基线。
学习资料路径
下面这些资料按“先官方教程,再论文,再工程文档”的顺序使用。
| 类别 | 资料 | 使用方式 |
|---|---|---|
| 课程 | Stanford CS224N | 用来补 NLP、Transformer、LLM 评估和 Agent/RAG 基础 |
| 官方教程 | Hugging Face Transformers 文档 | 学 tokenizer、模型加载、Trainer、生成和微调 |
| 后训练 | Hugging Face TRL 文档 | 学 SFT、DPO、GRPO、Reward Modeling 等后训练方法 |
| 深度学习工程 | PyTorch Tutorials | 学训练循环、Transformer、分布式训练和性能优化 |
| Prompt/API | OpenAI Prompt Engineering Guide | 学指令、上下文、输出格式和 prompt 评估 |
| 评估 | OpenAI Evals Guide | 学如何系统化构建模型输出评估 |
| RAG 评估 | Ragas Evaluation | 学 RAG 自动评估的指标和接口 |
| 推理服务 | vLLM Online Serving | 学 OpenAI-compatible serving、并发和部署参数 |
| 论文 | Attention Is All You Need | Transformer 原始论文 |
| 论文 | Retrieval-Augmented Generation | RAG 经典论文 |
| 论文 | LoRA | PEFT 经典论文 |
| 论文 | Direct Preference Optimization | DPO 经典论文 |
总结
技术栈总结
| 组件 | 版本 | 我会用它做什么 |
|---|---|---|
| Python | 3.11 / 3.12 | 固定项目运行环境 |
| PyTorch | 当前稳定版 | 深度学习训练和推理基础 |
| Transformers | 当前稳定版 | 模型、tokenizer、Trainer 和生成接口 |
| Datasets / Accelerate | 当前稳定版 | 数据集处理和训练加速 |
| PEFT / TRL | 当前稳定版 | LoRA、SFT、DPO、GRPO 等微调与后训练 |
| FAISS / Milvus / pgvector | 任选 | RAG 向量检索 |
| Ragas / 自建 eval | 任选 | RAG 和 LLM 应用评估 |
| vLLM | 当前稳定版 | 高吞吐 LLM 推理服务 |
| LangSmith / OpenTelemetry / 自建日志 | 任选 | trace、评估和线上观测 |
核心步骤回顾
- 建立可复现实验环境,不急着训练大模型。
- 补齐 PyTorch、NLP 和 Transformer 基础。
- 用 Prompt、RAG 和 eval 做出可交付应用。
- 用 SFT、LoRA 和偏好优化提升模型行为。
- 用 vLLM、benchmark 和可观测性完成工程闭环。
下一步优化
- 确认主攻方向:应用算法、微调后训练、推理部署或研究评测。
- 创建
llm-learning仓库并补充环境说明。 - 建立第一版评估集。
- 用 Obsidian 文档做一个 RAG baseline。
- 每周更新一次 milestone 进度看板和进度日志。
更新时间: 2026-05-20
阅读时间: 18 分钟
适用场景: LLM 算法工程师学习规划、转岗准备、学习进度管理、作品集建设