第 10 章:模型微调实战:LoRA 与 SFT

第 10 章:模型微调实战:LoRA 与 SFT

核心观点:如果通用大模型是”大学毕业生”,微调(Fine-tuning)就是”岗前培训”。LoRA 技术的出现,让原本需要几百万美元的微调成本,降低到了几百块人民币。

1. 引言:通才 vs 专才

GPT-4 什么都懂,但在写你们公司的”内部公文格式”时,可能总是写不对。
Prompt 工程可以解决一部分问题,但当规则太复杂、或者需要学习大量私有知识(Domain Knowledge)时,Prompt 就塞不下了。
这时你需要 SFT (Supervised Fine-Tuning,有监督微调)
你要给模型看 1000 份完美的内部公文,让它内化这种风格。

2. 核心概念:LoRA (低秩适配)

2.1 全量微调太贵了

一个 70B 的模型,权重有 140GB。
如果你要微调它,以前需要更新这 140GB 里的每一个参数。这就需要巨大的显存和算力(Full Fine-tuning)。

2.2 LoRA:四两拨千斤

微软提出的 LoRA (Low-Rank Adaptation) 发现:
改动模型并不需要改动所有参数。我们只需要在原模型旁边,外挂两个非常小的矩阵(A 和 B)。
训练时,冻结原模型,只训练这两个小矩阵。
推理时,把小矩阵的输出加到原模型上。

💡 比喻:想象模型是一个训练有素的特种兵(原始权重)。

  • 全量微调:把他回炉重造,从基因层面改造他。成本极高,而且容易把他练废了(Catastrophic Forgetting,灾难性遗忘)。
  • LoRA:给他戴一副特殊的”功夫眼镜”(LoRA Adapter)。戴上眼镜,他就会打咏春;换一副”厨师眼镜”,他就会炒菜。

这一副眼镜非常轻(只有几十 MB),易于切换。
LoRA 微调


3. 技术解析:SFT 数据集构建

微调的成败,80% 取决于数据质量。

3.1 格式 (Instruction Format)

通常是 JSONL 格式:

1
{"instruction": "将以下白话文翻译成文言文", "input": "今天天气真好。", "output": "今日天朗气清,惠风和畅。"}

3.2 数据清洗 (Data Cleaning)

  • 去重:重复数据会导致模型复读机。
  • 多样性:不要只给一种句式。
  • CoT 增强:如果想训练推理能力,Output 里最好包含思维链过程。

4. 工业实战:PEFT 技术栈

在 Python 中,我们使用 HuggingFace 的 PEFT (Parameter-Efficient Fine-Tuning) 库。

4.1 常用参数参考

  • Rank (r): LoRA 的秩。通常设为 8, 16, 32。越大越能学到复杂特征,但显存占用也越大。
  • Alpha: 缩放系数。通常设为 2 * r。
  • Target Modules: 要对哪些层加 LoRA?通常是对 q_proj, v_proj (Attention 层) 效果最好。

4.2 显存需求 (以 Llama 3 8B 为例)

  • Full Finetune: ~120GB (A100 x 2)
  • LoRA (16-bit): ~24GB (3090/4090)
  • QLoRA (4-bit): ~10GB (普通显卡也能跑!) -> QLoRA 是平民微调的神器

QLoRA 显存对比


5. 总结与预告

  • 本章总结
    • SFT 是注入垂直领域知识和风格的最佳手段。
    • LoRA/QLoRA 让个人开发者也能在消费级显卡上训练大模型。
    • 数据质量 > 数据数量。1000 条高质量数据胜过 10万条垃圾数据。
  • 下章预告
    我们讨论的都是文本(Text)。但世界是多模态的。下一章《多模态视界:CLIP 与 ViT》,我们将探索 AI 是如何”看见”并理解这个世界的。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×