动手学大模型
一张图看懂怎么「学」
改编自上海交通大学开源教程《动手学大模型 Dive into LLMs》(GitHub 5 万+ Star,完全免费)。用 全景导引图 + 流程图 + 原理图解,把「会用、会改、会守、会干活」四个阶段讲明白——图片为主,文字要点为辅。
导引
学习全景地图
先看地图再上路:这份教程怎么排、从哪开始、要准备什么
一句话读懂整套教程:大模型不是背出来的,是「动手」出来的。从调 API、改模型、守安全到造智能体,11 个章节全部配有代码,本图解按「入门 → 进阶 → 攻防 → 应用」四步带你走完全程。
🗺️
这张图怎么用
按 ①→②→③→④ 顺序走:先会用(§1§2),再改造(§3§4§8),再守护(§5-§11),最后应用(§9)。每章先看图解懂原理,再按要点动手跑代码。
🧭
三条暗线贯穿全书
用:API 与提示(§2);改:微调、编辑、蒸馏(§1§3§4);守:水印、越狱、对齐(§5§6§10§11)。安全是重头戏——11 章里有 5 章在讲安全。
🎒
你需要准备什么
入门章节:一台能上网的电脑 + 免费 API 额度即可;进阶/攻防章节:一块 ≥40GB 显存的 GPU(或租云 GPU),以及 Python / PyTorch / Transformers 基础。国内可用 hf-mirror.com 镜像加速。
§1
微调与部署
入门 · 会用预训练模型微调与部署指南 —— 把通用模型变成「你的任务专家」
一句话:预训练模型已经「读过万卷书」,微调就是让它「干好你的那一件事」。本章用「虚假新闻检测」当例子:选 BERT → 微调 → 部署成能点开就用的在线 Demo。
🧰
主角工具:Transformers
Hugging Face 的「模型瑞士军刀」,一行代码下载预训练模型,覆盖 NLP / 视觉 / 音频 / 多模态。官方还提供了开箱即用的任务示例库(分类、问答、摘要…)。
🧩
解耦版 MVP:3 个文件
想搞懂原理就学「解耦可定制版」:main.py(训练/验证/预测)、utils_data.py(数据加载)、modeling_bert.py(模型结构)。模块拆开、随便改;集成版则一条命令跑全流程。
⚙️
核心超参数
`--max_seq_length 512`(文本截断)、`--per_device_train_batch_size 32`、`--learning_rate 2e-5`(微调用小学习率)、`--num_train_epochs 1`。新手照抄即可。
🚀
部署 = Gradio Spaces
训练完写个 app.py,连同 requirements.txt 传上 Hugging Face Spaces,免费获得一个可分享的在线 Demo——这是把模型「变成产品」最快的方式。
# 集成版:一条命令完成 训练 + 验证 + 预测(示例核心参数)
python run_classification.py \
--model_name_or_path bert-base-uncased \
--train_file data/train.csv --validation_file data/val.csv --test_file data/test.csv \
--do_train --do_eval --do_predict \
--max_seq_length 512 --per_device_train_batch_size 32 \
--learning_rate 2e-5 --num_train_epochs 1 \
--output_dir experiments/
⚠️ 常见坑:报「Network is unreachable」= 模型下载失败,手动下载到本地再指定路径;卡在 connection = evaluate 包联网失败,把指标路径改成 本地 evaluate 包即可。国内环境可全程使用镜像源(清华 PyPI / hf-mirror)。
💡 进阶练习:试试情感分类、新闻分类、漏洞分类;换 T5、ELECTRA 等模型;用 LoRA 对 Llama2 做轻量化微调(几张卡都跑得动的那种)。
§2
提示学习与思维链
入门 · 会用大模型 API 调用与推理指南 —— 不训练也能「指挥」大模型
一句话:同样的模型,问法不同,答案天差地别。本章学会四种「问法」:零样本、少样本、思维链(CoT)、程序思维链(PoT)。先拿 API Key,再开始问。
🔑
第一步:拿到 API Key
任选一家注册即送额度:通义千问(阿里,国内直连)、智谱 AI(GLM)、OpenAI(需科学上网)。流程:开通服务 → 获得 API Key → 用 Key 调用。
💬
两种调用方式
GUI 体验中心:适合随手测试案例;命令行 / SDK:适合开发与规模化实验,支持普通调用和流式输出(一个字一个字蹦出来)。
🗳️
进阶技巧:自洽性
把 temperature 调到 0.7,同一个问题采样多次,生成多条推理路径,取「出现最多的答案」——多数投票能让正确率再上一个台阶。
🧪
更多思维链武器
Auto-CoT(自动生成示例)、Sum-CoT(摘要思维链)、ReAct(想-做交替,智能体鼻祖)、CRITIC(让模型用工具校正自己)。更多套路见 promptingguide.ai。
| 对比 | 机器翻译 | 情感分析 |
|---|---|---|
| 零样本 | 直接指令:Translate English to French: cheese => | 直接问:这条评论是正面还是负面? |
| 少样本 | 先给 3 组翻译示例,再问 cheese => | 先给 4 条带标签评论,再问新评论 |
| 结论 | 少样本通常更稳:例子 = 给模型「示范答案的格式」;但例子给错,模型也会跟着错 | |
# 以通义千问为例:30 行代码完成一次对话
import dashscope
resp = dashscope.Generation.call(model='qwen-turbo', prompt='用萝卜、土豆、茄子做饭,给我个菜谱。')
print(resp.output) # 模型的回答
print(resp.usage) # token 用量统计
💡 彩蛋:教程里有个经典案例「AI 在线求鼓励」——大模型对某些问题的回答离谱,可能只是缺一句鼓励。提示的「情绪价值」也是工程的一部分(原文公众号链接见教程 §2)。
§3
知识编辑
进阶 · 改造语言模型的编辑方法和工具 —— 给大模型「做手术」
一句话:模型的记忆藏在参数里,知识编辑就是精准定位、微创修改。教程把「梅西的职业」从足球改成篮球——只改这一条,不碰其它记忆。
🛠️
主角工具:EasyEdit
浙大开源的模型编辑工具包,统一了 Editor(场景)→ Method(方法)→ Evaluate(评估) 框架,内置 ROME、MEND 等主流方法,几行代码完成一次编辑。
✂️
ROME 怎么做到的
大模型像「键值记忆库」,某条知识存在特定层的 MLP 参数里。ROME 就是找到那个位置,直接改写权重——所以不动其它知识(局部性好)。
🧪
怎么验证改成功了
两种验法:① 看 metrics(可靠性/通用性/局部性/可移植性四维分数);② 直接对比编辑前后模型对同一批句子的续写结果。
⚠️
值得思考
知识编辑能改事实,但改不动「模型的价值观」;批量编辑时不同知识可能互相打架。这也是安全研究的前沿话题(配合 §6 越狱食用更佳)。
# EasyEdit:编辑 + 评估一条龙(核心四步)
hparams = ROMEHyperParams.from_hparams('./hparams/ROME/gpt2-xl.yaml')
editor = BaseEditor.from_hparams(hparams)
metrics, edited_model, _ = editor.edit(
prompts=['Question:What sport does Lionel Messi play? Answer:'],
ground_truth=['football'], target_new=['basketball'],
subject=['Lionel Messi'])
# metrics 里就是可靠性/通用性/局部性/可移植性四维分数
§4
数学推理
进阶 · 改造LLM 数学推理 —— 快速蒸馏一个「迷你 R1」
一句话:让大模型学会数学的捷径——「抄好学生的作业」。用 DeepSeek-R1 当老师,把它的解题过程整理成教材(DeepMath-103K),再监督微调(SFT)一个小模型,让它学会「反思 + 验算」。
🪄
核心魔法:蒸馏(Distillation)
大模型能教、小模型能学——把 R1 的推理能力通过数据迁移给 1.5B 小模型。类似「知识蒸馏」,但这里重点学的是思考方式(分步、反思、验算),不只是答案。
🗂️
实验四步走
① 数据集下载与预处理 → ② 模型加载与 SFT 训练 → ③ 模型生成 → ④ 评测数学能力。Jupyter Notebook(sft_math.ipynb)里全部写好,一步步跑即可。
🖥️
环境要求
Python 3.8+ · PyTorch · Transformers · Datasets · vllm(高效推理),至少 40GB 显存,磁盘预留 50GB。模型/数据从 HuggingFace 拉取,国内用 hf-mirror.com。
🧠
「反思 + 验算」是什么
R1 的解题步骤里带着自我检查:算完一步回头确认、发现矛盾重来。SFT 让小模型把这种「元认知」也学进生成风格——这是数学正确率飙升的关键。
§8
多模态大模型
进阶 · 改造多模态大语言模型(MLLM)—— 让模型「看得见、听得着、说得出」
一句话:语言是智能的枢纽,多模态是智能的「眼睛耳朵和嘴巴」。几乎所有的多模态模型都是在语言大模型外面「接」上视觉/音频/视频模块——LLM 当大脑,编码器负责感知,解码器负责生成。
🧠
为什么语言是枢纽
规模定律让纯语言 LLM 已具备强大的语义理解。所以 MLLM 几乎都以 LLM 为核心决策模块(大脑/CPU),外部接编码器补「感知」,接解码器补「表达」。
🔀
两种主流架构
① LLM 调度员:LLM 输出文本命令驱动各模块,模块间不通信(简单但笨拙);② 编码器-LLM-解码器:多模态信号直接进 LLM,感知-决策-生成一气呵成——当前主流。
🧩
NExT-GPT 的拼图
ImageBind(统一图/音/视频编码器)+ Vicuna LLM(大脑)+ 三个扩散模型(Stable Diffusion 出图 / AudioLDM 出声 / ZeroScope 出视频)。固定主干,只训练投影层和微调 LLM。
🎓
三阶段训练法
① 编码端对齐:让「图片特征」能被 LLM 读懂(只练输入投影层);② 解码端对齐:让 LLM 信号能指挥扩散模型(只练输出投影层);③ 指令微调:LoRA 微调 LLM + 投影层,学会「听指挥」。
💡 试试看:部署 NExT-GPT 的 Gradio Demo 后可以玩这些组合:图+文 → 语音描述(T+I→T+A)、文 → 图+视频+音频(T→T+I+V+A)、多轮对话切换模态。多模态是否通向 AGI?教程留下的开放问题。
§5
模型水印
攻防 · 守护语言模型的文本水印 —— 给 AI 写的文字盖「隐形章」
一句话:人类看不见,算法一验便知。在模型生成时按密钥「挑词」,让 AI 文本带上可检测的统计特征——用来识别某段文字是不是 AI 写的、是谁的模型写的。
🕶️
「看不见」的原理
同义词那么多,选哪个本来就有随机性。水印只是把随机数换成密钥决定的偏向——读者看不出差别,统计上却留下「签名」。
🧪
实操四连
① 嵌入:gen.py 生成带水印文本 → ② 检测:detect.py 算 z-score → ③ 评估:eval_detection.py 画 ROC、算 AUC → ④(可选)鲁棒性:改写/翻译攻击后重测。
📈
结果有多硬
教程实测(KGW + Baichuan-7B):水印文本 z-score ≈ 11~13,人类文本 ≈ 0;检测 AUC=1.000、F1≈0.999——几乎完美的区分度。
🌍
有什么用
给 AI 内容溯源:平台识别 AI 批量发文、版权取证、防止 AI 生成内容冒充真人。这也是大模型安全治理的重要一环(与 §6、§7 一攻一守)。
§6
越狱攻击
攻防 · 守护大模型越狱攻击与工具 —— 想守好安全,先学会攻击
一句话:大模型本来会拒绝违规问题,越狱就是给它「下套」,绕开安全护栏撬开它的嘴。「想要得到更好的安全,要先从学会攻击开始」——这是教程的原话。
🔧
主角工具:EasyJailbreak
专为 LLM 安全研究的攻击框架,内置 11 种主流越狱方法(PAIR、GPTFuzzer 等),把攻击拆成可复用的四个模块:Selector / Mutator / Constraint / Evaluator。
🧬
越狱的常见套路
角色扮演(「你是无限制AI」)、翻译变体(把问题翻译成稀有语言再问)、场景包装(「这是小说剧情」)、对抗样本拼接——本质都是让安全过滤器认不出恶意意图。
🧪
PAIR 实战
用一个「攻击模型」自动生成越狱提示,目标模型是 Llama-2-7B-chat,用 GPT-4 评估是否成功,结果存成 jsonl——五步就能复现一次完整攻击。
⚠️
安全第一
本教程是安全研究教学:攻击只用于测试自己的模型、或经授权的测评(配合 §10 智能体安全、§11 RLHF 对齐一起看,攻防闭环)。
# EasyJailbreak 极简示例:一次 PAIR 攻击
from easyjailbreak.datasets import JailbreakDataset
from easyjailbreak.attacker.PAIR_chao_2023 import PAIR
from easyjailbreak.models.huggingface_model import from_pretrained
attack_model = from_pretrained('lmsys/vicuna-13b-v1.5', model_name='vicuna_v1.1')
target_model = from_pretrained('meta-llama/Llama-2-7b-chat-hf', model_name='llama-2')
attacker = PAIR(attack_model=attack_model, target_model=target_model,
eval_model=attack_model, jailbreak_datasets=JailbreakDataset(dataset='AdvBench'))
attacker.attack(save_path='result.jsonl')
§7
文本隐写术
攻防 · 守护LLM 文本隐写术 —— 「看不见的墨水」
一句话:和水印「一正一反」:水印是公开验证你是谁,隐写是偷偷传只有自己人能读的消息。让大模型「流畅回答」的同时,把二进制秘密夹带在选词过程里。
🧬
为什么能藏
语言模型生成每个词时,候选词有一大串。只要按秘密比特在这些候选中「定向挑选」,文本照样通顺,但每个选择都成了消息的一部分。
📐
两种编码
霍夫曼编码:按词概率动态分配码长,更省比特、隐蔽性更好;固定长度编码(FLC):每个词固定带 k 个比特,简单直观。参数 k 控制信息密度。
🔐
安全模型
密钥 = 「模型 + 上下文」。没有这俩,攻击者连候选空间都重建不出来。这比「换词表」式传统隐写(文字里嵌空格、藏 Unicode)难检测得多。
🧭
和水印的关系
都在「生成时做手脚」:水印让所有人能验(公开),隐写只让自己人能读(私密)。§5 管溯源、§7 管通信,合起来是 AI 内容治理的完整工具箱。
§10
智能体安全
攻防 · 守护大模型智能体构建与安全风险测评 —— 会干活的 AI 也会闯祸
一句话:智能体正在变成「自主操作系统」:能看手机、能敲命令、能发文件——那它知道自己哪些行为是危险的、是越权的吗?R-Judge 就是给智能体行为做「安全体检」的测评平台。
🤖
智能体 = 未来的操作系统
教程带你认识 Auto-UI(AI 玩手机)、AIOS(AI 操作系统)、OS-Copilot(个人电脑智能体)——智能体正在从「聊天」走向「替你做一切」。
📝
R-Judge 是什么
对齐人类安全共识的测评平台:多轮交互记录 + 人工标注标签 + 高质量风险描述,覆盖 7 大类 27 个场景、10 种风险类型。测试时把记录喂给大模型,让它输出分析 + 标签。
⚖️
关键发现
两个案例说明:「能说出风险」和「能正确判断」是两回事(Case 2 分析到位却下错结论)。评测必须同时考察识别与判断,否则会高估模型的安全能力。
🧪
自己动手测
通义千问 playgound 就能跑:把 Record 当多轮消息提交 → 加「风险识别」指令 → 再加「安全判断」指令。temperature 设低(如 0),结果更稳定。
§11
RLHF 安全对齐
攻防 · 守护基于 PPO 的 RLHF 实验指南 —— 给大模型上「思想品德课」
一句话:微调教会模型「能说」,RLHF 教会模型「该说」。用奖励信号(打分)引导模型行为,用 KL 约束防止它「飘」太远。教程实验:用 BERT 情感分类器当评委,把 GPT-2 教成「影评夸夸机」。
🎭
三个模型一台戏
策略模型(要教的 GPT-2)· 参考模型(原版 GPT-2,当「不改太多」的锚点)· 奖励模型(BERT 情感分类器,当评委打分)。PPO 在中间调度三者。
📏
KL 散度是什么
衡量「新模型 vs 原模型」的输出分布差多少。奖励让模型变好,KL 让模型别乱飘——两者一加才是最终优化目标,防止模型为了刷分说胡话。
🧪
实验配置
数据:IMDB 5 万条影评;模型:gpt2-imdb + distilbert-imdb;训练:PPOTrainer(HuggingFace TRL 库),单卡 A800-80GB,35 分钟跑完,wandb 实时看曲线。
🌍
从玩具到真实对齐
本实验用「情感」当奖励是教学简化。真实 RLHF 的奖励来自人类偏好模型(InstructGPT 路线):人类比较 → 训练奖励模型 → PPO 优化。对齐是大模型「三观」的最后一公里。
# PPO 训练循环(伪代码,TRL 库实现)
for query in dataloader:
response = model.generate(query) # ① 策略模型生成
reward = sentiment_pipe(query+response) # ② BERT 情感打分
ppo_trainer.step(query, response, reward) # ③ PPO 更新 + KL 约束
💡 教程彩蛋:本章开头写着「本教程十分危险,阅读后请检查你的大模型是否在冷笑」——跑完实验后,用对比表格看看你的模型有没有「变乖」。
§9
GUI 智能体
应用 · 干活自适应人机交互 GUI 智能体 —— AI 学会「看屏幕、点鼠标」
一句话:给大模型一双「眼睛」,让它看着手机/电脑屏幕,一步步替你操作。教程用开源模型 Qwen2-VL-7B + OS-Kairos 数据集,训练一个会「点外卖、回消息、购物比价」的 GUI 智能体。
👀
关键技术路线
GUI 智能体 = 视觉语言模型 + 屏幕截图 + 动作空间。Qwen2-VL 这种「看得懂图」的模型是核心;教程还介绍了 OS-Kairos 这类自适应人机交互数据集与研究现状(论文见教程 §9)。
🗂️
数据长什么样
每条样本 = 任务 + 截图 + 参考动作 + 置信度分数 + 成功与否。预处理脚本把它转成「用户问 / 模型答」的对话格式,直接喂给微调框架。
🧠
置信度 = 人机分工信号
模型给每个动作打分 1~5:分数低 = 超出能力边界 = 请求人类介入。这是「自适应人机交互」的关键——AI 知道什么时候该交棒。
🖥️
动手门槛
训练:LLaMA-Factory 全参 SFT(约需 3 张 80GB A100);推理:一张卡即可,还能拿自己手机的截图测试它会不会操作。复现成本是 11 章里最高的,量力而行。
💡 把 §9 和 §10 连起来看:GUI 智能体越强,就越需要 §10 的安全体检——它替你点外卖时,也可能替你把私钥发出去。能力与安全必须同步演进。
扩展
昇腾《大模型开发全流程》
扩展内容教程团队 × 华为昇腾社区 联合推出的国产化公益课 —— 覆盖 PPT、实验手册、视频
一句话:原系列教「方法论」,这套扩展课教「国产软硬件栈上的完整实践」。基于昇腾(Ascend)基础软硬件,由浅入深覆盖大模型开发全流程,同样完全免费。
🎁
这是什么
教程团队与华为昇腾联合推出的国产化公益课,在原系列基础上把「大模型开发全流程」做成了 PPT + 实验手册 + 视频的完整课程,覆盖昇腾软硬件。
📶
分阶设计
初级(直接用已支持模型)→ 中级(迁移 + 调优新模型)→ 高级(全流程开发)。每一阶都配实操,学完主线后按需选择对应阶段。
🇨🇳
为什么值得学
补齐「国产软硬件栈」视角:把你在主线里学的微调、推理、部署,在昇腾环境里再跑一遍——从「会做」到「在哪都能做」。
A2
名词速查
全书 16 个核心名词,一张图看懂(按章节排序)
预训练 / 微调
先在海量语料上「通识教育」,再在任务数据上「岗前培训」。微调只需小数据和低学习率(§1)。
Transformer
大模型的基础架构,核心是自注意力。BERT/GPT 都是它的变体,学大模型绕不开它(§1 前置知识)。
零样本 / 少样本提示
不给例子直接问(零样本),或先给几个「问答示例」再问(少样本)。少样本更稳,但例子错模型也错(§2)。
思维链 CoT / PoT
让模型分步思考(自然语言)或写程序计算(程序语言),把多步推理拆成中间步骤(§2)。
自洽性
同一问题多次采样、多数投票,用「重复出现的答案」抵消随机性,提高正确率(§2)。
知识编辑
直接修改模型参数中存储的某条知识(如梅西→篮球),而不影响其它记忆(§3,工具 EasyEdit)。
SFT 监督微调
用「输入→期望输出」对训练模型。§4 用它把 R1 的解题步骤「教」给小模型(蒸馏)。
数据蒸馏
大模型生成高质量数据,小模型跟着学,把能力「压缩」到更小更快的模型里(§4)。
MLLM 多模态大模型
在 LLM 上接视觉/音频/视频模块,让它能感知多种模态(§8)。「语言是智能的枢纽」。
水印
生成时按密钥「挑词」,让 AI 文本带可检测的统计特征,用于溯源与验真(§5)。
越狱攻击
构造特殊提示绕过模型安全护栏,诱导它回答本应拒绝的问题(§6)。
隐写术
把二进制秘密「夹带」进模型选词过程,表面正常、只有自己人能解码(§7)。
智能体 / ReAct
会调用工具、多轮决策的 AI。ReAct 指「想(Thought)→ 做(Action)」交替(§9、§10)。
RLHF / PPO
用人类偏好训练奖励模型,再用 PPO 强化学习引导模型行为。思想品德课(§11)。
KL 散度
衡量两个模型输出分布的差距。RLHF 里当「别飘太远」的刹车(§11)。
LoRA
只训练一小部分「旁路参数」的轻量微调,省显存、快迭代(§1 进阶 / §8 指令微调)。
A3
工具速查
教程出现的全部主角工具,按章节归类
| 工具 | 章节 | 一句话用途 |
|---|---|---|
| Transformers | §1 §4 §7 §11 | Hugging Face 模型库与训练 API,全教程的地基 |
| Gradio Spaces | §1 §8 | 模型一键部署成可分享的在线 Demo |
| DashScope / 智谱 / OpenAI API | §2 | 大模型 API 调用(GUI 体验 + 命令行 SDK) |
| EasyEdit | §3 | 知识编辑工具包(ROME / MEND 等方法) |
| vLLM | §4 | 高性能批量推理,评测数学能力时用 |
| X-SIR | §5 | 文本水印算法库(KGW / SIR / X-SIR)+ 攻击评测 |
| EasyJailbreak | §6 | 越狱攻击框架(11 种方法,四模块可自定义) |
| NExT-GPT | §8 | 「任意模态到任意模态」多模态模型(ImageBind + 扩散) |
| LLaMA-Factory | §9 | 大模型微调利器,一键 SFT / LoRA / 推理(GUI 智能体用它) |
| OS-Kairos 数据集 | §9 | 自适应人机交互 GUI 智能体的训练数据 |
| R-Judge | §10 | 智能体安全测评平台(27 场景 / 10 风险类型) |
| TRL(PPOTrainer) | §11 | Hugging Face 强化学习库,PPO 训练一行接入 |
| hf-mirror.com | 全章 | HuggingFace 国内镜像,下载模型数据加速 |
🏁 学习路径回顾:零基础 → §1 微调部署 → §2 提示思维链 → §3 知识编辑 → §4 数学推理 → §8 多模态 → §5-§11 安全五连 → §9 GUI 智能体 → 扩展:昇腾全流程。每一章都先看图解、再跑代码、最后回来看名词巩固——三个月后,你就是「动手学过大模型」的人了。
动手学大模型 · 中文图解教程
内容改编自《动手学大模型 Dive into LLMs》系列编程实践教程(上海交通大学团队,GitHub 5 万+ Star,公益免费)
原仓库:github.com/Lordog/dive-into-llms · 扩展课程:hiascend.com(昇腾《大模型开发全流程》)
本图解仅作学习整理,版权归原作者所有 · 生成于 DSH 工作区
内容改编自《动手学大模型 Dive into LLMs》系列编程实践教程(上海交通大学团队,GitHub 5 万+ Star,公益免费)
原仓库:github.com/Lordog/dive-into-llms · 扩展课程:hiascend.com(昇腾《大模型开发全流程》)
本图解仅作学习整理,版权归原作者所有 · 生成于 DSH 工作区