适配与对齐模块五 · 综合项目项目约 20 分钟
动手:用 LoRA 微调一个开源小模型
把 PEFT 真正跑起来
学完这节你能:
- 用 peft 库给模型加 LoRA
- 在自建指令数据上微调
- 对比微调前后的指令遵循
模块五收尾:选一个开源小模型(如 1~3B),用 Hugging Face peft 库加 LoRA,在你自己造的几百条指令数据上微调,亲眼看它从「不太听话」变「听话」。
- 数据:造/找几百条指令-回答对,转成对话模板,做 loss mask。
- 加 LoRA:用 peft 的 LoraConfig 指定 r、target_modules(通常是注意力的 q/v 投影)。
- 训练:AdamW + 小学习率,冻结主体只训 LoRA,观察显存明显低于全参。
- 评估:拿几条没训过的指令,对比 base 与微调后的回答质量。
- 保存:只存 LoRA 适配器(几 MB),推理时加载底座 + 适配器。
加 LoRA(peft)
from peft import LoraConfig, get_peft_model
cfg = LoraConfig(r=8, lora_alpha=16, target_modules=['q_proj','v_proj'],
lora_dropout=0.05, task_type='CAUSAL_LM')
model = get_peft_model(base_model, cfg)
model.print_trainable_parameters() # 可训练参数只占极小比例💡 验收标准:可训练参数 <1%、显存显著下降、微调后对新指令的遵循明显变好、适配器文件只有几 MB。做到就掌握了工业界最常用的微调方式。
自测LoRA 微调跑通后,一个合格的信号是:
// 带走一句话
用 peft 给注意力投影加 LoRA、在小指令集上微调:可训练参数<1%、显存低、产出几 MB 适配器可热插拔。
独立练习
做到这些,才算完成本节
- 把任务拆成可运行的最小步骤,每一步都保留输出证据。
- 提交 README、结果、失败分析和下一次改进计划。
学习记录
记录本节阅读进度
建议先独立回答自测。读完记录不等于已经掌握。