第 14 · 微调 · 9 min
在不重新训练一切的情况下专业化模型
基础模型——究竟是什么?
当 GPT-4 或 Claude 完成初始训练——数十亿 Token 的原始文本,预测下一个词——它们已经掌握了大量知识。但它们还不知道如何表现。
让原始模型写一封求职信,它大概会像一篇关于求职信的维基百科文章那样续写这个句子。或者更糟糕,生成好几个相互矛盾的版本,仿佛这段文字只是某个 FAQ 页面的延续。
**微调(Fine-tuning)**正是将这种原始模型转变为真正可用的助手的那一步:有帮助、前后一致、适合特定领域。
两个问题,两种解法
监督微调(SFT)
最简单的形式:向模型展示(问题,理想答案)样本对,并训练它产生这些回答。
OpenAI 就是这样创建 InstructGPT 的:人类为数千个问题撰写了示范性回答,模型学会了加以模仿。结果:一个能够"遵循指令"的模型。
局限性:它对人工数据的需求非常大,而且它不会告诉模型如何比较两个回答的优劣。
RLHF(实践中的 DPO)
我们在第 08 章已经介绍过这一点。基于人类反馈的强化学习(RLHF)学习的是偏好,而非对错。它是 SFT 的补充,而非替代。
一个重要细节:自 2024 年以来,大部分偏好微调都通过 DPO(Direct Preference Optimization,直接偏好优化)进行,而不再是经典 RLHF 中的 PPO。这正是把一个仅做了 SFT 的模型变成对齐模型的方式,而且不需要 RL 那种昂贵的算力开销。完整的故事可以看第 08 章。
但 SFT 和 DPO/RLHF 都有一个共同的代价问题:它们会修改模型的全部参数。对于一个拥有 700 亿参数的模型,这意味着数周的算力和数千 GPU 的成本。
LoRA:只训练 0.1% 的参数
LoRA(Low-Rank Adaptation,低秩适应)是一种精巧的技术:它不直接修改模型的权重矩阵 W,而是添加一个分解为两个小矩阵的更新量 ΔW:
W_adapted = W_base + ΔW 其中 ΔW = B × A
- A:秩 r × 维度的矩阵(小)
- B:维度 × 秩 r 的矩阵(小)
- W_base:原始权重——冻结,不作修改
核心洞察:微调过程中的权重更新在实践中具有低秩结构。你不需要一个完整的矩阵来捕捉这种适应。两个小矩阵就足够了。
在秩 r = 8、维度为 4096 的层中:LoRA 只使用 65,536 个参数,而完整层需要 1600 万个——仅占 0.4%。
调节秩,观察变化
秩 r 控制更新的表达能力。调节 r 的大小,观察 ΔW 的结构如何变化——以及微调后模型回答的效果。
LoRA 在已有权重旁边新增两个小矩阵。不需要改动数十亿参数,只训练几百万——模型大部分保持冻结,并在所有微调版本之间共享。
为什么效果出奇地好?
LoRA 实验中令人惊喜的发现是:即使在极低的秩(r = 4 或 8)下,微调后的性能也与完整微调几乎相同。直觉上的原因:有用的适应空间本质上是低维的。
换句话说:要让模型专注于医疗写作或 Python 代码,你不需要修改它所有的神经元。权重空间中的几个"方向"就足够了。
QLoRA:更进一步
如果 LoRA 减少了训练参数的数量,QLoRA(量化 LoRA)更进一步——同时降低冻结参数的数值精度。
基础模型以 4 位(而非 16 或 32 位)加载,内存占用减少约 4 倍。LoRA 适配器则保持 16 位精度,以确保梯度计算的准确性。关于**量化(quantization)**本身的机制(FP32 → INT4 → INT2,每一档损失了什么),见第 18 章。
结果:在单张消费级显卡上微调一个 700 亿参数的模型成为可能。这正是 2023–2024 年开源专用模型大爆发的技术基础。
适应的层次
如今,从业者通常区分以下几个层次:
提示工程:不修改模型,在上下文中加入少量示例。速度极快,零成本,效果有限。
RAG:将模型连接到知识库(第 10 章),不修改模型本身。
LoRA 微调:在有针对性的数据集上调整行为和风格。单张 GPU 数小时、数千个示例即可完成。大多数情况下的最优选择。
完整微调:修改所有参数。当需要深度改变模型能力时才有必要(稀有语言、高度专业化的领域)。成本高昂。
预训练:从头开始,或在新语料上继续训练。仅限于拥有数千 GPU 集群的实验室。
这对你意味着什么
如果你想让模型专注于你的使用场景——你的写作风格、你的专业领域、你的回答格式——LoRA 是当今的首选技术。
Hugging Face PEFT 或 Axolotl 等框架让你可以用几行 Python 代码启动 LoRA 微调。真正的难点不在技术层面:而在于构建一个高质量的数据集。一次好的微调始于 500 个精心撰写的示例——而不是 10,000 个由 ChatGPT 生成的样本。
更新于