动手学大模型开篇:11 章地图、设备评估与六阶段学习路线
T AGENT 开发纪实 · EP36 · 动手学大模型系列 ①
"47.9k 星" 公益教程三件套:11 章 PDF 讲义 + README + Notebook。本期拆开 11 章地图,评估 GB10 能不能跑完,给出六阶段路线图。
教程规模
11 章
本机可原样跑
9/11
路线图时长
12-14 周
每章产出
笔记 + 视频
💡 本节要点:动手学大模型系列 ①:47.9k⭐ 教程(11 章 × PDF+README+Notebook)全拆解——9 章本机原样可跑、2 章需降级;六阶段路线图 12-14 周,每章一集 EP30 风格笔记 + 视频
起点问题
四个问题:这门课到底在学什么?
- Q1 · 为什么学大模型? · LLM 开发是"会用 API"和"能改模型"两个层次——这门课是后者的最短路径,且全开源、可本地跑。
- Q2 · 这门课教什么? · 11 章三条线:应用(提示学习/微调部署)、原理(RLHF/隐写/数学推理)、安全(越狱/评测/知识编辑/水印),再加多模态前沿。
- Q3 · 我们这台 GB10 能跑吗? · 128GB 统一内存 + CUDA 13:9 章原样跑,ch8 依赖过旧、ch9 显存门槛高,各需降级方案——总体验证:可行。
- Q4 · 怎么学? · 每章固定循环:读讲义 → 逐 cell 跑 Notebook → 改参数重跑 → 写笔记 → 录视频。五步闭环,12-14 周。
核心矛盾: 教程是为"80GB A100 工作站"写的,我们的武器是"128GB 统一内存的 ARM 盒子" ——逐章评估显存口径,是开篇第一课
💡 本节要点:起点问题:为什么学(两层能力)→ 教什么(应用/原理/安全三线)→ 能不能跑(9/11 原样)→ 怎么学(五步闭环);核心矛盾:教程的 A100 口径 vs 我们的统一内存
设计决策
六阶段路线图:从 API 到综合项目
P0 环境 0.5 周 每章独立 venv,跑通 ch1 → P1 应用入门 2 周 ch2 提示学习 + ch1 微调部署 → P2 原理动手 3 周 ch11 RLHF + ch7 隐写 + ch4 数学推理 → P3 安全攻防 3 周 ch6 越狱 + ch10 智能体安全 + ch3 知识编辑 + ch5 水印 → P4 前沿 2 周 ch9 GUI 智能体 + ch8 多模态 → P5 综合项目 1-2 周 端到端小产品
- 🧭 · 先应用后原理 · 前两周先"用起来"(API + 微调),建立正反馈,再进原理(RLHF 是理解对齐的钥匙)。
- 🔒 · 安全单独成段 · 越狱/评测/编辑/水印四章串联成安全专题——这是教程最有特色的部分,也是"能攻能防"的分水岭。
- 🪜 · 难度递增 · 1.5B → 7B → 13B,显存需求从 6GB 爬到 26GB,统一内存全程装得下。
为什么不是按章号顺序学? 章号是作者写作顺序,不是学习顺序——ch2(API)比 ch1(微调)更平缓,ch11(RLHF)是理解一切的枢纽,放第三位。
💡 本节要点:设计决策:六阶段 P0-P5(0.5+2+3+3+2+1.5 周 = 12 周);先应用后原理、安全单独成段、显存难度递增;不按章号顺序,按依赖关系排序
核心代码 1 · 设备实测
先验证武器:GB10 的规格与 torch 可用性
import torch
print(torch.__version__) # 2.12.0+cu130
print(torch.cuda.is_available()) # True
print(torch.cuda.get_device_name(0)) # NVIDIA GB10
# SM121 架构:FlashAttention 的 CuTe 内核编不出来(EP32 已踩过)
print(torch.backends.cuda.flash_sdp_enabled()) # 用 SDPA 兜底
print(torch.backends.cuda.mem_sdp_enabled())
规格推演: 128GB 统一内存对"参数放得下"极度宽容:7B BF16 ≈ 14GB、13B ≈ 26GB、GPT-2-XL ≈ 6GB。真正的约束在编译层——凡要现场编 CUDA 扩展的库(FA、部分 vLLM 算子),在 SM121 上都要换方案。训练 1.5B 全参 SFT 的 optimizer 态约 15GB,完全放得下。
💡 本节要点:核心代码 1:设备实测——GB10 / torch 2.12.0+cu130 / CUDA 可用;128GB 统一内存装得下 7B-13B;硬约束是 SM121 编译层(flash-attn → SDPA)
核心代码 2 · 11 章可行性矩阵
逐章判定:9 章原样跑,2 章需降级
| 章 | 主题 | 核心模型 | 本机判定 |
|---|---|---|---|
| ch1 | 微调与部署 | BERT | ✅ 原样跑 |
| ch2 | 提示学习 | API + CoT | ✅ 原样跑 |
| ch3 | 知识编辑 | GPT-2-XL | ✅ 原样跑 |
| ch4 | 数学推理 | Qwen2.5-Math-1.5B | ✅ 可跑(vLLM 换新版) |
| ch5 | 模型水印 | Baichuan-7B | ✅ 原样跑 |
| ch6 | 越狱攻击 | Llama-2-7b/13b | ✅ 原样跑 |
| ch7 | LLM 隐写 | GPT-2 | ✅ 原样跑 |
| ch8 | 多模态 | NExT-GPT | ⚠️ 推理演示 |
| ch9 | GUI 智能体 | Qwen2-VL-7B | ⚠️ QLoRA 降级 |
| ch10 | 智能体安全 | R-Judge-7B | ✅ 原样跑 |
| ch11 | RLHF | GPT-2 + BERT | ✅ 原样跑 |
| 判定逻辑: "✅ 原样跑"= 依赖与 CUDA 13 兼容 + 显存放得下。ch8 卡在 torch 1.13/CUDA 11.6 旧依赖(Step 7 展开);ch9 卡在 3×80GB 全参 SFT 门槛(Step 8 展开)。 | |||
| > 💡 本节要点:核心代码 2:可行性矩阵——11 章里 9 章 ✅、2 章 ⚠️(ch8 依赖过旧 → 推理演示;ch9 显存门槛 → QLoRA);判定双标准:依赖兼容 + 显存放得下 |
核心代码 3 · 降级方案
两条降级路线:QLoRA 与 SDPA
# ch9 路线:3×80GB 全参 SFT → 单卡 QLoRA 4-bit
from transformers import BitsAndBytesConfig
bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_use_double_quant=True)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-VL-7B-Instruct",
quantization_config=bnb, device_map="auto")
from peft import LoraConfig, get_peft_model
model = get_peft_model(model, LoraConfig(r=8, lora_alpha=16, lora_dropout=0.05))
# 训练参数:batch 1 + gradient_checkpointing,激活省一个量级
# ch4 兜底:vLLM 编译失败 → HF generate(语义等价,速度略慢)
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-Math-1.5B")
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Math-1.5B")
out = model.generate(**tok("...", return_tensors="pt").to("cuda"), max_new_tokens=512)
为什么可行: QLoRA 把 7B 全参训练的内存需求从 ~120GB 压到 ~20GB 内(4-bit 权重 + 只训 adapter);SDPA 替代 FA 语义等价(EP32 已验证)。降级不改变学习目标——你学的还是"怎么训",只是把显存换成了技巧。
💡 本节要点:核心代码 3:降级方案——ch9 走 QLoRA(4-bit + LoRA r8 + batch1 + grad ckpt),ch4 走 HF generate 兜底;降级换的是显存,不变的是学习目标
理解型踩坑 ① · 旧依赖的墙
ch8 NExT-GPT:torch 1.13 撞上 CUDA 13
NExT-GPT 官方环境锁定 torch 1.13 / CUDA 11.6 → 本机 CUDA 13.0 无法降级(驱动层) → 三阶段训练直接跳过 → 改为推理演示 + 论文精读
为什么降不动: CUDA 13 的驱动不兼容 11.6 时代的预编译包,而源码编译在 ARM 上又是另一层坑。这不是"装个老环境"能解决的——是架构代差。
应对: 不硬刚。ch8 的价值在"三阶段训练逻辑"(编码器对齐 → 指令微调 → 多模态微调),这个用论文 + 推理演示完全能学透。
注:这个坑的教训:评估一个教程能不能跑,第一件事不是看显存,是看 requirements.txt 的 torch 版本。
💡 本节要点:踩坑 1:ch8 的旧依赖墙——torch 1.13/CUDA 11.6 与 CUDA 13 架构代差,装不回去;降级为推理演示+论文精读,训练逻辑照样学透
理解型踩坑 ② · SM121 编译层
flash-attn 编不出来:换 SDPA,语义等价
教程多处依赖 flash-attn → GB10 (SM121) 的 CuTe 内核编译失败 → 全部换成 PyTorch SDPA → 逐段注意力,语义等价
架构性坑: 这不是配置问题,是 Blackwell SM121 对旧内核的兼容性——凡是要编译 CUDA 的库都要逐个试。EP32 已经验证:SDPA 按 cu_seqlens 逐段做注意力,正确性不妥协。
通用原则: 在 GB10 上,优先选"纯 PyTorch 实现"的路径;遇到编译失败先问"有没有官方 SDPA/新版替代",再考虑降级。
💡 本节要点:踩坑 2:SM121 编译层——flash-attn CuTe 内核编不出来(EP32 同款坑);统一换 PyTorch SDPA;原则:GB10 上优先纯 PyTorch 路径
理解型踩坑 ③ · 显存口径
教程说"40GB 显存",我们只有"128GB 统一内存"——谁对?
教程口径:80GB A100 工作站,显存 = 独立 GPU 内存 → 我们口径:128GB 统一内存,CPU/GPU 共享 → 结论:1.5B 全参 SFT 的 optimizer 态 ~15GB,放得下
为什么不是 40GB 就完蛋: 教程的 40GB 是把 batch 4 × grad_accum 16 的激活撑到最大;统一内存架构下,显存和内存是一块池子,瓶颈从"显存不够"变成"总量够不够 + 带宽够不够"。
正确问法: 不是"有没有 40GB 显存",而是"模型参数 + optimizer 态 + 激活是否 < 可用统一内存"。1.5B 全参 ≈ 15GB,7B QLoRA ≈ 20GB,都过。
💡 本节要点:踩坑 3:显存口径——教程的 A100"40GB 显存" vs 我们的"128GB 统一内存";正确问法是参数+optimizer+激活 < 可用总量;1.5B 全参 15GB、7B QLoRA 20GB,都放得下
横向话题 · 系列形式
每章一集:笔记 + 视频双产出,EP30 风格
- 📝 · 笔记 · EP30 风格五段式:起点问题 / 设计决策 / 核心代码 / 理解型踩坑 / 验证数据,每段后 💡本节要点。
- 🎬 · 视频 · 12 步 HTML deck(1920×1080 MUJI 极简)+ 本地 Qwen3-TTS 口播 + Playwright 录屏 + ffmpeg 合成。
- 🧭 · 定位 · 笔记是"可检索的知识库",视频是"可传播的学习过程"——同一内容,两种载体。
EP30 风格笔记 → 12 步口播稿 → HTML deck → TTS 合成 → 录屏 → 合成 MP4
启示: 这个系列不只记录"学到的结论",更记录"踩坑的过程"——知识编辑、隐写、RLHF 这些章,踩坑本身就是最有价值的内容。💡 本节要点:横向话题:每章一集双产出——EP30 风格笔记(可检索)+ 12 步视频(可传播);记录的不只是结论,更是踩坑过程
验证数据 · 设备实测
一份 GB10 的账:跑教程前先量好底子
128GB
统一内存(官方规格)
923 GB
可用磁盘
2.12.0
torch + cu130
9/11
章节原样可跑
| 验证项 | 结果 |
|---|---|
| GPU 识别 | NVIDIA GB10 / SM121,torch.cuda.is_available() = True |
| 内存总量 | 128GB 统一内存(官方规格;free 以 GiB 二进制显示约 121 GiB) |
| 磁盘余量 | 923 GB(教程模型总量 ~60-80GB,绰绰有余) |
| 编译层 | flash-attn 不可用 → SDPA 已验证等价(EP32) |
| 章节判定 | ch1-7,10,11 原样可跑;ch8 推理演示;ch9 QLoRA 降级 |
注:口径:教程要求的"40GB 显存"对应 A100 独立显存;本机是统一内存池,按"参数 + optimizer + 激活 < 128GB"评估。
💡 本节要点:验证:GB10 实测——128GB 统一内存 / 923GB 磁盘 / torch 2.12+cu130 / SDPA 可用;9/11 章原样可跑;教程全部训练任务本机可行
总结
路线图就是本期的答案
—— 应用(提示学习/微调)→ 原理(RLHF/隐写/推理)→ 安全(越狱/评测/编辑/水印)→ 前沿
11 章三线地图
—— 9 章原样跑,ch8 推理演示、ch9 QLoRA 降级;统一内存是最大优势,SM121 编译是最大约束
设备评估
—— P0-P5 六阶段,12-14 周,每章五步闭环(讲义→跑代码→改参数→笔记→视频)
学习路线
理解了地图和装备,下一步就是走进第一章: 提示学习——LLM 开发者的第一技能
- 📐 · EP36 · 开篇 · 本期:11 章地图 + 设备评估 + 六阶段路线图 ✅
- 💬 · EP37 · 提示学习 · 下期:ch2 提示学习与思维链——API、few-shot、CoT 实战
- 🛠️ · EP38 · 微调部署 · 预告:ch1 微调与部署——BERT 分类 + Gradio 一键上线
本期证据:Lordog/dive-into-llms 仓库 11 章 README/Notebook 逐章分析 · 本机 torch/内存/磁盘实测 · EP30-35 系列视频链路复用
💡 本节要点:总结:11 章三线地图 → 设备评估(9/11 可跑、统一内存优势、SM121 约束)→ P0-P5 六阶段路线图;下期 EP37:ch2 提示学习与思维链实战