AI学习路线图
AI Infra 与科研双修:研一一年务实学习计划与资源地图
执行摘要与假设前提
我将你的目标拆成两条必须同时闭环的能力主线:AI Infra 工程认知(分布式训练、显存优化、推理加速、profiling)与科研能力(读顶会论文、复现实验、做消融、写作与开源)。这两条线看似不同,但在大模型时代高度耦合:训练/推理系统的优化往往需要以论文思想为指导,而科研复现要想“对齐指标 + 解释差异”,离不开工程化的可复现与性能诊断工具链(Profiler、日志、版本锁定、分布式配置)。
本报告是“务实版”而非“理想版”。我明确采纳并整合了你提到的他人建议,并给出证据链与调整逻辑:
- 不死磕 Docker / CUDA:第一周只要求用 conda/pip 跑通 PyTorch(必要时 CUDA: None 先 CPU),把 GPU 容器化放到第二阶段。PyTorch 官方安装页明确写到:若不需要 CUDA,可选择 CUDA: None 并运行给出的安装命令。citeturn18search10 同时,GPU Docker 往往需要 NVIDIA Container Toolkit 且先装驱动,官方安装指南把“安装 GPU driver”列为前置条件,并提示平台支持与已知问题(例如 systemd cgroup 相关)。citeturn18search0
- 第一周数学“训练相关最小集”:只追求“能推导/能实现/能解释训练现象”,避免陷入证明细节导致挫败(第二阶段再系统补齐)。
- 二选一资源策略:每阶段只固定“主线资源 1 个 + 参考文档 1 套 + 主项目 1 个”,杜绝收藏癖。
- 微调优先于从零训练:BERT 官方仓库直接指出预训练很昂贵(4 天、4–16 Cloud TPU),但对多数研究者是“一次性成本”,下游 fine-tuning 相对便宜且更贴近常规实践。citeturn0search0 同时 Hugging Face 官方教程把核心工作流定义为“fine-tune a pretrained model”。citeturn0search1 我会把“复现”分级(L0–L3),默认以 L1/L2 为主,避免“复现幻觉”。
默认假设与可加速条件:
我默认你每周可投入 20 小时(标准强度),并有单卡 GPU(RTX 3090/4090 或等效云实例)。单卡条件下,计划重点放在:小模型/中等 batch 的训练复现、显存优化与推理系统实验(能做“趋势复现”和“工程对照”)。如果你有多卡(≥2)或可用 TPU/集群,则可以将第二阶段末尾与第三阶段的分布式实验从“理解配置 + 小规模验证”扩展到“真实吞吐/扩展效率曲线”,尤其适合验证 DDP/FSDP2/ZeRO 的规模效应;PyTorch DDP 文档强调 DDP 在单机多卡上显著快于 DataParallel 且建议每 GPU 一个进程。citeturn0search2
分阶段路线与评估体系
我将一年划分为三阶段(符合你的定义),并让每阶段都产出可交付物(repo/报告/复现记录/实验图表),避免“学一堆但拿不出东西”。
三阶段总览表
| 阶段 | 建议时长范围 | 默认每周投入 | 阶段目标 | 必学主题(P0/P1/P2) | 里程碑任务与可交付物样例 | 评估方法与通过标准 |
|---|---|---|---|---|---|---|
| 第一阶段:充分认识 | 6–10 周 | 20h/w | 建立“训练闭环 + 误差分析 + 最小 Infra 直觉”,能独立跑通且解释一个 baseline | P0:PyTorch 训练闭环;反向传播直觉;实验记录与可复现;基础 profiling;Transformer 基础概念。P1:混合精度基本用法;基础 CNN/CV 或 NLP 二选一。P2:Docker 入门(只看概念,先不强制落地) | 交付物:①一个端到端训练仓库(README + 环境 + 命令 + 曲线 + 错误分析);②一份“训练故障排查笔记”;③一份 2 页论文阅读模板笔记(按三遍阅读法结构)。PyTorch “60min blitz”可作为训练闭环快速入口。citeturn18search3 | 通过标准:1)别人按 README 能复跑出同趋势曲线;2)能解释至少 3 种训练不稳定来源并给出证据;3)能用 profiler 找到最耗时算子/数据瓶颈(结论 + 截图或 trace)。PyTorch Profiler 说明其用于收集训练/推理性能指标并可视化 trace。citeturn3search2 |
| 第二阶段:能读论文并复现/调试代码 | 16–20 周 | 20h/w | 形成“论文→复现→对齐→差异分析”的标准流程;开始系统掌握分布式/显存优化/推理关键模块 | P0:三遍阅读法;复现模板化;随机性控制;DDP/FSDP2 基本原理;AMP + checkpointing;FlashAttention/KV cache 认知;ONNX/推理框架入门。P1:ZeRO 分阶段;张量并行/流水线并行概念;量化(INT8/4-bit)与评测。P2:更深 PyTorch internals(按需) | 交付物:①复现报告 ×2(各含:环境、数据、指标、差异归因、消融);②Infra 小实验合集(DDP vs 单卡;AMP/ckpt 显存曲线;FlashAttn 前后吞吐对比;vLLM/TensorRT-LLM 推理对比);③可复现项目模板仓库(configs/logs/seed/脚本)。FSDP2 教程明确“FSDP1 已弃用”。citeturn4search3 | 通过标准:1)至少 2 篇论文达到 L1/L2 复现等级(见后文分级);2)能用 DDP/FSDP2/ZeRO 中至少两种技术把同模型“能训/训得更大/更快”并解释原因;FSDP 教程解释其分片参数/梯度/优化器状态以节省显存。citeturn0search3 3)能用 profiler + Nsight Systems 定位瓶颈并提出可验证优化。citeturn3search3 |
| 第三阶段:能做实验并撰写论文 | 18–22 周 | 20h/w | 从复现走向研究:提出问题、设计对照/消融、写作与开源,形成可投稿工作(workshop/short paper 优先) | P0:研究问题定义;实验设计(对照/消融/误差分析);写作结构;开源与复现规范;安全/透明(Model Cards/Datasheets/NIST RMF 视角)。P1:更强基线与规模化评测;推理加速系统化;分布式扩展曲线。P2:理论推导/新优化器等 | 交付物:①一篇完整论文草稿(含消融 + 局限 + 伦理/风险);②开源仓库(复现脚本 + 环境 + 结果表);③一套可复现实验追踪(MLflow/W&B)。NeurIPS checklist 强调可复现、透明、研究伦理与社会影响。citeturn20search2 PWC 的 releasing-research-code 清单针对“最受欢迎 ML 仓库”总结了便于复现与复用的组件。citeturn17search3 | 通过标准:1)论文结构与实验达到“可投稿”最低要求(强基线 + 消融 + 误差分析);2)仓库满足 PWC 清单关键项(依赖/训练/评测/结果/模型)。citeturn17search3 3)按 NeurIPS checklist 自检并补齐关键信息。citeturn20search2 |
学习阶段流程图(Mermaid)
flowchart TD
A[第一阶段:充分认识\n(训练闭环+最小Infra直觉)] --> B[第二阶段:论文阅读+复现/调试\n(DDP/FSDP2/AMP/ZeRO/推理入门)]
B --> C[第三阶段:实验+写论文\n(对照/消融/开源/投稿)]
A --> A1[交付物:baseline repo + 误差分析 + 阅读模板]
B --> B1[交付物:复现报告×2 + Infra小实验合集 + 复现模板]
C --> C1[交付物:论文草稿 + 开源仓库 + 实验追踪]一年时间分配建议(标准 20h/w)
我建议“科研主线 + Infra 支线”并行,但每周保持刚性配比,避免被系统细节吞没:
pie title 标准强度(20h/w)建议配比
"科研:论文阅读/笔记/复现报告" : 7
"Infra:分布式/显存/推理/Profiling" : 7
"模型与数学:训练相关最小集+补缺" : 4
"工程习惯:Git/实验追踪/复现模板" : 2必备数学与编程基础清单
这一部分我只列“对你目标真正有用、且可检验掌握程度”的知识点,并标注先修顺序与掌握深度:能做(Do)/能推导(Derive)/能证明(Prove)。研一一年内,我建议把“能证明”留给与研究方向强相关的少数主题,其余以 Do/Derive 为主。
数学基础(先修顺序 + 深度)
| 模块 | 必备知识点(尽量具体) | 推荐教材/课程(权威/原始优先) | 练习/项目(可交付) | 掌握深度 |
|---|---|---|---|---|
| 线性代数(先修) | 矩阵乘法与形状推理;正交/投影;范数;特征分解与 SVD;PCA 直觉;条件数与数值稳定性直觉 | 《Mathematics for Machine Learning》(MML)免费 PDF 版适合快速补齐线代与微积分。citeturn11search3 | 项目:用 NumPy 实现 PCA(SVD)并在数据集上可视化;写“形状推理笔记”(Transformer 张量维度) | Do + Derive(关键公式如最小二乘/PCA) |
| 概率统计(先修) | 常见分布;期望/方差;MLE/MAP;交叉熵/ KL;置信区间直觉;采样与估计 | 深度学习教材《Deep Learning》(Goodfellow 等)提供 ML 所需的概率与信息论背景。citeturn11search0 | 项目:推导交叉熵=负对数似然;实现 softmax + log-sum-exp 的数值稳定版本 | Derive 为主(证明可选) |
| 向量微积分 | 梯度/雅可比/链式法则;反向传播;Hessian 直觉(不必全推) | MML 对向量微积分讲解清晰。citeturn11search3 | 项目:手写两层 MLP 的前向+反向(NumPy),与 PyTorch autograd 对比梯度 | Derive(能写出梯度) |
| 优化 | SGD/动量/Adam;学习率调度;梯度裁剪;收敛直觉与失败模式 | Adam 原始论文理解其动机与适用性。citeturn1search2turn1search0 | 项目:同任务对比 SGD/Adam 收敛;写“训练不收敛排查树” | Do(调参)+ Derive(核心公式) |
| 凸优化(研究加分) | 凸集/凸函数;对偶/KKT 直觉;正则化与岭回归/LASSO | Boyd & Vandenberghe《Convex Optimization》官网提供权威材料。citeturn11search2 | 项目:用 CVX 类工具解 LASSO,并联系到稀疏与压缩 | 选学:Do/Derive |
| 数值稳定性(Infra 强相关) | FP16 溢出/下溢;log-sum-exp;梯度缩放;累加误差;混合精度稳定策略 | PyTorch AMP 文档解释 autocast + GradScaler 与“梯度缩放减少 underflow”。citeturn1search2 | 项目:用 AMP 训练同模型并记录 loss/NaN;解释原因与修复 | Do(会用)+ Derive(理解原因) |
编程与系统工程基础(面向 AI Infra)
| 模块 | 必备知识点 | 推荐资源(官方优先) | 练习/小项目(可交付) | 掌握深度 |
|---|---|---|---|---|
| Linux 基础 | 进程/线程;文件权限;SSH;日志;top/htop;磁盘与 IO | (不强制列特定教程)关键是“会用命令定位瓶颈” | 交付:写一个“训练/推理排障 checklist”(显存、IO、CPU、GPU) | Do |
| Git | 分支/PR;tag;可追溯实验(commit+config+seed) | (原则:每次实验可追溯) | 交付:复现模板仓库(configs + scripts + results) | Do |
| Docker(放第二阶段) | 镜像/容器;Dockerfile;(可选)GPU 容器 | Docker 官方 get started。citeturn18search1 GPU 容器需 NVIDIA Container Toolkit 且先装驱动。citeturn18search0 | 交付:给你的复现仓库加一个 CPU 可跑 Dockerfile(GPU 作为增强) | Do |
| PyTorch 训练工程 | DataLoader;checkpoint;分布式接口;AMP;Profiler | PyTorch DDP 文档:DDP 多 GPU 更快且一 GPU 一进程。citeturn0search2 AMP 与 checkpointing 官方说明。citeturn1search2turn1search3 Profiler 文档。citeturn3search2 | 交付:同模型在 FP32/AMP/ckpt 下的速度与显存曲线报告 | Do(熟练) |
| 分布式通信基础 | collective(all-reduce/all-gather等);后端 NCCL/Gloo | NCCL 官方说明其提供 all-reduce/all-gather 等原语并为多 GPU/多节点优化。citeturn9search0 PyTorch distributed 文档说明 Linux 默认包含 Gloo/NCCL(CUDA 构建时)。citeturn9search1 | 交付:写一个最小 all-reduce benchmark(测通信开销) | Do + Derive(能解释通信量) |
| 实验追踪 | 记录超参/指标/产物;对比 runs;复现实验 | MLflow tracking 用于记录参数、指标、artifact 并比较 runs。citeturn20search0 W&B tracking 也提供 logging 与 artifact。citeturn20search1 | 交付:对同一任务做 5 次对照实验并形成对比图表 | Do |
AI 子领域与“长期稳定”技术栈地图
你要一年内达到“大厂 AI Infra 工程师认知 + 扎实科研复现”,我建议模型方向以 Transformer/LLM 为主线(抗过时、与 Infra 强耦合),同时保持 CV/生成模型/RL 的“可迁移基础”。下面我按子领域给出:核心概念、代表性论文/文档、推荐开源仓库与课程入口。
子领域与技术栈速览(主流、长生命周期)
| 方向 | 核心概念(你必须能解释) | 代表性论文/文档(优先原始) | 推荐开源项目(GitHub) | 入门/进阶课程入口 |
|---|---|---|---|---|
| 深度学习基础 | 反向传播、优化、正则化、误差分析、可复现 | 《Deep Learning》教材(免费在线版)。citeturn11search0 | PyTorch(训练/Profiler/分布式生态)。citeturn9search1turn3search2 | MIT 6.S191(强度高、快速建立直觉)。citeturn10search2turn10search10 |
| CV | CNN/ResNet、检测/分割、ViT、多模态视觉表征 | ResNet。citeturn6search2 ViT。citeturn5search0 | Detectron2。https://github.com/facebookresearch/detectron2 citeturn15search0;MMDetection。https://github.com/open-mmlab/mmdetection citeturn15search1 | CS231n。citeturn10search0turn10search4 |
| NLP/LLM(主线) | Transformer、自回归生成、微调/PEFT、对齐、RAG、评测 | Transformer。citeturn6search0 BERT(微调范式)。citeturn6search1 LoRA。citeturn5search3 RAG。citeturn7search0 | Transformers。https://github.com/huggingface/transformers citeturn16search0;Datasets。https://github.com/huggingface/datasets citeturn16search1;PEFT。https://github.com/huggingface/peft citeturn15search3;TRL。https://github.com/huggingface/trl citeturn16search3 | CS224n(含 LLM 进展)。citeturn10search1 |
| 强化学习 | MDP、值函数、策略梯度、PPO、稳定性与复现 | DQN(经典)。citeturn5search2 Sutton&Barto 教材。citeturn11search1 | Stable-Baselines3。https://github.com/DLR-RM/stable-baselines3 citeturn17search0;Spinning Up。https://github.com/openai/spinningup citeturn13search9 | Berkeley CS285。citeturn13search0 |
| 生成模型 | 扩散模型、条件生成、训练与推理成本 | DDPM。citeturn5search1 FlashAttention(长上下文加速关键)。citeturn2search0 | Diffusers。https://github.com/huggingface/diffusers citeturn15search2 | HF Diffusion Course(含从零训练与微调)。citeturn13search3turn13search11 |
| 部署/工程化 | 模型导出、运行时优化、服务化、可观测性 | ONNX 定义开放格式与算子集合以实现互操作。citeturn3search0 ONNX Runtime 文档强调性能调优与硬件加速。citeturn3search1 | ONNX Runtime。https://onnxruntime.ai/ citeturn3search1;TensorRT-LLM。https://github.com/NVIDIA/TensorRT-LLM citeturn2search3;vLLM。https://github.com/vllm-project/vllm citeturn2search6 | (工程向以官方文档与示例为主)TensorRT-LLM docs。citeturn2search7 |
| 可解释性/安全/可信 | 归因方法、鲁棒性、文档化(模型卡/数据卡)、风险治理 | Model Cards。citeturn28academia0 Datasheets。citeturn28academia1 NIST AI RMF 1.0。citeturn27search3 对抗样本经典论文。citeturn24academia0 | Captum。https://github.com/meta-pytorch/captum citeturn27search0;SHAP。https://github.com/shap/shap citeturn27search1;LIME。https://github.com/marcotcr/lime citeturn27search2 | (研究向可参考 NeurIPS checklist 的透明与责任实践)citeturn20search2 |
| AI Infra(主线) | DDP/FSDP2/ZeRO;并行策略;AMP/ckpt;FlashAttention;KV cache;量化;推理引擎;profiling | DDP 官方文档。citeturn0search2 FSDP2 教程(FSDP1 deprecated)。citeturn4search3 ZeRO 论文与文档。citeturn1search0turn1search1 FlashAttention/2。citeturn2search0turn2search1 vLLM PagedAttention。citeturn2search2 | DeepSpeed。https://github.com/deepspeedai/DeepSpeed citeturn9search2;TensorRT-LLM。citeturn2search3;vLLM。citeturn2search6;NCCL。citeturn9search0 | (优先官方教程 + 论文)PyTorch/DeepSpeed/NVIDIA docs citeturn9search3turn2search7turn3search2 |
资源清单对比表(入门—进阶—研究/工程)
说明:表中链接全部放在代码格式,避免“收藏癖”。我建议你在每阶段只选 1 个主线资源,其余作为参考即可(见后文“二选一策略”)。
| 资源名称 | 类型 | 语言 | 难度 | 时长估计 | 优点 | 局限 | 链接 |
|---|---|---|---|---|---|---|---|
| 《动手学深度学习》(D2L)(中文) | 书+可运行笔记本 | 中文 | 入门→进阶 | 6–10 周 | 公式+代码闭环,适合第一阶段主线。citeturn10search3 | 覆盖面广,需自控节奏 | https://zh.d2l.ai/ |
| PyTorch 60 Minute Blitz | 教程 | 英文/中文 | 入门 | 1 周 | 快速跑通训练闭环。citeturn18search3turn18search7 | 深度不够,需要继续扩展 | https://docs.pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html |
| PyTorch DDP 文档 | 官方文档 | 英文/中文 | 进阶 | 1–2 周 | 直接给出“多 GPU 一进程/更快”的实践要点。citeturn0search2turn0search6 | 需要你配合实验理解通信与瓶颈 | https://docs.pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html |
| PyTorch FSDP2 教程 | 官方教程 | 英文 | 进阶→工程 | 1–2 周 | 官方明确 FSDP1 deprecated;给出可运行示例。citeturn4search3 | 真正吃透需做显存/吞吐对照 | https://docs.pytorch.org/tutorials/intermediate/FSDP_tutorial.html |
| DeepSpeed ZeRO 文档 + 论文 | 文档+论文 | 英文 | 进阶→工程 | 2–4 周 | Stage 0–3 清晰;与大模型训练强相关。citeturn1search1turn1search0 | 配置多,需做小实验验证 | https://deepspeed.readthedocs.io/en/latest/zero3.html |
| FlashAttention / FlashAttention-2 论文 | 论文 | 英文 | 进阶→研究/工程 | 1–3 周 | 注意力层 IO-aware 加速关键;LLM 长上下文时代仍核心。citeturn2search0turn2search1 | 需要一定 GPU 内存层次知识 | https://arxiv.org/abs/2205.14135 |
| vLLM + PagedAttention | 论文+开源 | 英文 | 工程 | 1–3 周 | KV cache 管理与吞吐优化,服务化常用。citeturn2search2turn2search6 | 真正落地需结合业务流量与SLA | https://github.com/vllm-project/vllm |
| TensorRT-LLM | 开源+官方文档 | 英文 | 工程 | 2–6 周 | NVIDIA 官方推理优化库与部署文档。citeturn2search3turn2search7turn2search11 | 偏 NVIDIA 生态;学习曲线较陡 | https://github.com/NVIDIA/TensorRT-LLM |
| Hugging Face Transformers | 开源+文档 | 英文 | 进阶 | 持续 | 统一训练/推理生态,覆盖多模态。citeturn16search0 | 代码体量大,需围绕任务切入 | https://github.com/huggingface/transformers |
| Hugging Face Fine-tune 教程 | 官方文档 | 英文 | 入门→进阶 | 1–2 周 | 明确微调流程(强契合 L1 复现)。citeturn0search1 | 需要你补齐评测与误差分析 | https://huggingface.co/docs/transformers/en/training |
| MLflow / W&B Tracking | 工程工具 | 英文/中文 | 工程 | 1 周起 | 实验对比与复现;记录指标/超参/产物。citeturn20search0turn20search1 | 需要你坚持记录才有价值 | https://mlflow.org/docs/latest/ml/tracking/ / https://docs.wandb.ai/models/track |
| NeurIPS Paper Checklist | 研究规范 | 英文 | 研究 | 1–2 天 | 复现、透明、伦理的 checklist 思维。citeturn20search2 | 不是教程,需结合项目实践 | https://neurips.cc/public/guides/PaperChecklist |
AI Infra 必修清单与可做的小实验
这一节我把你列出的 Infra 关键词全部“落地化”:每项都给出必须掌握的原理要点、最可信的学习资源(论文/官方文档/示例 repo)、单卡可做的小实验与评估标准。你可以把它当作一年里反复回看的“Infra 技能考纲”。
Infra 必修清单(原理 → 资源 → 小实验 → 标准)
| 主题 | 你必须真正理解的原理点 | 学习资源(优先原始/官方) | 单卡/少量 GPU 小实验任务 | 评估标准(可量化) |
|---|---|---|---|---|
| DDP | 数据并行的梯度同步(all-reduce);为何“一 GPU 一进程”;与 DataParallel 差异 | PyTorch DDP 文档强调 DDP 在单机多卡显著更快,并建议 N GPU 启动 N 进程且每进程独占一 GPU。citeturn0search2 | 若你有 2 卡:做 DDP vs 单卡吞吐(samples/s)对比;若只有 1 卡:用 torchrun 跑单进程 DDP 骨架,理解进程组初始化与通信接口(可用 Gloo)。PyTorch distributed 说明 Linux 默认含 Gloo/NCCL(CUDA 构建时)。citeturn9search1 | 你能写出“吞吐 = 计算 + 通信”的解释,并能用 profiler 看出通信段(或其开销)。citeturn3search2 |
| FSDP2 | 参数/梯度/优化器状态分片;all-gather 与 reduce-scatter 何时发生;节省显存但增通信 | PyTorch FSDP 教程解释其分片并强调 FSDP1 deprecated、推荐 FSDP2。citeturn0search3turn4search3 | 选一个中等模型(如 1–3B 参数以下或更小)在单机多卡做 FSDP2;单卡则做“代码级理解实验”:打印每步显存与 shard 行为(可结合示例)。 | 输出一份“显存节省与代价”报告:显存峰值降低多少、吞吐变化多少、是否出现通信瓶颈。 |
| ZeRO / DeepSpeed | ZeRO-1/2/3 分别分片哪些状态(优化器/梯度/参数);通信与显存的权衡;为什么能上到更大模型 | ZeRO 原论文。citeturn1search0 DeepSpeed 文档把 Stage 0–3 定义为禁用、分片优化器、分片优化器+梯度、分片优化器+梯度+参数。citeturn1search1 DeepSpeed 官方 ZeRO 教程。citeturn9search3 | 用 DeepSpeed 在小模型上切换 ZeRO stage(即使单卡也可读懂配置含义);多卡则做 stage 对比。DeepSpeed repo。citeturn9search2 | 通过标准:你能解释每个 stage 节省的显存来源,并给出实测显存/吞吐/通信量对照表。 |
| 张量并行(TP) | 层内切分(矩阵乘法切分、通信插入点);与流水线并行互补 | Megatron-LM 论文提出层内模型并行训练数十亿参数模型,并说明可在原生 PyTorch 中插入少量通信实现。citeturn4search0 | 单卡:阅读 Megatron-LM 通信插入点,做“矩阵切分+all-reduce 模拟”;多卡:跑一个最小 TP demo(若条件允许)。 | 你能画出 Transformer 一层在 TP 下的张量切分示意,并指出每次通信发生在哪。 |
| 流水线并行(PP) | micro-batch、pipeline bubble;参数一致性(weight stashing等) | GPipe 论文提出任务无关的 pipeline 并行并使用 micro-batch;citeturn4search1 PipeDream 讨论流水线训练系统与一致性策略。citeturn4search2 | 单卡:实现一个 toy pipeline scheduler(模拟 bubble);多卡:用现成框架跑简单 pipeline。 | 能解释 bubble 如何随 micro-batch 数变化,并给出简单实验图。 |
| AMP(混合精度) | autocast 选择计算精度;GradScaler 为什么能减轻 fp16 梯度下溢;数值稳定性排查 | PyTorch AMP 示例说明 autocast + GradScaler 的典型组合,并解释梯度缩放用于减少 float16 梯度 underflow。citeturn1search2 | 同一模型 FP32 vs AMP:记录吞吐与显存;故意制造 NaN(过大学习率)并写修复笔记。 | 通过标准:你能解释“为什么会 underflow/overflow”,并给出可复现的 NaN case 与修复 commit。 |
| Activation checkpointing | 以计算换显存;重计算开销;use_reentrant 两种实现差异 | PyTorch checkpoint 文档建议使用 use_reentrant=False。citeturn1search3 | 在同模型/同 batch 下比较开启/关闭 checkpoint 的显存峰值、速度变化,并做 profiler 分析。citeturn3search2 | 通过标准:写出“显存节省比例 vs 速度损失比例”的对照表,并能解释原因。 |
| FlashAttention | IO-aware:减少 HBM↔SRAM 读写;注意力从 O(n²) 内存到近线性;与数值稳定(safe softmax)关系 | FlashAttention 原论文(IO-aware、tiling)。citeturn2search0 FlashAttention-2 进一步优化并行与分工获得更高吞吐。citeturn2search1 | 用支持 FlashAttention 的实现(如库集成)对同模型做长序列吞吐对照;记录 kernel 时间占比。 | 通过标准:你能解释“瓶颈从 FLOPs 转为内存 IO”的原因,并用 profiler/Nsight 证据支持。citeturn3search3 |
| KV cache 与 PagedAttention | 自回归推理的 KV cache 增长与碎片;PagedAttention 类似 OS paging,减少浪费并提升 batch | vLLM 论文提出 PagedAttention 并构建 vLLM,强调 KV cache 碎片/浪费与吞吐提升。citeturn2search2 vLLM repo。citeturn2search6 | 用 vLLM 对比 HF 推理:固定延迟目标下测吞吐;不同序列长度下对比吞吐曲线。 | 通过标准:你能给出“吞吐-延迟-显存”的三方权衡曲线或表。 |
| 量化(INT8/4-bit/混合) | 权重/激活量化的误差来源;outlier;PTQ vs QAT;可用性与硬件友好性 | LLM.int8() 解释 8-bit 矩阵乘与 outlier 处理。citeturn8search0 SmoothQuant(W8A8、处理 activation outlier)。citeturn8search1turn8search5 GPTQ(3–4bit、二阶近似)。citeturn8search2turn8search10 QLoRA(4-bit NF4 + LoRA、单卡 48GB 可微调 65B 级别)。citeturn17search2 | 在同一基座模型上比较 FP16 vs INT8 vs 4-bit:测显存、吞吐、困惑度/任务指标。 | 通过标准:你能说明“误差来自哪里”,并给出量化策略选择理由(不是只报速度)。 |
| ONNX / ONNX Runtime | 互操作标准与算子集合;图优化与执行提供者(硬件加速) | ONNX 官方定义开放格式与通用算子集合。citeturn3search0 ONNX Runtime 文档强调可用配置/硬件加速进行性能调优。citeturn3search1 | 导出一个模型到 ONNX,分别用 PyTorch 与 ORT 跑推理并比较延迟/吞吐;记录不支持算子与解决方式。 | 通过标准:你能把“导出失败/精度差异/性能差异”归因到具体算子或优化开关。 |
| TensorRT-LLM | engine 构建与推理优化(kernel fusion、KV cache 优化等);在线/离线推理路径 | TensorRT-LLM GitHub 与官方文档(Quick Start、Serving)。citeturn2search3turn2search7turn2search11 | 若有 NVIDIA GPU:用官方 Quick Start 跑通离线推理;再做一个小模型的 engine 构建对比(FP16 vs 量化)。 | 通过标准:你能给出“同模型 vLLM vs TensorRT-LLM”对比表,并解释差异来源。 |
| Profiling 工具链 | 从“感觉慢”到“证据”:算子级 profiler、系统级 trace、通信/IO 分析 | PyTorch Profiler 用于收集训练/推理性能指标并可视化 trace。citeturn3search2 Nsight Systems 建议只 profile 性能关键区域以减少数据量并聚焦瓶颈。citeturn3search3 | 对同一训练脚本:先用 torch.profiler 定位热点,再用 Nsight Systems 看 CPU/GPU 时间线;给出优化前后对比。 | 通过标准:能提出 1–2 个可验证优化(如数据管道、kernel、通信重叠)并量化收益。 |
论文阅读与代码复现方法论与论文清单
论文筛选与三遍阅读法(让你一年读得动、读得快、读得有产出)
我建议把论文阅读流程标准化,采用“三遍阅读法”:第一遍鸟瞰结构、第二遍抓核心假设与方法、第三遍为复现做细节抽取。这个方法由 Keshav 的经典短文系统阐述,并强调用纪律避免“淹死在细节里”。citeturn20search3
论文筛选我用四个硬指标(为复现服务):
1) 是否清晰定义问题与评测;2) 是否有强基线/消融;3) 是否有公开实现或足够细节;4) 是否能在你算力下做 L1/L2 复现(见下文分级)。
“复现幻觉”防护:复现分级(L0–L3)与算力现实
很多研一同学会被“从零训练一个 BERT/LLM 才算复现”误导。我会把复现分为四级,并把你一年内的主目标锁定在 L1/L2:
- L0 跑通(Run):代码能跑、能出指标、能复跑。
- L1 指标对齐(Replicate with pretrained checkpoint):使用公开预训练权重进行微调,达到论文/官方实现的合理区间,并写出差异归因。Hugging Face 官方教程就是这一范式:fine-tune a pretrained model。citeturn0search1
- L2 现象复现(Replicate phenomenon at small scale):用小模型/小数据复现论文核心现象趋势,不追求 SOTA 数值。
- L3 全量复刻(Train-from-scratch at paper scale):通常需要大规模算力/数据/工程团队,不适合作为一年自学的主线目标。BERT 官方仓库直说预训练“fairly expensive”(4 天、4–16 Cloud TPU),并暗示多数研究者不必从零预训练。citeturn0search0
“为何 L3 不现实”的补充证据:LLM scaling law 工作表明损失与模型规模、数据与训练 compute 呈幂律关系,并讨论如何在固定预算下分配 compute。citeturn7search2 Chinchilla 工作进一步指出许多 LLM“训练不足”,并给出 compute-optimal 的模型/数据配比规律(更强调大量 token)。citeturn7search3 这意味着:想从零训练一个与论文同规模的 LLM,不仅需要硬件,还需要大规模数据与系统工程——一年内更务实的路线是 L1/L2。
复现流程(从环境到开源的标准作业程序)
我建议你把复现做成“流水线”,每次复现都遵循同一模板:
1) 环境与依赖锁定:先 conda/pip(第一阶段),Docker 放第二阶段。PyTorch 官方允许选择 CUDA: None 先跑通。citeturn18search10 GPU 容器要依赖驱动与 NVIDIA Container Toolkit,官方把 driver 作为 prerequisite。citeturn18search0
2) 随机性与复现性:固定 seed、记录版本、标注非确定性;PyTorch 专门有 reproducibility/randomness 指南说明随机性导致的差异与控制方式。citeturn1search3turn3search2
3) 实验追踪:必须记录超参、指标、artifact(模型权重、曲线、日志)。MLflow 与 W&B 的 tracking 文档都强调记录 metrics/params/artifacts 并用于比较与复现。citeturn20search0turn20search1
4) 对齐与差异归因:对齐数据预处理、tokenizer、评测脚本;差异必须用实验对照解释而不是“感觉”。
5) 开源与复用:用 PWC releasing-research-code 清单把 repo 补齐(训练脚本、评测、依赖、结果表、模型)。citeturn17search3 投稿前按 NeurIPS checklist 自检(透明、复现、伦理)。citeturn20search2
代表性论文清单(8–12 篇,不同难度,含复现方式与评级)
我选的论文覆盖:模型基础(ResNet/Transformer)、LLM 适配(BERT/LoRA/QLoRA)、生成(DDPM)、Infra(ZeRO/Megatron/FlashAttention/vLLM)、以及“规模现实”(Scaling/Chinchilla)。难度评级:★(最低)到 ★★★★★(最高),难度主要取决于复现成本 + 细节不可得程度 + 系统复杂度。
| 论文 | 难度 | 为什么我推荐 | 推荐复现方式(L0/L1/L2/L3) |
|---|---|---|---|
| Deep Residual Learning for Image Recognition(ResNet)citeturn6search2 | ★★★ | 经典 backbone;复现可在中小数据完成;也适合做 profiling | L2(小数据从零训)或 L1(用成熟实现跑通指标) |
| Attention Is All You Need(Transformer)citeturn6search0 | ★★★★ | LLM/CV/多模态共同地基;理解注意力与并行化 | L2(小 Transformer 从零训)+ L1(HF 微调)citeturn0search1 |
| BERT(论文)citeturn6search1 | ★★★★ | 预训练-微调范式代表;但从零预训不现实 | L1(用预训练权重微调)citeturn0search0turn0search1 |
| LoRA(PEFT)citeturn5search3 | ★★★ | “微调成本”核心解法;适合单卡做系统实验 | L1(对同任务对比全参 vs LoRA) |
| QLoRA(4-bit 微调)citeturn17search2 | ★★★★ | 把大模型微调带到单卡/小卡可行区间(NF4 等) | L1(复现内存节省+指标对照) |
| ZeRO(论文)citeturn1search0 | ★★★★★ | 训练万亿参数的关键内存思想;Infra 必读 | L2(小模型实验验证 stage 思想)+ 配合 DeepSpeed 文档citeturn1search1 |
| Megatron-LM(模型并行)citeturn4search0 | ★★★★★ | 张量并行的经典;理解通信插入点 | L2(小规模模拟/最小并行实验) |
| FlashAttention(IO-aware Attention)citeturn2search0 | ★★★★★ | 推理/训练速度核心瓶颈之一;长上下文时代仍关键 | L2(对比前后吞吐、kernel 时间) |
| vLLM / PagedAttention(KV cache 管理)citeturn2search2turn2search6 | ★★★★★ | 服务端吞吐与显存的关键系统论文 | L1(跑通并做吞吐-延迟-显存对照) |
| DDPM(扩散模型)citeturn5search1 | ★★★★ | 生成模型主流路线;也能练 profiling 与显存优化 | L2(小数据从零训趋势)或 L1(Diffusers 跑通)citeturn15search2 |
| Scaling Laws(Kaplan)citeturn7search2 | ★★★★ | 解释“算力为何决定路线”;帮助你设定现实目标 | L2(复现实验可用更小模型验证趋势) |
| Chinchilla(Compute-optimal)citeturn7search3 | ★★★★ | 让你理解“数据/Token 规模”对训练的决定性 | L2(趋势理解 + 小规模验证) |
12 个月详细计划(按月 + 按周,含三种强度)
三种强度模板(你只需要选一个执行)
- 保守强度(10–12h/w):目标仍是“双修”,但把范围缩到“理解原理 + L1 复现 1 篇 + Infra 小实验做核心项”;分布式多卡实验改为“单卡理解 + 配置阅读 + 小规模验证”。
- 标准强度(20h/w,默认):本报告主体计划;目标是“L1/L2 复现 ≥2 篇 + Infra 核心实验全覆盖 + 可投稿雏形”。
- 激进强度(30–40h/w):适合你有强动机且时间充裕;可以增加一个“真实多卡扩展曲线项目”(DDP/FSDP2/ZeRO)并把第三阶段冲到 workshop/short paper 投稿。
无论哪种强度,我都坚持“四类任务刚性配比”(论文/Infra/数学补缺/工程习惯),只是规模不同。
年度时间线(Mermaid Gantt)
gantt
title 12个月主线时间线(标准20h/w)
dateFormat YYYY-MM-DD
axisFormat %m
section 第一阶段:充分认识(W1-10)
训练闭环+误差分析+最小Profiler :a1, 2026-03-24, 70d
数学唤醒(训练相关最小集) :a2, 2026-03-24, 70d
论文阅读模板与三遍阅读法 :a3, 2026-04-07, 56d
section 第二阶段:复现/调试+Infra入门(W11-30)
L1复现:微调预训练模型(2个任务) :b1, 2026-06-02, 140d
Infra核心:DDP/FSDP2/AMP/ckpt :b2, 2026-06-02, 140d
推理入门:ONNX/ORT + vLLM对比 :b3, 2026-07-01, 120d
section 第三阶段:实验与论文(W31-52)
研究问题+强基线+消融 :c1, 2026-10-01, 120d
写作+开源+投稿(workshop/short) :c2, 2026-11-01, 90d标准强度(20h/w)按月+按周计划表
记号:W1–W4 表示当月四周核心任务(你可按自然周滑动)。每月都包含“科研产出 + Infra 实验 + 工程复现记录”。
| 月份 | 本月主目标 | W1 | W2 | W3 | W4(本月交付物/评估) |
|---|---|---|---|---|---|
| M1 | 先跑通训练闭环,不死磕 Docker | 安装 PyTorch(必要时 CUDA None)、建立 repo 模板。citeturn18search10 | 跑通 CIFAR10/MNIST baseline(含曲线)。citeturn18search3 | 最小数学:推导 softmax+CE 梯度;写数值稳定实现 | Keshav 三遍阅读法 + 第一篇论文第1遍笔记citeturn20search3(交付:baseline repo + report.md;通过标准见文末) |
| M2 | 训练技巧 + Profiler 入门 | 加入 AMP 对照实验citeturn1search2 | 加入 checkpointing 对照实验citeturn1search3 | torch.profiler 跑一次 traceciteturn3search2 | 写“训练排错树 + 性能瓶颈报告”(交付:实验对比表 + trace) |
| M3 | 进入 L1 复现:微调一个预训练模型(NLP 优先) | 选任务:文本分类/QA 二选一;准备数据管线(HF Datasets)citeturn16search1 | 用 HF fine-tune 教程跑通微调citeturn0search1 | 加入 PEFT/LoRA 微调对照citeturn15search3turn5search3 | 交付:L1 复现报告 #1(指标、差异、误差分析) |
| M4 | 分布式训练认知:DDP/FSDP2(有多卡则实做) | 读 DDP 原理与文档,写最小 DDP 脚本citeturn0search2 | 多卡:DDP 吞吐曲线;单卡:模拟通信/进程组citeturn9search1 | 学 FSDP2 教程并跑通示例citeturn4search3 | 交付:DDP vs FSDP2 显存/吞吐对照报告 |
| M5 | ZeRO/DeepSpeed 进阶(内存优化主线) | 读 ZeRO 论文摘要/方法与 stage 直觉citeturn1search0 | 按文档理解 stage0–3 差异citeturn1search1 | 跑 DeepSpeed ZeRO 教程/最小项目citeturn9search3turn9search2 | 交付:ZeRO stage 对照表 + 复现配置说明 |
| M6 | 推理系统入门:KV cache/vLLM + ONNX | 读 vLLM/PagedAttention 论文并跑 vLLM demociteturn2search2turn2search6 | 做吞吐-延迟-显存对照 | 导出 ONNX 并用 ORT 推理citeturn3search0turn3search1 | 交付:推理对比报告(vLLM vs baseline + ORT) |
| M7 | 高效注意力与长上下文:FlashAttention | 读 FlashAttention 原理(IO-aware)citeturn2search0 | 若可用:集成 FA 做吞吐对照 | 读 FlashAttention-2 的并行优化动机citeturn2search1 | 交付:注意力层 profiling 报告(热点、优化收益、限制) |
| M8 | 量化与低比特推理 | 读 LLM.int8 与 outlier 机制citeturn8search0 | 读 SmoothQuant(W8A8)citeturn8search1turn8search5 | 读 GPTQ / AWQ(4-bit)citeturn8search2turn8search3 | 交付:FP16 vs INT8 vs 4-bit 的指标/速度/显存对比表 |
| M9 | TensorRT-LLM / 工业推理栈(可选但推荐) | 跑 TensorRT-LLM Quick Startciteturn2search7turn2search3 | 构建一个 engine 并与 vLLM 对比 | 用 Nsight Systems 做 end-to-end traceciteturn3search3 | 交付:推理优化报告(engine 构建、吞吐、瓶颈) |
| M10 | 研究启动:找一个“可发表小问题” | 选题:训练效率/推理效率/评测改进/数据清洗等(与 Infra 强相关) | 建强基线(2–3个)并统一评测 | 做 3–6 个消融实验 | 交付:研究计划书 + 初版结果表 |
| M11 | 写论文草稿 + 开源规范 | 写方法与实验部分;补全图表与误差分析 | 按 PWC checklist 补齐仓库citeturn17search3 | 按 NeurIPS checklist 自检透明与复现citeturn20search2 | 交付:论文 v0.8 + 可复现 repo v1 |
| M12 | 投稿与迭代(workshop/short paper 优先) | 选择 venue(workshop/short)并调整叙述 | 增强基线/补实验或补限界 | 复现审查:一键复跑 + 结果一致性 | 交付:投稿版本 + release tag + 实验追踪(MLflow/W&B)citeturn20search0turn20search1 |
保守/激进强度如何改动(不改方向,只改规模)
我建议你把“同一套路线”按规模伸缩,而不是换路线:
- 保守(10–12h/w):M4–M6 把“多系统对比”压缩成“跑通 + 读懂 + 写清楚差异”;M7–M9 只选 FlashAttention 或 量化 或 vLLM 三者之一做深入;第三阶段以 workshop 为目标,实验规模缩小但把“对照/消融/开源”做完整。
- 激进(30–40h/w):在 M4–M6 追加一个“扩展效率曲线项目”(至少 2–4 GPU),把 DDP/FSDP2/ZeRO 做到“吞吐随 GPU 数变化”的证据链;再加一个“推理工程项目”(vLLM + TensorRT-LLM + 量化)形成工程作品集。vLLM 论文报告其通过 PagedAttention 提升吞吐并减少 KV cache 浪费的核心动机适合做系统项目。citeturn2search2
第一周与第一个月任务清单与通过标准
默认仍假设每周 20 小时、单卡 GPU 可用;若 CUDA/驱动不稳定,第一周允许先 CPU 版本(CUDA None)跑通闭环。citeturn18search10
第一周(20h)务实任务清单
我把第一周目标压缩成一句话:跑通一个可复现训练闭环 + 留下可追溯证据。不要求 Docker、不要求分布式、不要求读完论文。
| 天 | 目标 | 具体任务 | 产出 |
|---|---|---|---|
| Day1(3h) | 环境最小可运行 | 按 PyTorch 官方安装页安装;若不需要/暂时不想折腾 CUDA,选择 CUDA: None。citeturn18search10 | env.md:Python/torch 版本、OS、GPU |
| Day2(4h) | 训练闭环 0→1 | 跑 PyTorch 60min blitz 的训练流程(或等价脚本)。citeturn18search3 | train.py + 初版曲线(loss/acc) |
| Day3(3h) | 可复现与记录习惯 | 固定 seed、记录依赖;建立 configs/ 与 runs/ 结构;写 README 一键运行命令 | repo 可复跑(同趋势) |
| Day4(4h) | 数学最小集(训练相关) | 推导 softmax+CE 梯度;实现 log-sum-exp 稳定 softmax;用数值例子验证 | math_note.md + 单元测试 |
| Day5(3h) | 性能最小认知 | 用 torch.profiler 跑一次 trace 看热点算子citeturn3search2 | profile.md:热点算子与初步推断 |
| Day6(2h) | 论文阅读模板 | 读 Keshav 三遍阅读法并建立模板citeturn20search3 | paper_notes/template.md |
| Day7(1h) | 复盘与下周计划 | 复盘本周卡点,写下周唯一目标(例如“把 baseline 提升 X 或复现一篇 L1 微调”) | weekly_review.md |
第一周通过标准(硬指标):
1)别人按 README 在干净环境能跑通并得到相同趋势曲线;2)你能用 5 句话解释“loss 为什么下降、何时过拟合、你如何发现”;3)你至少找到一个性能热点并写下可验证优化假设。citeturn3search2
第一个月里程碑与评估作业(M1)
- 里程碑1(第2周末):训练闭环稳定(至少完成 3 次不同超参实验),并用 MLflow 或 W&B 任一工具记录对照。citeturn20search0turn20search1
- 里程碑2(第3周末):完成 AMP 或 checkpointing 的一次对照实验并解释显存/速度变化(允许只做其中一个)。citeturn1search2turn1search3
- 里程碑3(第4周末):完成一篇论文“第一遍阅读”笔记(推荐 ResNet 或 Transformer)。citeturn6search2turn6search0
M1 评估作业题目(可直接放进 GitHub 作品集):
“同一模型在 FP32 vs AMP vs Activation Checkpointing 下的三方对比:收敛曲线、吞吐(samples/s)、显存峰值(GB)、以及推断瓶颈(Profiler 证据)。”(AMP 与 checkpointing 依据 PyTorch 官方文档执行。citeturn1search2turn1search3)
前三个月总评估(你应该达到的水平)
- 3 个月末你应具备的科研能力:能按三遍阅读法读懂并复述一篇经典论文的贡献与实验设计,并完成至少 1 次 L1 微调复现(Hugging Face fine-tune 流程)。citeturn20search3turn0search1
- 3 个月末你应具备的 Infra 认知:知道 DDP/FSDP2/ZeRO/AMP/ckpt 分别解决什么、代价是什么,并至少在单卡上完成 AMP 或 checkpointing 的实证对照;有条件则完成 DDP 的多卡实测。citeturn0search2turn4search3turn1search0turn1search2turn1search3
这份计划的核心“务实性”在于:我把一年目标拆成了可检验的交付物,并用官方文档与原始论文把每个关键节点“钉死”(DDP/FSDP2/ZeRO/AMP/FlashAttention/vLLM/ONNX/TensorRT-LLM),同时用 BERT 官方仓库与 HF 文档明确划清“微调 vs 从零训练”的现实边界,避免你走弯路。citeturn0search0turn0search1turn4search3turn2search2turn2search7
deep-research-report (2).md