内容简介
这是三张 AI 学习地图中的第一张(三张的总览与分工见《AI 全栈学习地图》)。这一张面向造模型的人——AI 算法工程师,也是从零开始的读者的入口:L0 数学、L1 工具箱、L2 经典机器学习三个系列假设读者没有 AI 基础。第二张《AI-Infra 工程师学习地图》面向为模型搭建训练与推理系统的工程师,它的 01 Python、03 PyTorch、04 Transformer 三个系列与本地图共享;第三张《AI 应用工程师学习地图》面向在模型之上做产品的 AI 应用工程师。三张地图各自独立,边界与重叠部分在每张地图的末尾说明。
“算法工程师”这个词在大模型时代的含义已经变了。十年前它指的是会推导 SVM 对偶、会调 XGBoost 参数的人;今天它指的是能读懂一篇模型论文并复现它、能为一个基座模型设计后训练配方并把它评测清楚、能判断一个结构改动值不值得付出硬件代价的人。这张地图按今天的含义组织,但不跳过昨天的基础——因为奖励模型本质上是一个分类器,数据过滤靠的是小模型打分,评测方法论来自经典机器学习。
地图回答三个问题:
一个模型从数据到上线经过哪些阶段?每个阶段需要掌握什么?按什么顺序学?1
这张地图描述的是知识结构:八层加一个横切,每层说明回答什么问题、包含哪些概念、为什么放在那个位置。每一层都已有对应的系列(共 58 篇、约 35 小时,另与 Infra 地图共享 01 / 03 / 04 三个系列),目录与配套代码在本文末尾。
| 需要什么 | 具体是什么 |
|---|---|
| 一套数学 | 线性代数、概率统计、信息论、微积分与优化——读懂公式、推导 loss 的程度 |
| 一套工具 | Python 与数据科学三剑客、PyTorch 的使用、Hugging Face 生态、实验跟踪 |
| 两代基础 | 经典机器学习的概念与评估方法;深度学习的反向传播、正则化与优化器 |
| 一类模型 | Transformer / LLM:结构、tokenization、scaling law、预训练与数据工程 |
| 一套配方 | 后训练:SFT、偏好对齐、可验证奖励的强化学习、蒸馏、评测 |
| 一层效率 | 推理侧的算法:解码策略、投机解码、量化、KV 压缩 |
| 一个扩展 | 多模态:视觉语言模型、扩散模型、语音 |
| 一种方法 | 实验方法论:假设、消融、可复现、读论文与复现 |
两张图:模型生命周期与学习路径
理解这个领域需要两张图(三张地图都这样组织):一张描述模型怎么被造出来,一张描述人怎么学会造它。两者的顺序不同。
第一张图:模型生命周期视图
一个大模型从数据到上线的流程,以及每个阶段产出什么、算法工程师在其中做什么决定:
%%{init: {"flowchart": {"wrappingWidth": 300}}}%%
%% 图:模型生命周期视图:从数据工程到部署上线,两个回边是主循环与外循环
flowchart TB
DATA["`**数据工程**
采集 · 清洗 · 去重 · 质量过滤
配比 · 合成数据 · 分词器训练`"]
PRE["`**预训练**
结构选择 · scaling law
训练配方 · 稳定性 · 长上下文扩展`"]
SFT["`**监督微调 SFT**
指令数据构造 · chat template
全量 / PEFT(LoRA 一族)`"]
RL["`**偏好对齐与强化学习**
奖励模型 · PPO / GRPO · DPO 一族
可验证奖励 · 推理模型`"]
EVAL["`**评测**
benchmark · LLM-as-judge · Arena
污染检测 · 能力分解`"]
COMP["`**压缩与高效推理(算法侧)**
量化 · 蒸馏 · 投机解码 · KV 压缩`"]
DEPLOY["`**部署与线上**
推理引擎 · 服务 · 监控
(Infra 与应用地图的范围)`"]
DATA --> PRE --> SFT --> RL --> EVAL --> COMP --> DEPLOY
EVAL -. "不达标:回到数据或配方" .-> SFT
DEPLOY -. "线上数据回流:bad case · 偏好 · 蒸馏教师" .-> DATA
classDef algo fill:#fff7e0,stroke:#c98a00,stroke-width:2px,color:#222
classDef other fill:#f7f7f7,stroke:#c8c8c8,stroke-width:1px,color:#666
class DATA,PRE,SFT,RL,EVAL,COMP algo
class DEPLOY other
两个回边是这张图的重点:评测不达标回到数据或配方,是算法工程师日常工作的主循环;线上数据回流到数据工程,是模型迭代的外循环。一个只会”跑一次训练”的人不是算法工程师;算法工程师的能力体现在这两个循环里——知道评测结果差在哪一类能力、该改数据还是改配方、改了之后怎么用最小的实验验证。
图上只有最后一格标成了 Infra 的范围,但每一格都站在 Infra 之上:数据工程要有集群与存储跑去重和过滤,预训练与 RL 要有并行训练框架、通信与容错,评测与 SFT 要有推理引擎批量出结果——这些没有画进去,是为了让图只回答”算法工程师在每个阶段做什么决定”这一个问题。边界的规则是:算法工程师决定在哪个阶段做什么(配比、配方、奖励、指标),Infra 工程师让这个决定在给定的硬件预算内跑得快、跑得稳;两者在哪些具体问题上交接,见文末「与 AI-Infra 地图的关系」一节的对照表。
这张图是生产流程,不是学习顺序。按它从”数据工程”开始学,第一天就要面对”什么数据对模型好”这个整个领域最难的问题。
第二张图:学习路径
学习路径分八层加一个横切。前四层是基础(L0–L3),任何方向都要;L4 是核心;L5 后训练是三个方向里先读的一个——L6 高效推理与 L7 多模态的两篇总纲都把它列为前置(L6 的蒸馏与”怎么评”、L7 理解线的对齐训练用的都是 L5 的方法),L5 之后 L6 与 L7 可以并行。层的顺序就是推荐的学习顺序,也是各系列的发布顺序:
%%{init: {"flowchart": {"wrappingWidth": 260}}}%%
%% 图:学习路径:L0–L7 八层加横切,紫色两处与 Infra 地图共享
flowchart TB
L0["`**L0 数学**
8 篇 ≈ 3h`"]
L1["`**L1 工具箱**
6 篇 ≈ 2.5h`"]
D["`**深入篇(共享,可略读)**
01 Python 9 篇 ≈ 14h
03 PyTorch 10 篇 ≈ 15h`"]
L2["`**L2 经典机器学习**
10 篇 ≈ 4h`"]
L3["`**L3 深度学习基础**
6 篇 ≈ 3h`"]
L4["`**L4 LLM 核心**
04 系列 13 篇 ≈ 18h(共享)
预训练 5 篇 ≈ 5h`"]
L5["`**L5 后训练**
8 篇 ≈ 6h`"]
H["`**深入篇:读 Hugging Face 源码**
4 篇 ≈ 3.2h`"]
LR["`**专题:LoRA**
3 篇 ≈ 3h`"]
L6["`**L6 高效推理与压缩**
6 篇 ≈ 4h`"]
L7["`**L7 多模态**
9 篇 ≈ 7h`"]
X["`**横切:实验方法论**
1 篇 ≈ 1h,任何阶段`"]
L0 --> L1 --> L2 --> L3 --> L4 --> L5
L1 -. 深入 .-> D
L5 -. 深入 .-> H
L5 -. 专题 .-> LR
L5 --> L6
L5 --> L7
classDef algo fill:#fff7e0,stroke:#c98a00,stroke-width:1px,color:#222
classDef shared fill:#f3eefc,stroke:#8a6bd1,stroke-width:1px,color:#222
classDef cross fill:#f7f7f7,stroke:#999,stroke-width:1px,color:#222
class L0,L1,L2,L3,L5,L6,L7,H,LR algo
class D,L4 shared
class X cross
时长按每分钟 450 字估算通读一遍的量,不含动手。紫色的两处与 Infra 地图共享:深入篇讲 Python 与 PyTorch 的机制与实现,第一遍读各总纲的「第一遍怎么读」即可;04 系列是两张地图的交点,算法读者必读。
| 层 | 主题 | 回答的问题 | 文章 | 时长 |
|---|---|---|---|---|
| L0 | 数学基础 | 公式里的每个符号是什么意思?loss 为什么这样写? | 系列(8 篇) | 3h |
| L1 | 编程与工具 | 怎么把一个想法变成一次能跑的实验? | 系列(6 篇) + 深入篇 01 Python、03 PyTorch(共享) | 2.5h(+ 14h + 15h) |
| L2 | 机器学习基础 | 什么是学习?怎么知道模型学会了而不是背下来了? | 系列(10 篇) | 4h |
| L3 | 深度学习基础 | 梯度怎么流?为什么深了就难训?CNN 与 RNN 各解决了什么、留下了什么? | 系列(6 篇) | 3h |
| L4 | LLM 核心 | Transformer 长什么样、怎么写出来、为什么演进成今天的样子?tokenizer、scaling law 与预训练数据各决定了什么? | 04 系列(13 篇,共享) + 预训练系列(5 篇) | 11h + 5h |
| L5 | 后训练 | 一个基座模型怎么变成一个能对话、会推理、符合偏好的模型?怎么证明它变好了? | 系列(8 篇) + 深入篇 读 Hugging Face 源码(4 篇,L4–L5) | 6h(+ 3.2h) |
| L6 | 高效推理与压缩(算法侧) | 不改硬件,怎么让同一个模型更快、更小、更便宜? | 系列(6 篇) | 4h |
| L7 | 多模态 | 图片、视频、语音怎么进入语言模型?图像生成为什么是另一套数学? | 系列(9 篇) | 7h |
| 横切 | 实验方法论 | 怎么用有限的算力得出可信的结论? | 导读 | 1h |
| 选修 | 系统内部 | 应用层 | 推理引擎与训练框架怎么实现(→ Infra 地图)| Agent、RAG 怎么搭(→ 应用地图) | — | — |
两张图的叠加
| 生命周期阶段 | 主要用到的层 |
|---|---|
| 数据工程 | L4(tokenization、数据配比)· L2(用分类器过滤数据)· 横切 |
| 预训练 | L4 · L3(优化器、稳定性)· L0(scaling law 的拟合) |
| SFT | L5 · L1(Hugging Face 生态) |
| 偏好对齐与 RL | L5 · L0(概率、KL、策略梯度)· L2(奖励模型是分类器) |
| 评测 | L5 · L2(评估方法论)· 横切 |
| 压缩与高效推理 | L6 · L0(量化误差、投机解码的分布等式) |
| 多模态 | L7 · L3(CNN、ViT)· L4 |
逐层说明
L0 数学基础
公式里的每个符号是什么意思?loss 为什么这样写?2
系列:《算法工程师的数学:读公式不卡壳的最小集》(八篇)——形状与 FLOPs · 内积与范数 · 正交与 SVD · 概率入门 · MLE 到交叉熵 · 熵与 KL 到 DPO · 梯度与策略梯度 · 统计推断与 scaling law。面向从零开始的读者,每篇从定义讲起、代真实模型算出数字。
目标不是学完数学系的课程,而是读公式不卡壳、推导 loss 不出错。四个分支各自在后面哪里用到,决定了该学到什么深度:
| 分支 | 概念 | 在哪里用到 | 在哪一篇 |
|---|---|---|---|
| 线性代数 | 矩阵乘法与形状规则、向量空间与内积、范数(L1 / L2 / Frobenius)与余弦相似度、特征值与 SVD、张量 |
|
第一、二、三篇 |
| 概率与统计 | 随机变量、条件概率、贝叶斯公式、联合与边缘分布、伯努利 / 二项 / 高斯 / 均匀分布、最大似然 MLE 与最大后验 MAP、置信区间、概率图模型的基本记号 |
|
第四、五、八篇 |
| 信息论 | 熵、交叉熵、KL 散度、互信息 |
|
第六篇 |
| 微积分与优化 | 导数、偏导、梯度、链式法则、Jacobian;凸性、梯度下降、随机梯度下降、学习率、鞍点 |
|
第七篇 |
优化算法里的 Momentum、Adam / AdamW 放在 L3 深度学习里讲,因为它们的设计动机(梯度噪声、稀疏梯度、权重衰减与 L2 的区别)要到训练神经网络时才看得见。
L1 编程与工具
怎么把一个想法变成一次能跑的实验?3
系列:《算法工程师的工具箱:从一个想法到一次能跑的实验》(六篇)——Python 使用层 · 数据科学三剑客 · PyTorch 使用层上下 · Hugging Face 生态 · GPU 直觉与实验管理,每篇配一个 CPU 可跑的脚本,讲的都是”用法”。Infra 地图的 01 Python 与 03 PyTorch 两个系列是本层的深入篇(机制与实现),两张地图共享,紧接本系列发布。
| 工具 | 掌握到什么程度 | 说明 | 在哪一篇 |
|---|---|---|---|
| Python(使用层) | 训练代码里的协议方法(__getitem__、__call__)、生成器、装饰器、上下文管理器、**kwargs、dataclass、多进程与 GIL、读 traceback |
会读别人的训练代码、能流式过一遍语料、能把实验写成脚本即可;机制在深入篇 Infra 地图 01 系列(两张地图共享) | 第一篇 |
| NumPy | ndarray、broadcasting、矩阵运算、轴与 reshape | PyTorch Tensor 的语义与它一致,先在 NumPy 上建立”形状直觉” | 第二篇 |
| Pandas / Polars | DataFrame、清洗、聚合、join | 数据工程与评测结果分析的日常工具 | 第二篇 |
| Matplotlib / Seaborn | 画 loss 曲线、分布、消融对比图 | 看曲线是判断训练是否正常的第一手段 | 第二篇 |
| PyTorch(使用层) | Tensor、Autograd、nn.Module、Dataset / DataLoader、Optimizer、AMP 混合精度、DDP / FSDP 的启用方式 |
会用、知道每个 API 在做什么;深入篇是 Infra 地图 03 系列(两张地图共享) | 第三、四篇 |
| Hugging Face 生态 | transformers、datasets、tokenizers、peft、trl、accelerate |
当前算法工作的事实标准工具链;读它们的源码是学后训练最快的路 | 第五篇 |
| GPU 直觉 | GPU 有算力与带宽两个上限、显存分几块(权重 / 激活 / 优化器状态 / KV)、为什么 batch 大才快、CUDA kernel 与 stream 是什么 | 能看懂 profiler 输出、能解释 OOM 的来源即可;写 kernel 属于 Infra 地图 05 | 第六篇 |
| 实验工具 |
|
实验方法论(横切)的物质基础 | 第六篇 |
L2 机器学习基础
什么是学习?怎么知道模型学会了而不是背下来了?4
系列:《LLM 时代的经典机器学习:只讲它在哪里重现》(十篇)——什么是学习 · 线性回归 · 逻辑回归与奖励模型 · 三个基础分类器 · SVM 与核方法 · 集成 · 聚类 · 降维 · MinHash 与 LSH · 评估,每个机制用十几行 NumPy 手写并画出来,对到 LLM 上的形态(benchmark 污染、reward hacking、weight decay = Ridge、attention = 核回归、奖励模型 = 逻辑回归、embedding 各向异性、去重阈值、judge 偏差);每篇另有算法的来龙去脉和一个真实数据的经典案例(加州房价、垃圾短信、MNIST、泰坦尼克、人口普查收入、RFM 客户分群、Eigenfaces、语料去重、银行营销),代码与效果数字全部实跑。
这一层在大模型时代常被跳过,但它提供的是方法论而不是具体模型。训练集 / 验证集 / 测试集的划分、过拟合与欠拟合、偏差-方差权衡、正则化、评估指标——这些概念在 LLM 上一个不少地重现:benchmark 污染就是测试集泄漏,奖励模型过拟合就是 reward hacking 的一种来源。
| 主题 | 概念 | LLM 时代为什么还需要 | 在哪一篇 |
|---|---|---|---|
| 基础概念 | 训练 / 验证 / 测试集、过拟合与欠拟合、偏差-方差、正则化、标准化 | 所有评测与配方决策的方法论来源 | 第一篇 |
| 监督学习 | 线性回归、Ridge / Lasso、逻辑回归、朴素贝叶斯、SVM、KNN、决策树、随机森林、梯度提升、XGBoost / LightGBM | 逻辑回归是奖励模型与 DPO 的数学骨架;梯度提升树仍是表格数据与数据质量打分的首选 | 第二、三、四、五、六篇 |
| 无监督学习 | K-Means、DBSCAN、PCA、embedding 聚类;MinHash / LSH 去重 | 数据去重与多样性分析、embedding 空间的可视化 | 第七、八、九篇 |
| 特征工程 | 特征选择与抽取、缩放、编码 | 在深度学习里被”表示学习”取代,但数据工程里的质量特征仍靠它 | 第二、六篇的案例顺带(one-hot、人均量特征、取 log) |
| 评估 |
|
评测集怎么划、怎么给置信区间、A/B 差异是否显著 | 第十篇 |
| 工具 | scikit-learn | 快速训练一个数据过滤器、一个质量分类器 | 每篇 |
学到”能解释每个概念、能用 scikit-learn 跑通一个分类任务”即可,不需要手推 SVM 对偶。
L3 深度学习基础
梯度怎么流?为什么深了就难训?CNN 与 RNN 各解决了什么、留下了什么?5
系列:《深度学习基础:从反向传播到残差》(六篇)——反向传播 · 初始化 / 归一化 / 残差 · 优化器 · 正则化与泛化 · CNN 到 ViT · RNN 到 attention。每篇推导 + 算账 + 一个 CPU 上能跑的实验,外加来龙去脉、一个案例(MNIST 从零、64 层 MLP、优化器扫描、double descent、复现 LeNet-5、字符级 LSTM 写莎士比亚)和原论文的结构图。
| 主题 | 概念 | 说明 | 在哪一篇 |
|---|---|---|---|
| 基本单元 | 感知机、MLP、激活函数(ReLU、GELU、SiLU / Swish)、前向传播、反向传播 | 反向传播要能手推一个两层网络;这是理解一切训练现象的前提 | 第一篇 |
| 正则化与归一化 | Dropout、weight decay、BatchNorm、LayerNorm、RMSNorm、Pre-Norm 与 Post-Norm | LayerNorm / RMSNorm 与 Pre-Norm 是 Transformer 的标准件;BatchNorm 为什么在序列模型里不好用 | 第二、四篇 |
| 优化器 | SGD、Momentum、Adam / AdamW、学习率调度(warmup、cosine、WSD)、梯度裁剪、梯度累积 | AdamW 的两个矩是每参数 8 字节状态的来源;warmup 是训练稳定性的第一道防线 | 第三篇 |
| 初始化与稳定性 | Xavier / Kaiming 初始化、梯度消失与爆炸、残差连接 | 残差连接是”深了也能训”的答案,Transformer 的每一层都靠它 | 第二篇 |
| CNN | 卷积、池化、感受野、feature map;LeNet → AlexNet → VGG → ResNet | 学到 ResNet 为止:残差是关键遗产;ViT 把卷积换成了 patch embedding,但 CNN 的直觉仍在多模态里有用 | 第五篇 |
| RNN |
|
理解 RNN 的失败才理解 attention 为什么赢:并行性与长依赖 | 第六篇 |
| 训练实践 | 混合精度(AMP)的用法、显存的四个去向、checkpoint 的保存与恢复、多卡 DDP 的启用 |
|
L1 第三篇 |
L4 LLM 核心
Transformer 长什么样、怎么写出来、为什么演进成今天的样子?tokenizer、scaling law 与预训练数据各决定了什么?6
这一层是地图的中心,也是与 Infra 地图的交点。Transformer 的结构与实现(静态线、动态线、nanoGPT 逐行、实训)、从 GPT-2 到 Llama / DeepSeek 的每一处演进(GQA / MLA、RoPE、SwiGLU、MoE、MTP)为什么发生,以及数值格式、量化与投机解码的数学,在《Transformer 与 LLM:结构、实现与算量》十三篇里已经写完——那个系列先带你手搓一个 GPT,再从”每一步算多少、读多少、存多少”的角度讲每个结构决定,正是算法工程师判断”这个结构改动值不值”所需要的账;紧接着它的《预训练:从 tokenizer 到训练配方》(五篇)用同样的算账方法覆盖本层的另一半:tokenizer、scaling law、数据工程、训练配方。这里列出本层的全部内容,并标出各在哪个系列的哪一篇:
| 主题 | 概念 | 在哪一篇 |
|---|---|---|
| NLP 基础 |
|
预训练系列第二篇:BPE / byte-level / 预分词、词表大小的账(2Vd、lm_head 占比、logits 显存)、压缩率与每字符成本、中文 / 代码 / 数字;n-gram、困惑度、词向量的一页史也在那里 |
| Transformer 结构 |
|
04 系列第一至四篇(结构、动态线、nanoGPT 实现与实训)、第五至九篇(演进) |
| Scaling law |
|
04 系列第十篇给出 \(6ND\);预训练系列第三篇:Kaplan 与 Chinchilla 的幂律与分歧、最优 N/D 的推导、推理成本纳入后的过训练、数据受限的有效 token、用小模型外推的实验设计与常见错误 |
| 预训练 |
|
|
| 经典模型 |
|
04 系列第一至四篇以 GPT-2 为实例,第五、六、八、九篇以 Llama-3 与 DeepSeek-V3 为基线;预训练系列以两者的技术报告为训练侧的对象,其第三篇有十几个模型的 D/N 对照表 |
读 04 系列时,算法工程师的收获与 Infra 工程师相反:Infra 工程师从中知道要优化什么,算法工程师从中知道自己的每个结构决定在硬件上花多少钱——GQA 的组数、MLA 的压缩维、专家的粒度、上下文长度,每一个都对应成本表上的一格。
L5 后训练
一个基座模型怎么变成一个能对话、会推理、符合偏好的模型?怎么证明它变好了?7
这是当前算法工程师工作量最集中的一层,也是变化最快的一层。对应的系列是《后训练:从 SFT 到可验证奖励》(8 篇:SFT、偏好数据与奖励模型、在线 RL、离线 RL、推理模型与 RLVR、Agent 与工具调用的 RL、蒸馏、评测),以 RLHF 三件套(策略、奖励、参考)为组织轴。按流程分五段:
| 段 | 概念 | 说明 |
|---|---|---|
| SFT |
|
LoRA 是 SFT 的默认方式,单独成专题(3 篇):低秩假设与四本账、每个旋钮的对照实验、从 adapter 到 multi-LoRA 服务;多 LoRA 服务的 kernel 与调度属于 Infra 地图 08 |
| 偏好对齐 |
|
每种方法各改了 RLHF 三件套(策略、奖励、参考)中的哪一件,是理解这一族的钥匙 |
| 推理模型与 Agent |
|
2025 年后训练的主线;RL 训练的 rollout 与训练如何共享 GPU、异步 rollout 的实现属于 Infra 地图 09 《RL 后训练基础设施》 |
| 蒸馏 | logits 级蒸馏(KL 到教师分布)、序列级 / 数据蒸馏(用教师生成 SFT 数据,R1 蒸馏小模型的做法)、on-policy 蒸馏;蒸馏与量化的组合 | 蒸馏是把大模型能力搬进小模型的主要手段,也是”线上回流”回边上的一站 |
| 评测 |
|
评测是”回到数据或配方”那条回边的起点;不会评测就不知道改什么 |
工具层:trl、OpenRLHF、verl 的使用;知道它们把 rollout(推理)与训练(反向)怎么拼起来,但实现内部属于 Infra。transformers / peft / trl 自己的源码是本层与 L4 的深入篇:《读 Hugging Face 源码》(四篇)沿工具箱第五篇的六行代码读 from_pretrained 与一次前向、generate 的循环、tokenizers 与 datasets 的两条流水线、lora.Linear 的一行与 SFT / DPO / GRPO 的 loss 各在哪几行——读完 L5 再读,每一段代码都对应本地图前面某一篇的公式或结构图。本层另有一个专题:《LoRA 专题:SFT 的默认微调方式》(三篇)——低秩假设、\(W + \frac{\alpha}{r}BA\) 的梯度与四本账、全量微调 \(\Delta W\) 的谱;\(r\) / target_modules / \(\alpha\) / lr / QLoRA / DoRA / PiSSA 的十二种配置对照;adapter 文件、合并、量化失配、多 adapter 与 multi-LoRA 服务的账——读完后训练第一篇再读。
L6 高效推理与压缩(算法侧)
不改硬件,怎么让同一个模型更快、更小、更便宜?8
系列:《高效推理与压缩(算法侧):解码、投机、量化与 KV》(六篇)——解码策略与约束生成 · 投机解码 · 训练后量化 · QAT 与量化模型的评测 · KV cache 压缩 · 剪枝与小模型配方。每篇回答”输出分布变了多少、收益区间在哪、代价是什么”。
推理优化分两半:算法侧改变模型或解码过程,系统侧改变调度与内存管理。这张地图只放前者;后者(PagedAttention、continuous batching、chunked prefill、PD 分离)是 Infra 地图 08 的主体,算法工程师只需知道它们存在、知道自己的模型结构对它们意味着什么(比如 MLA 让 KV 变小、MoE 让 batch 内的 GEMM 变碎)。
| 主题 | 概念 | 在哪一篇 |
|---|---|---|
| 解码策略 | greedy、beam search、temperature、top-k / top-p / min-p、重复惩罚、结构化输出(约束解码);采样对评测结果的影响 | L6 第一篇 |
| 投机解码 |
|
04 第七篇给出数学与收益区间;L6 第二篇讲草稿的训练与树 |
| 量化 |
|
|
| 结构级压缩 | 剪枝与结构化稀疏(2:4)、层裁剪与深度缩放、MLA 一类 KV 压缩结构、KV eviction(H2O、StreamingLLM) | 04 第三篇给出 KV 的账;L6 第五、六篇 |
| 长上下文推理 | 位置外推方法的推理侧、稀疏 attention(NSA、MoBA)、上下文压缩 | 04 第四篇;L6 第五篇 |
L7 多模态
图片、视频、语音怎么进入语言模型?图像生成为什么是另一套数学?9
系列:《多模态:从视觉编码器到扩散模型》(九篇)——视觉编码器 · VLM 结构 · VLM 训练与评测 · 语音上下两篇(从波形到 token;理解、生成与全双工)· 扩散模型上下两篇(DDPM;score / flow matching 与 CFG)· Latent diffusion 与文生图配方 · 自回归图像生成与统一模型。
多模态有两条几乎独立的线:理解(把其他模态送进 LLM)与生成(扩散模型)。前者是 LLM 的扩展,后者是另一套数学。
| 线 | 主题 | 概念 |
|---|---|---|
| CV 基础 | 任务与骨干 |
|
| 理解 | 视觉语言模型 VLM |
|
| 理解 | 语音与全模态 | ASR(Whisper 的 encoder-decoder)、TTS、语音 LLM(音频 encoder + LLM)、全模态模型(Qwen2.5-Omni、GPT-4o 一类)的统一输入输出 |
| 生成 | 扩散模型 |
|
| 生成 | 自回归生成与统一模型 | 图像 token 化(VQ-VAE)、自回归图像生成、理解与生成统一的模型 |
VLM 的成本结构——一张图等于多少 token、encoder 与 decoder 各花多少、image token 的 KV——在 04 系列第十三篇里算过;L7 系列讲这些成本背后的设计动机与训练配方。扩散模型的成本结构(无 KV cache、compute-bound、多步迭代)与 LLM 完全不同,L7 第六篇算了这笔账;它的推理系统——序列并行、跨步缓存、稀疏 attention、生成服务——在 Infra 地图的 10《扩散模型推理基础设施》。
横切:实验方法论
怎么用有限的算力得出可信的结论?10
导读:《算法工程师的实验方法论:用有限的算力得出可信的结论》——六步与六种错误、seed 方差与显著性、三个规模的外推规则、一份十七问的实验清单。
这是算法工程师区别于”会调 API 的人”的核心能力,不属于任何一层,对每一层都适用:
| 能力 | 内容 |
|---|---|
| 提假设 | 把”我觉得这样会好”变成一个可以被证伪的陈述:改什么、预期哪个指标变、变多少 |
| 小规模先行 | 用小模型、小数据做消融(ablation),一次只改一个变量;知道哪些结论能随规模外推、哪些不能(scaling law 的实验设计) |
| 控制随机性 |
|
| 记录与复现 |
|
| 读论文与复现 |
|
| 看曲线 | loss、梯度范数、学习率、评测指标随步数的曲线;能从曲线形状判断学习率过大、数据有问题、过拟合开始 |
选修
- 系统内部:推理引擎(调度、KV cache 管理、PD 分离)、训练框架(并行策略、checkpoint、容错)、GPU kernel、集合通信的实现。算法工程师用它们、不改它们;需要改的时候,走 Infra 地图。
- 应用层:Prompt 工程、RAG、工具调用、Agent 框架、评测应用效果。它们在模型之上,属于第三张地图。
- 经典 NLP 任务与其他方向:命名实体识别、句法分析等传统 NLP 任务,以及搜索、推荐、广告等有自己一套模型与评测体系的方向,不在这张地图上。
与 AI-Infra 地图的关系
两张地图有大量重叠的名词——Python、PyTorch、CUDA、Transformer、LoRA、量化、混合精度、DDP / FSDP。重叠是正常的:两类工程师面对同一个系统。分工用一条规则说清:
同一个主题,算法地图回答”为什么这样建模、效果如何”,Infra 地图回答”在硬件上花多少钱、系统怎么实现”。
| 重叠主题 | 算法地图负责 | Infra 地图负责 | Infra 系列 |
|---|---|---|---|
| Python | 会写、会读训练代码 | 语言机制、运行时、内存、C 扩展、交付 | 01 |
| PyTorch | Tensor / Autograd / Module / DataLoader / AMP / DDP 的用法 | Dispatcher、Autograd 引擎、编译、分布式通信栈的实现 | 03 |
| GPU / CUDA | 算力与带宽两个上限、显存去向、为什么 batch 大才快 | CUDA 编程模型、访存、Tensor Core、Triton、FlashAttention 的实现 | 05 |
| Transformer 结构 | 各结构的建模动机与效果 | 各结构的参数量、FLOPs、KV、通信量 | 04(共享) |
| 量化 | 选哪种方法、精度损失多大 | 字节数与收益区间、量化 kernel | 04 · 05 |
| LoRA | 微调配方、秩与目标矩阵的选择 | 参数与状态的账、多 LoRA 服务的 kernel 与调度 | 04 · 08 |
| 投机解码 | 草稿模型的训练、接受率 | 加速比的数学、引擎中的实现 | 04 · 08 |
| 混合精度 / FP8 | 用法、对训练稳定性的影响 | 格式、累加精度、数值丢失的位置 | 04 |
| 分布式训练 | DDP / FSDP 的启用、并行度对配方的影响 | 并行策略、checkpoint、容错、MFU | 03 · 07 |
| 推理系统机制 | 知道存在;自己的结构对它们意味着什么 | PagedAttention、continuous batching、chunked prefill、PD 分离 | 08 |
| RL 后训练 | 算法:奖励、目标函数、配方 | rollout 引擎与训练器的共置 / 分离 / 异步、权重同步、环境调度 | 09 |
| 数据管线 | 数据配比、质量、去重的决策 | tokenization 离线化、流式加载、打包的实现 | 07 |
| 多模态 | VLM 架构选择、对齐训练、扩散模型的数学与配方 | 理解模型:encoder 的调度与缓存、image token 的 KV、请求形态;生成模型:compute-bound 的推理、序列并行、跨步缓存、生成服务 | 04 · 08 · 10 |
一个常见的误分类:把 PagedAttention、continuous batching、chunked prefill、PD 分离归入”推理算法”。它们不是算法,是推理引擎的调度与内存管理机制,模型不知道它们的存在,输出分布也不因它们改变。算法侧的推理优化只有 L6 列出的那些——改变模型或改变解码过程的方法。
三个系列两张地图共享:01 Python 与 03 PyTorch 是本地图 L1 工具箱的深入篇(算法侧讲”用”,它们讲”为什么这样工作”与”怎么改”);04 讨论的对象——模型作为一个计算对象的成本——恰好是两类工程师对话的语言。
已有的文章与系列
| 层 | 文章 / 系列 | 篇数 |
|---|---|---|
| L0 | 算法工程师的数学:读公式不卡壳的最小集 | 8 |
| L1 | 算法工程师的工具箱:从一个想法到一次能跑的实验 | 6 |
| L1 深入 | Python 在 AI-Infra、PyTorch 深度实践(与 Infra 地图共享) | 10 + 10 |
| L2 | LLM 时代的经典机器学习:只讲它在哪里重现 | 10 |
| L3 | 深度学习基础:从反向传播到残差 | 6 |
| L4 | Transformer 与 LLM:结构、实现与算量(与 Infra 地图共享) | 13 |
| L4 | 预训练:从 tokenizer 到训练配方 | 5 |
| L5 | 后训练:从 SFT 到可验证奖励 | 8 |
| L4–L5 深入 | 读 Hugging Face 源码:从 from_pretrained 到 GRPO 的 loss | 4 |
| L5 专题 | LoRA 专题:SFT 的默认微调方式 | 3 |
| L6 | 高效推理与压缩(算法侧):解码、投机、量化与 KV | 6 |
| L7 | 多模态:从视觉编码器到扩散模型 | 9 |
| 横切 | 算法工程师的实验方法论:用有限的算力得出可信的结论 | 1 |
L0–L2 最初写成三篇导读,只回答”学到什么深度、在哪里用到、怎么检验学会了”;读者反馈对从零开始的人不够,于是展开成三个系列——每个概念从定义讲起、代真实模型算出数字、L1 / L2 配 CPU 可跑的脚本。横切是一套方法而不是一组知识,一篇长文即可。至此地图上的每一层都有了对应的系列。篇数只计正文;每个系列末尾另有一篇「系列总结与通关自测」(逐篇回顾 + 判断计算 / 跨篇综合 / 面试题三段自测),读完正文再做。
配套代码
文中引用的数字与输出由 ai-learning-labs 里的脚本跑出来,按系列 key 分目录,文章末尾的”配套代码”链接指向对应目录。本地图上有代码的系列:
| 层 | 目录 | 需要 |
|---|---|---|
| L1 | algorithm-tooling/ |
numpy、torch(CPU)、pandas、matplotlib;HF 一篇需 transformers / peft / trl 与 Qwen2.5-0.5B |
| L1 深入 | python-for-ai-infra/ |
Python 3.10+ 标准库 |
| L2 | classical-ml/ |
numpy、scikit-learn、matplotlib(第七、八篇的句向量用本地缓存的 Qwen2.5-0.5B) |
| L3 | deep-learning-foundations/ |
NumPy;CNN / RNN 两篇需 PyTorch(CPU) |
| L4 | transformer-and-llm/ |
|
| L5 | post-training/ |
PyTorch + transformers / trl / peft;MPS 或 CUDA |
| L4–L5 深入 | hf-source-reading/ |
|
| L5 专题 | lora/ |
|
L0 的推导用纸笔即可,L6、L7 与横切暂无配套代码。
这张地图上的代码不需要 GPU。 上表除 L5 之外的全部脚本在笔记本的 CPU 上就能跑完(make test 一遍几分钟),L5 的 LoRA SFT 用 Qwen2.5-0.5B,Mac 的 MPS 或一张消费级显卡即可;只有 L4 预训练系列里”真的训一个模型”的部分需要多卡,文中把那部分写成了账本而不是实验。文章里的”千卡”“H100 显存”是在算账,不是运行要求。在 IDE 里打断点、看每一步张量的形状与数值,比读十遍公式更快——反向传播、两层网络、小型 Transformer 前向、LoRA 都是可以单步跟的规模。
按目标选择路径
| 目标 | 路径 | 说明 |
|---|---|---|
| 后训练(SFT / RLHF / 推理模型) | L0 → L1 → L3 → L4 → L5 → 横切 | 当前需求最大的方向;L2 只补评估方法论 |
| 预训练与数据 | L0 → L1 → L2 → L3 → L4(重 scaling law 与数据工程)→ 横切 | 门槛最高,算力决定一切;小规模实验设计是核心能力 |
| 多模态 | L3(CNN、ViT)→ L4 → L7 → L5(多模态后训练) | 理解线与生成线可以只走一条 |
| 推理效率(算法侧) | L0 → L4 → L6 → Infra 地图 08 | 与 Infra 交界最深的方向,通常需要读两张地图 |
| 后端工程师转算法 | L1 第一、二篇(已有编程基础,第一篇讲训练代码里的 Python 协议、过一遍即可,重点补第二篇的数据科学三剑客)→ L0 → L1 其余四篇 → L2 → L3 → L4 → 任选一个方向 | 数学是最大缺口,但按需补:L1 第三篇起的训练循环要用到 L0 第五篇的交叉熵、第七篇的梯度,所以 L0 插在 L1 中间;01 / 03 深入篇按需 |
边界与说明
不在地图上的内容
- 系统实现:推理引擎、训练框架、kernel、通信、集群调度。属于 Infra 地图。
- 应用层:Prompt、RAG、Agent、编排框架、产品评测。属于应用地图。
- 搜索、推荐、广告、传统 NLP 任务:各自有独立的模型体系与评测体系,值得单独的地图。
- 理论机器学习:泛化理论、优化理论、统计学习理论的系统课程。算法工程师用它们的结论,不做它们的研究。
- 数学的系统课程:L0 只列出后面用到的部分,学到能读公式为止。
版本与时效
具体模型、benchmark 与后训练方法是这张地图上变化最快的部分:2023 年的主线是 SFT + PPO,2024 年是 DPO 一族,2025 年是可验证奖励的 RL。地图列出的是当前的主线,并会随之更新;不变的是结构——数据、预训练、后训练、评测、压缩这五段,以及”评测不达标回到数据或配方”这个循环。
关于”AI 算法工程师”
这张地图的目标是能读懂论文并复现、设计并验证一个训练配方、把结果评测清楚的工程师。研究员(提出新方法)与这条路径在 L4、L5 之后分叉:研究需要更深的数学与更多的失败实验,地图只送到分叉口。
最终目标
读完这张地图上的内容之后,面对一个基座模型和一个业务目标,读者应该能够沿着整条流水线追问下去:
| 追问 | 答案来自 |
|---|---|
| 这个模型的结构选择(GQA、MoE、上下文长度)各是为了什么?代价是什么? | L4 · 04 系列 |
| 给它 1000 条业务数据,该 SFT 还是 DPO?全量还是 LoRA? | L5 |
| 它在这个任务上”变好了”是真的吗?评测集有没有泄漏?差异显著吗? | L5 · L2 · 横切 |
| 想让它会推理,奖励从哪里来?GRPO 还是 DPO? | L5 |
| 部署时想快一倍、小一半,量化到多少位?投机解码有用吗? | L6 · 04 系列 |
| 要让它看图,encoder 选什么?一张图占多少 token? | L7 · 04 系列第十三篇 |
| 这个结论在 1B 上成立,在 70B 上还成立吗? | 横切 · L4 scaling law |
三张地图不是为了覆盖更多名词,而是为了让 AI 系统里的三类人——造模型的、跑模型的、用模型的——知道自己站在哪里、隔壁在做什么。
-
八层加一个横切。L0 数学 → L1 工具 → L2 经典机器学习 → L3 深度学习基础 → L4 Transformer / LLM(结构、tokenizer、scaling law、预训练数据)→ L5 后训练(SFT、偏好对齐、RLVR、蒸馏、评测)→ L6 高效推理与压缩(解码、投机、量化、KV)→ L7 多模态;横切是实验方法论。每层要掌握的内容见上表「需要什么」与各层概念表:数学到读公式、推 loss 不出错;工具到能把想法写成能跑的脚本;经典 ML 与深度学习要方法论与训练现象;L4 要会手搓 GPT 并算账;L5 是工作量最集中的一层。顺序就是层号——每层以上一层为前置,L4 是中心,L5 是重心;已有基础的读者可以从 L4 进入、按需回看前面各层(正文「怎么用这张地图」给了三条路线)。 ↩
-
读公式按四个分支拆:线性代数管形状、FLOPs、范数与 SVD(矩阵乘 \([m,k]\times[k,n]\to[m,n]\)、\(2mnk\) 次运算);概率统计管「语言模型是条件分布 \(p(x_t\mid x_{<t})\)」、MLE、置信区间;信息论管熵、交叉熵、KL 与困惑度 \(e^{\text{loss}}\);微积分与优化管梯度、链式法则、策略梯度。loss 之所以「这样写」,是因为它是建模假设下的最大似然:条件分布假设 + MLE 三行推出交叉熵;Bradley-Terry 偏好假设 + RLHF 目标的闭式解推出 DPO;期望回报对策略参数求导推出策略梯度。八篇正文每篇代真实模型算出数字,见《算法工程师的数学》。 ↩
-
六层工具各到「够用」的深度:Python 使用层(协议方法、生成器、装饰器、上下文管理器、多进程与 GIL、读 traceback)→ NumPy / Pandas / Matplotlib(形状直觉、错误分析、曲线)→ PyTorch 使用层(五个对象与二十行训练循环、混合精度、梯度累积、checkpoint)→ Hugging Face 生态(六个库组装一次 LoRA SFT)→ GPU 直觉(显存账:全量微调每参数 16 字节,Llama-3-8B 128.5 GB,一张 80 GB 卡放不下;LoRA 16.06 + 0.67 GB)→ 实验管理(配置、种子、跟踪、复现)。「能跑」最终是显存与算力的算术,不是对工具的熟悉程度;机制层面的深入在 Infra 地图的 01 Python 与 03 PyTorch 系列。见《算法工程师的工具箱》。 ↩
-
学习 = 从训练集学到能在没见过的数据上成立的规律,判据是训练集 / 验证集 / 测试集的划分与泛化误差,而不是训练误差。「学会了而不是背下来」看训练误差与验证误差的差距(过拟合时训练误差一路降、验证误差回升)、偏差 - 方差分解、以及测试集是否干净——LLM 上的对应物是 benchmark 污染(测试题在训练数据里 = 测试集泄漏)、奖励模型过拟合导致 reward hacking、judge 偏差 = 评估偏差。处理方法也是经典的:更多数据、正则化(RLHF 的 KL 项)、早停、集成、去重与去污染。见《LLM 时代的经典机器学习》第一篇。 ↩
-
梯度沿计算图反向、按链式法则逐层乘 Jacobian 传回:从顶层到第 \(l\) 层要连乘 \(l\) 个系数,每个系统性地偏离 1 就指数级消失或爆炸(128 层、每层 0.9 → \(0.9^{128}\approx 1.4\times 10^{-6}\))——这就是「深了难训」;三种修法是初始化(Xavier / Kaiming 让每层方差守恒)、归一化(BatchNorm / LayerNorm / RMSNorm 把激活钉回单位尺度)、残差(每层 Jacobian 变成 \(I + J_l\),多一条恒等通路)。CNN 解决了图像的平移不变性与参数共享(LeNet → ResNet),留下残差与 patch 化输入(ViT);RNN 解决了变长序列,但串行、长程依赖靠门控仍难传梯度,留下的是「用 attention 替代循环」的动机。见《深度学习基础》。 ↩
-
Transformer 是 embedding → \(L\) 层(attention 四个矩阵 + FFN + norm,残差相连)→ lm_head 的七样东西;写出来就是 nanoGPT
model.py的 330 行;演进(GQA / MLA、RoPE、SwiGLU、MoE、MTP)每一处都是在「每一步算多少、读多少、存多少」的账上做交换,主要是压 KV cache 字节数与提升每 FLOP 的效果。tokenizer 决定压缩率与每字符成本(Llama 3 词表 32K → 128K,每 token 贵 5.6% 反而省钱);scaling law 决定算力怎么分给参数与数据(Chinchilla \(D/N\approx 20\),2024 年后为推理成本「过训练」);预训练数据决定能力的上限与分布(Common Crawl 240T → 15T,去重 / 过滤 / 配比)。见《Transformer 与 LLM》与《预训练》两个系列。 ↩ -
按 RLHF 三件套(策略、奖励、参考)组织的五段流程:SFT(指令数据、chat template、loss mask、packing,全量或 LoRA)教会对话格式;偏好数据与奖励模型(Bradley-Terry、pairwise loss)把「人觉得更好」变成可微标量;在线 RL(PPO / GRPO / RLOO)或离线直接偏好优化(DPO / IPO / KTO / ORPO / SimPO)对齐偏好;可验证奖励的 RL(RLVR,DeepSeek-R1 的路径)训出一步步推导的推理模型;蒸馏把大模型的能力压进小模型。「证明变好了」靠评测:能力 benchmark(含去污染)、偏好胜率、judge 与人工一致率、给置信区间——以及看是否只是学会了讨好评测(reward hacking、长度偏好)。见《后训练:从 SFT 到可验证奖励》。 ↩
-
算法侧四条路:解码策略(greedy / 采样 / top-p / 约束解码只改输出分布与质量,不省算);投机解码(小模型起草、大模型一次验证、拒绝采样保证分布一致,收益由期望接受长度决定,decode 是 memory-bound 所以验证几个 token 与算一个几乎同价);量化(PTQ:GPTQ / AWQ / SmoothQuant / 旋转 / FP8,W4A16 省显存与带宽、W8A8 还省算力;QAT 与量化模型的评测);KV cache 压缩与剪枝 / 小模型(KV 量化、驱逐、MLA 一类结构改动,剪枝与蒸馏配方)。每一项都要回答「输出分布变了多少、收益区间在哪、代价是什么」;系统侧(PagedAttention、continuous batching、PD 分离)属于 Infra 地图 08。见《高效推理与压缩》。 ↩
-
理解线:把其他模态编码成 LLM 能读的 token——图像经 ViT 视觉编码器(CLIP / SigLIP 来源)+ connector(MLP projector、pixel-shuffle、Perceiver / Q-Former)注入 decoder,视频是帧采样 + 时间合并,语音经音频编码器离散成 token(Whisper 式 encoder-decoder、语音 LLM、全双工);对齐训练先训 connector 再全量。生成线是另一套数学:扩散模型不是预测下一个 token,而是学一个把噪声逐步去掉的过程——DDPM 的加噪 / 去噪、score / flow matching、CFG、latent diffusion——目标函数是对噪声(或速度场)的回归而不是交叉熵;自回归图像生成与统一模型是把两条线合起来的尝试。见《多模态:从视觉编码器到扩散模型》。 ↩
-
六步:先写可证伪的假设(改什么、看哪个指标、预期变多少)→ 小规模先行(125M 级消融,一次只改一个变量,知道哪些结论能随规模外推:数据质量、训练稳定性相关的能,涌现能力与绝对分数不能)→ 控制随机性(多 seed 报均值与方差,差异小于 seed 方差就不是结论)→ 记录与复现(代码、配置、数据、环境四个版本号)→ 读论文看「改了什么、和谁比、用什么评」并先复现 baseline → 看曲线(loss、梯度范数、学习率、评测指标的形状)。见《算法工程师的实验方法论》。 ↩
本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/ai-algorithm-engineer-learning-roadmap.html)的前提下,欢迎各种形式的转载、翻译或商业引用。
COMMENTS
评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。