AutoDL LoRA 最小实验手册

这份手册对应目录:

它不是“大模型正式训练方案”,而是第 11 章的最小 LoRA 微调闭环。目标只有一个:

如果你已经跑通一次,说明你已经掌握了后续课程实验最重要的第一步:先验证流程,再升级模型与数据。


一、这份实验和课程内容怎么对应

它对应第 11 章里讲的四件事:

  1. 用已有因果语言模型做微调,而不是从零训练模型
  2. 用 LoRA 只训练少量新增参数,而不是全参数更新
  3. 用 instruction / input / output 三段式样例构造最小监督数据
  4. 训练后保存 adapter,并重新加载做推理验证

这正是课上“预训练模型 + PEFT + 最小数据闭环”的落地版本。


二、目录里每个文件在做什么


三、真实训练链路是什么

这套代码的真实流程很清楚:

  1. 读取 data/sample_train.jsondata/sample_val.json
  2. build_text() 把每条样例拼成:
Instruction: ...
Input: ...
Response: ...
  1. 用 tokenizer 做 truncation + padding="max_length",默认 max_length=128
  2. 加载 AutoModelForCausalLM
  3. LoraConfig(r=8, lora_alpha=16, lora_dropout=0.05) 包装模型
  4. DataCollatorForLanguageModeling(mlm=False) 做因果语言模型训练
  5. Trainer 跑 1 epoch 的最小训练
  6. 把 adapter 和 tokenizer 保存到 outputs/...
  7. 02_eval_and_infer.ipynb 中重新加载并生成文本

从教学上看,这个链路很合理,因为它把第 11 章最重要的“最小可运行闭环”完整保留下来了。


四、这份实验的优点

所以它很适合作为:


五、这份实验没有做什么

这点要和学生讲清楚。

没有做下面这些更真实的大模型工程步骤:

因此它的定位不是:

而是:


六、建议学生怎么用

建议顺序:

  1. 先跑 00_check_env.ipynb
  2. 再跑 01_lora_demo.ipynb
  3. 然后跑 02_eval_and_infer.ipynb
  4. 最后再看 train_lora.pyrun_train.sh

这样学生会形成一条很清楚的迁移路径:


七、学生在这次实验里应该重点观察什么

1. 数据格式

这套代码不是直接喂 instruction / input / output 三个字段,而是先拼成一段文本。
这能帮助学生理解:

2. LoRA 的位置

get_peft_model(model, lora_config) 是整个实验的核心。
学生要知道:

3. 输出目录

训练结束后保存的不是一整个新模型,而是:

这正是第 11 章里“LoRA 保存的是增量参数”的最好例子。

4. 推理验证

02_eval_and_infer.ipynb 的作用不是追求好结果,而是确认:


八、建议课堂上强调的结论

  1. 第一次 LoRA 实验,不要先追求大模型,要先追求“全流程跑通”。
  2. 跑通最小例子之后,才有资格讨论更大的模型、更长的上下文和更复杂的数据。
  3. 这份实验最重要的成果不是生成质量,而是你真正理解了:

九、下一步怎么升级

在这份最小实验跑通之后,后续升级可以按这个顺序做:

  1. tiny-gpt2 换成课程指定的小型 instruction model
  2. 把样例数据换成更像真实任务的数据
  3. 显式加入量化
  4. 显式指定 target_modules
  5. Trainer 升级到 SFTTrainer
  6. 增加更可靠的验证与评测

这条升级路线,正好对应第 11 章从“概念验证”走向“真实大模型微调”的课程主线。