17. 24 周系统学习计划
- 把 24 周拆成可交付周任务
- 设置补课、复盘和失败恢复机制
- 用作品证据替代阅读时长
- 阅读导学与全景图
本章产物个人周历、每周产物、复盘节奏和调整规则。
建议每周 6~10 小时。每周都要有一个可运行产物和一页实验记录。
阶段一:数学与 PyTorch(第 1~3 周)
第 1 周:张量与线性代数
- 向量、矩阵乘法、broadcast、reshape、transpose。
- 完成
01_tensor_autograd.py。 - 手工标注每个张量形状。
产物:用 PyTorch 拟合线性函数,并解释每行代码。
第 2 周:概率、softmax、交叉熵
- 手算 3 个 logits 的 softmax 和 NLL。
- 写一个数值稳定 softmax。
- 验证梯度近似
p - y。
产物:一个 notebook 或脚本展示概率、loss 与梯度。
第 3 周:神经网络训练
nn.Module、optimizer、train/eval。- 过拟合、验证集、随机种子。
- AdamW、warmup、gradient clipping。
产物:小型分类器及完整实验表。
阶段二:Tokenizer 与 Transformer(第 4~7 周)
第 4 周:Tokenizer
- 字符、词、BPE、byte-level。
- 跑
03_train_bpe.py。 - 对比三种 vocab size。
产物:token 数、词表大小和往返解码报告。
第 5 周:Attention
- Q/K/V、缩放、mask、multi-head。
- 跑
02_attention_from_scratch.py。 - 手算一个 3-token 单头注意力。
产物:注意力矩阵和张量形状图。
第 6 周:完整 Transformer Block
- Residual、LayerNorm/RMSNorm、MLP/SwiGLU。
- 阅读
04_tiny_gpt.py模型部分。 - 统计参数量。
产物:自己画出 decoder block 数据流。
第 7 周:TinyGPT
- 训练、保存、生成。
- 改 width/layers/context。
- 观察 loss、速度、样本。
产物:三组模型对照报告。
阶段三:训练工程(第 8~10 周)
第 8 周:数据工程
- 去重、污染、packing、loss mask。
- 建立 train/valid/test。
- 写 dataset card。
产物:一份可追踪的小型语料。
第 9 周:训练优化
- 混合精度、梯度累积、checkpointing。
- 估算权重、激活、优化器内存。
- 学习 profiler。
产物:同模型两种配置的速度/内存比较。
第 10 周:分布式概念
- DDP、FSDP/ZeRO、TP、PP。
- 理解 all-reduce、all-gather、reduce-scatter。
- 不要求在 Mac 实现多卡。
产物:为一个假设 70B 训练任务设计并行方案。
阶段四:推理优化(第 11~13 周)
第 11 周:生成与 KV Cache
- Prefill/Decode、采样。
- 手写缓存解码或复用前一份推理手册代码。
- 计算 8K/32K cache。
产物:KV 开关性能曲线。
第 12 周:量化
- FP16/Q8/Q4。
- MLX 与 llama.cpp。
- 质量、速度、内存三维比较。
产物:Qwen3-8B Q4/Q8 对照。
第 13 周:服务
- OpenAI-compatible API。
- TTFT、TPOT、P95、并发。
- Continuous batching 和 Paged KV 概念。
产物:本地服务压测报告。
阶段五:微调与对齐(第 14~18 周)
第 14 周:LoRA 数学
- 跑
05_lora_from_scratch.py。 - 推导参数量。
- 修改 rank。
产物:rank 与拟合能力/参数量曲线。
第 15 周:SFT 数据
- 设计 100~500 条高质量小数据。
- 定义格式和失败类别。
- 划分 validation/test。
产物:dataset card 与质量抽检。
第 16 周:真实模型 LoRA
- 跑
06_sft_lora.py。 - 记录 base 与 adapter 指标。
- 检查过拟合。
产物:可加载 adapter 与评估报告。
第 17 周:MLX QLoRA
- 对量化模型训练 adapter。
- 比较普通 LoRA 与 QLoRA 内存。
产物:训练内存和速度记录。
第 18 周:偏好优化
- 理解 chosen/rejected。
- 阅读 DPO。
- 构造小型偏好集,先不追求大规模训练。
产物:偏好数据规范和 DPO 实验设计。
阶段六:评估与应用(第 19~22 周)
第 19 周:评估体系
- perplexity、任务指标、人工 rubric。
- lm-eval。
- 数据污染检查。
产物:统一评估脚本和结果表。
第 20 周:RAG
- chunk、embedding、hybrid retrieval、rerank。
- 检索与生成分开评估。
产物:带引用的小型本地知识库。
第 21 周:Tool Use
- JSON schema、参数验证、权限。
- 工具失败、重试、幂等。
产物:计算器或只读查询工具。
第 22 周:安全与可观测性
- Prompt injection、数据泄漏、越权。
- 指标、日志、审计。
产物:红队样本集与防护清单。
阶段七:综合项目(第 23~24 周)
完成一个“技术文档助手”:
- 8B 4-bit 本地模型。
- 领域小数据 LoRA(只有确有必要时)。
- 本地文档 RAG 和精确引用。
- 一个只读工具。
- OpenAI-compatible API。
- 离线评估、性能指标和安全测试。
最终报告必须包括:
需求与风险
数据来源和许可
架构选择
训练/微调配置
baseline 与评估
推理性能
失败案例
安全边界
复现步骤
下一步改进每周学习闭环
每周不要只安排“阅读第几章”。使用固定节奏:
输入检查 → 概念讲解 → 最小实现 → 故意失败 → 对照实验 → 一页复盘- 输入检查:用 5 个问题确认前置知识;答不出则先补课。
- 概念讲解:脱离原文讲给另一个人听,限制在 10 分钟。
- 最小实现:运行本周脚本或 Notebook,保留断言和原始输出。
- 故意失败:去掉一个关键组件或给出错误输入,观察失败信号。
- 对照实验:一次只改变一个变量。
- 一页复盘:结论、边界、失败和下周问题。
周产物评分
| 项目 | 0 分 | 1 分 | 2 分 |
|---|---|---|---|
| 可运行 | 无法重现 | 只在原环境运行 | 干净环境按命令运行 |
| 原理 | 只能复述名词 | 能解释流程 | 能从公式/形状推导并回答反例 |
| 实验 | 无 baseline | 有结果但变量混杂 | 单变量对照且保留原始证据 |
| 排错 | 只记录成功 | 记录错误 | 能定位层级并给出排除过程 |
| 表达 | 结论含糊 | 有数据 | 说明适用边界与不确定性 |
每周满分 10。低于 6 不应继续堆新主题;先用下一周前两小时修复缺口。学习计划允许延长,不允许用“看过了”替代产物。
三种进度调整
- 每周只有 3~4 小时:把 24 周拉长到 36~40 周,不跳过实验和评估。
- 已有深度学习基础:数学阶段可用验收题快速通过,但仍需提交张量与梯度产物。
- 有 CUDA 多卡环境:在第 10、13 周加入 profiler、DDP/FSDP 和 vLLM 实操,同时保留单机 baseline。
连续两周无法完成时,缩小模型、数据和实验变量;不要同时更换框架、硬件、模型和数据。恢复进度的标准是重新得到一个可解释的最小闭环。