LoRA 微调实战:用少量数据让模型学会你的领域

谭老师190 阅读

想让模型学会特定领域的表达(比如客服话术、代码风格、内部术语),全量微调成本太高,LoRA 是性价比最高的方案:只需要几 GB 显存、少量数据,就能让模型在特定任务上明显变好。

为什么 LoRA:它只训练一小部分低秩矩阵(不到模型参数的 1%),显存需求大幅下降。一张 24G 卡就能微调 14B 模型。效果上,对特定任务往往能追平全量微调。

训练流程(用 llama-factory,最省事)

Bash
# 数据格式:instruction 数据集 # {"instruction": "解释什么是RAG", "output": "RAG 是检索增强生成..."} llamafactory-cli train \ --model_name_or_path Qwen/Qwen2.5-7B-Instruct \ --stage sft \ --dataset your_data \ --finetuning_type lora \ --lora_rank 8 \ --output_dir ./lora-output

数据准备(决定成败)

  • 质量 > 数量。几百条高质量数据 > 几千条垃圾数据。每条数据要"指令清晰、答案正确、格式统一"。
  • 多样性。覆盖各种问法、各种场景,别只给一种模板。
  • 格式统一。instruction 数据集的格式要统一,混格式训练效果差。
  • 清洗。错误答案、重复数据、格式错乱的一定要清掉。垃圾进垃圾出。

训练参数

  • lora_rank:8-16 够用,太大容易过拟合。32 以上很少需要。
  • 学习率:2e-4 左右(LoRA 常用)。太高发散,太低不收敛。
  • epoch:3-5 个。多了过拟合(训练集表现好、测试集反而差)。
  • batch size:显存允许就大点,训练更稳定。

评估

微调后别只看训练 loss 降了多少,要看测试集上的表现

  • 准备一份微调前/后都不变的测试集
  • 对比微调前后在同一批测试问题上的表现
  • 关注:格式是否稳定、领域知识是否准确、通用能力有没有退化

  1. 通用能力退化。LoRA 微调可能让模型在通用任务上变笨(灾难性遗忘)。对策:混合一部分通用数据一起训练。

  2. 过拟合。训练集效果好、真实场景差,就是过拟合。减少 epoch 或 rank。

  3. LoRA 权重和基础模型版本要匹配。微调时的基础模型版本变了,LoRA 可能加载失败或效果异常。记录好基础模型的确切版本。

总结:LoRA 是"用 500 条高质量数据 + 几小时训练,让模型在特定任务上明显变好"的性价比之王。数据质量是最大的变量。

评论0

还没有评论,来抢沙发~