Featured image of post LoRA大模型微调

LoRA大模型微调

一、LoRA 是什么?

LoRA(Low-Rank Adaptation,低秩适应)是一种大模型微调技术。

问题的起点

大模型(比如 Qwen、Llama)动不动 7B、70B 参数。如果每次想让它学点新东西,都要重新训练所有参数,那需要几十张 A100 显卡跑几天——普通人根本没这个条件。

LoRA 的思路

不碰原模型,只在旁边挂一个「小插件」。

打个比方:

做法 类比
全量微调 把整本教科书改写成你想要的版本
LoRA 在教科书页边贴几张便利贴,写上你的补充说明

原始模型的权重完全不改。LoRA 只在某些关键层旁边插入一个极小的矩阵(低秩矩阵),训练时只更新这个矩阵的参数。

为什么叫「低秩适应」?

数学上,一个大矩阵可以用两个小矩阵的乘积来近似。LoRA 利用这个原理:原始权重矩阵 $W$ 不动,额外训练两个小矩阵 $A$ 和 $B$,模型的最终输出变成 $W + A \cdot B$。$A$ 和 $B$ 加起来可能只有原权重的 千分之一 大小。


二、LoRA 有什么用?

它的核心能力只有一个:以极低的成本,改变大模型的「行为方式」。

📌 LoRA 改变的是风格/格式/行为,不是知识
  • 想让模型学会新知识 → 用 RAG(检索增强生成)
  • 想让模型换一种方式说话、做事 → 用 LoRA

典型应用场景

场景 例子
风格迁移 让通用模型用鲁迅的文风写作
格式约束 强制模型输出严格 JSON,不多一个标点
角色扮演 把 Qwen 变成《原神》里的钟离
领域口吻 医疗问诊语气、法律文书的严谨措辞
指令遵循 让模型更好地遵守 system prompt,不乱发散

LoRA 的优势

  • 显存极低:7B 模型一张 RTX 3090(24G)就能训,甚至 8G 显卡也勉强能跑
  • 文件极小:训练产物只有几 MB,一个模型可以挂几十个不同的 LoRA,即插即用
  • 训练极快:几百条数据,半小时出结果
  • 不破坏基座:LoRA 卸载后,模型恢复原样,零风险

三、怎么使用 LoRA?

大体分四步:

第一步:准备数据

把你想要模型学会的「行为」写成示例对话。

假设你想让模型变成毒舌客服,你就写 50-200 条这样的对话:

1
2
3
4
5
用户:我的快递到哪了?
客服:亲,不出意外的话应该在快递车里晒太阳呢,建议您晒个日光浴等等它。

用户:能退款吗?
客服:能,流程大概和唐僧取经差不多,准备好您的订单号,我帮您开启这趟西行之旅。

数据量不用多,50-200 条高质量示例就能看到明显效果。质量远比数量重要。

第二步:选择工具

市面上一堆工具,但本质上都在做同一件事。推荐两个:

工具 特点 适合谁
LLaMA-Factory 有 Web UI,全程点鼠标 完全不想写代码的新手
Unsloth 快 2-5 倍,省一半显存 会写点 Python,追求效率

Unsloth 的核心代码不到 30 行,本质就是:加载模型 → 挂 LoRA → 喂数据 → 训练 → 保存。

第三步:训练

设置几个关键参数,然后等:

参数 作用 一般设多少
LoRA rank(秩) 决定「插件」的容量。越大越细腻,但也越占显存 8 或 16 够用
学习率 每次学多少 5e-5,别乱调
训练轮数 数据反复学几遍 3-5 轮

第四步:使用

训完后你得到一个几 MB 的 LoRA 文件。使用时同时加载原模型和这个 LoRA 文件,模型就变成了你训练的样子。

想切换回原模型?卸载 LoRA 就行,一秒恢复。

一个模型可以同时挂多个 LoRA——比如挂一个「毒舌风格」和一个「输出 JSON」,模型就变成一个会输出 JSON 的毒舌助手。


四、与相关概念的关系

概念 做什么 和 LoRA 的关系
全量微调 改全部参数 LoRA 的替代方案,效果更好但成本高几百倍
RAG 外挂知识库检索 互补关系:RAG 管知识,LoRA 管风格
Prompt Engineering 写提示词 最轻量方案,但效果有限。调不动了再上 LoRA
QLoRA LoRA + 4bit 量化 LoRA 的省显存版本,8G 显卡也能跑 7B 模型
PEFT 参数高效微调的大类 LoRA 是 PEFT 家族里最流行的一个成员

五、一句话总结

LoRA = 给大模型外挂一个小插件,只改行为不改知识,训练成本极低,几 MB 文件即插即用。

comments powered by Disqus
使用 Hugo 构建
主题 Stack 由 Jimmy 设计