AI大模型微调
AI大模型微调
AI大模型微调
微调的作用
- 适应私有知识和数据
- 让通用模型变成从通才变成专才。
- 无需每次都通过 RAG(检索增强)传入上下文,降低延迟和成本。
- 优化推理效率与成本,提供模型推理效率
- 极大减少输入token数量,降低推理成本。
1
在不微调模型的情况下,为了让大模型生成特定风格的文本,通常需要设计非常复杂的提示词。微调后把原本写在提示词里的“风格指令”固化到模型参数中。把原本写在提示词工程prompt里的“规则”和“风格”,通过训练“烧录”到模型内部,从而实现输入极简、输出高质量、成本更低、风格统一的效果,无需再通过长prompt引导是XX角色等。
- 极大减少输入token数量,降低推理成本。
- 纠正模型行为
- 微调不仅可以“教”模型做什么,还可以“教”它不要做什么
- 可实现的行为控制:
- 减少幻觉:训练模型只基于给定上下文回答。
- 避免有害输出:过滤暴力、歧视性语言。
- 遵循指令格式:强制输出 JSON、Markdown、XML 等结构化格式。
- 保持中立立场:避免政治、宗教倾向性表达。
- 实现多任务或多风格切换
- 通过训练多个LoRA模块,可以让同一个基础模型“一键切换”不同能力。
涉及技术
监督微调(Supervised Fine-Tuning, SFT)
- 原理:准备一批高质量“输入-输出”样本
- 训练过程:让模型学习从短输入直接生成目标风格的输出。
- 结果:模型“记住”了这种风格,无需再通过长 prompt 引导。
LoRA(Low-Rank Adaptation)
- 问题:全参数微调成本高、难部署。
- 解决方案:使用 LoRA、QLoRA 等技术,只训练少量新增参数(矩阵分解,低秩矩阵),冻结原模型大部分参数。
- 优势:训练快,节省计算资源,提高训练效率;让大模型快速适应新任务;可轻松切换不同风格(换 LoRA 权重即可)
LoRA使用
LoRA的本质,是模型参数的“增量更新”。本身不能作为小模型独立使用,必须依附于基座模型。微调后输出一个体积很小的增量更新的权重文件。使用示例:
1
2
3
4
# 方式一:合并 LoRA 权重到原模型(适合独立部署)
model = model.merge_and_unload() # 合并 LoRA 权重
model.save_pretrained("./merged_model")
tokenizer.save_pretrained("./merged_model")
1
2
3
# 方式二:直接加载 LoRA 权重进行推理(推荐,灵活)
base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-7B-Instruct")
model = PeftModel.from_pretrained(base_model, "./lora-finetuned-wan21/checkpoint-500")
本文由作者按照 CC BY 4.0 进行授权