LoRA 微调与诊断#
本页内容8 个部分
1. 先建立能比较的微调基线#
本篇从已有预训练模型出发,检查 adapter 配置、数据监督和评测。低秩参数化与参数量公式由 LoRA 原理维护;实践中先固定基础模型版本、tokenizer、模板、训练集与验证集,再记录 rank、alpha、插入模块、精度与有效 token 预算。
QLoRA 在量化的冻结基础权重上训练 LoRA,并结合 NF4、双重量化和分页优化器等设计。4-bit 主要描述基础权重存储,计算还需反量化到计算 dtype;激活和优化器并不是全部 4-bit。原工作报告单张 48GB GPU 微调 65B 模型,这是其配置下的结果,不是任意长度和 batch 的显存保证。QLoRA,§3–4。
1.1 最短验证路径#
- 不训练,先用基础模型跑固定验证样本,保存输出与指标。
- 用少量训练样本做一次前向、反向和更新,核对可训练参数只有预期模块,loss mask 与分母正确,梯度和参数有限。
- 确认一次更新后 adapter 或输出发生变化。记录初始化约定,首步某个因子的梯度为零可能是预期行为。
- 小数据训练、保存、重新加载,检查同一输入的结果;再扩大训练预算,用独立验证集判断收益。
2. 初始化与首步梯度#
为对齐前篇,记 ,其中 。令 ,单样本梯度为:
随机 、 时,初始增量为零; 通常有首步梯度, 的任务梯度为零。反过来随机 、 时,首步可更新的是 。若二者都为零,两份任务梯度均为零,分支不能靠该梯度启动。Dropout、其他正则或优化器衰减的贡献需另外区分。
两种单零初始化都可从原模型开始,但后续动力学未必相同。初始化动力学分析研究了特定宽度极限、缩放与学习率下的差别,不能直接推出任意有限模型中反向初始化都会爆炸。也不能声称“随机 的梯度天然更干净”。
2.1 Gaussian 与 Kaiming 要记录实际方差#
Kaiming 初始化的一般形式随 fan-in 与激活增益变化。对 ReLU 增益,normal 方差为 ,uniform 边界为 ,这里 。
LoRA 参考线性实现可使用 kaiming_uniform_(A, a=sqrt(5));这一参数对应边界 、方差 ,与 ReLU 的 不同。LoRA 分支内部是线性映射,不能照搬“为 ReLU 守恒方差”的解释。Gaussian 与 uniform 的效果需要固定各自尺度后比较,本文没有二者等效的实测证据。
2.2 初始化的进一步对照#
LoRA+研究为两个因子使用不同学习率;Beyond Zero Initialization进一步研究两者非零初始化,在其理论设置与实验中改善了对部分次优学习率的稳健性。非零乘积会改变初始模型,因此比较时既要记录初始输出偏移,也要固定学习率搜索与预算;这些是进阶实验方向,不是标准初始化必须替换的结论。
3. 每个超参数改变什么#
| 配置 | 改变的内容 | 比较时记录什么 |
|---|---|---|
| rank | 增量的秩上限与可训练参数数 | 参数总量、验证收益、训练预算 |
| alpha | 显式系数 | 与 rank、学习率共同记录 |
| target modules | 哪些权重允许适配 | 模块全名、数量与是否含输出头 |
| learning rate | adapter 更新步幅 | 优化器、调度、有效 batch 与 token 分母 |
| dropout | adapter 输入的训练随机性 | 概率、施加位置、评测时是否关闭 |
3.1 怎样做第一轮对照#
原笔记中的 、 和学习率 到 可作为候选网格,并非按任务名称给定的最优配置。先固定一个小预算基线,再一次只改变一个主要因素;更换 rank 时,明确 alpha 是固定还是随 rank 改变。
Q/V 是可测试的窄插入范围,Q/K/V/O 与 MLP 是更广的范围。扩大范围可能改善适配,也会增加状态与计算;按实际模型模块名核对,不能假定所有架构都叫 q_proj。
4. 效果不理想时先判断哪一步失败#
先检查数据与执行是否正确,再调整容量,避免把所有问题都归因于 rank 太小。
| 观察 | 优先核对 | 接着尝试的对照 |
|---|---|---|
| loss 不降、输出不变 | 可训练模块、标签 mask、梯度、optimizer 参数组 | 极小干净训练集能否拟合 |
| 训练集改善,验证集不改善 | 切分泄漏、分布差异、评测模板 | 减少步数、改善覆盖,固定预算比较 |
| 训练与验证均受限 | 学习率、预算、基础模型能力 | 扩大插入范围或 rank,与全参基线比较 |
| OOM 或吞吐很低 | 序列长度、激活与 optimizer 状态 | 累积、重算或 QLoRA,分别测量峰值 |
DoRA 等方法是额外对照选项,其收益需用同一任务与预算验证,不能直接当作 LoRA 效果差的保证修复。
4.1 过拟合怎样处理#
训练 loss 下降、同口径验证 loss 上升时,先排除验证集过小或分布变化,再减少训练步数、降低 rank、增加数据多样性,或测试 dropout 与权重衰减。AdamW 的权重衰减与 L2 loss 不等价,应记录实际优化器规则。常见 LoRA dropout 施加在输入 上,即 ,不是在 、 之间任意插入。
5. 容量与部署的边界#
单层增量秩受 限制,但整个网络可以通过多层适配改变复杂行为。不能只因任务涉及新知识就断言 LoRA 必然不够;应比较验证结果与足够调参的全参基线。未合并时有额外分支计算,延迟依赖 batch、rank、内核和服务实现,没有统一的 1–5% 数值。
5.1 合并与重新加载#
评测模式下,普通线性 LoRA 可合并为 。在适配的 PEFT 实现中可调用 merge_and_unload(),再保存结果;具体支持取决于 adapter 类型、基础权重格式与库版本。
部署前对同一输入比较合并前后 logits 或任务结果,记录 dtype 与误差;量化权重重新量化后不保证完全一致。保留原 adapter 与基础模型版本,便于恢复和多任务切换。
5.2 与其他参数高效微调方法的区别#
| 方法 | 主要适配对象 | 需要另外检查的条件 |
|---|---|---|
| Adapter | 插入的瓶颈模块 | 新模块带来的计算与部署开销 |
| Prefix / 深层 prompt | 可训练前缀或中间提示 | 序列或 KV 开销、注入位置 |
| LoRA / QLoRA | 低秩权重增量;后者另量化基础权重 | 插入范围、rank、量化与合并条件 |
| IA³ | 激活的逐元素缩放 | 可调方向较少时的任务效果 |
| AdaLoRA / DoRA | 秩预算分配/权重幅值与方向 | 额外机制与对应实现的约定 |
参数比例随插入位置、模型和预算改变,不能按方法名固定为某个百分比。
6. 数据格式、监督与评估#
6.1 先确认哪些 token 参与损失#
原始数据可以存成 instruction/input/output,或包含 role/content 的 messages 列表;后者是存储结构,本身不等于完整 ChatML 序列。实际输入需用基础模型对应的聊天模板序列化,再核对角色边界、特殊 token、截断与标签 mask。
{"messages": [
{"role": "user", "content": "Translate: The quick brown fox"},
{"role": "assistant", "content": "敏捷的棕色狐狸"}
]}
若只监督 assistant 回答,应把其他位置从 loss 分母中排除。抽查最终 token 与 label,比只看原始 JSON 更能发现模板或 mask 错误。
6.2 质量与覆盖分别检查#
去重后检查训练与验证是否泄漏,审查空回答、截断和错误标签,再按目标用户的任务、语言与长度分布检查覆盖。长度过滤阈值来自当前任务和上下文预算,不机械地删去超过 2048 token 的样本。
LIMA展示了特定预训练模型与精心选取的 1000 条样本上的对齐结果;这不意味着任意任务都只需 1000 条数据。使用教师或评审模型筛选时,也要抽查其错误和偏好。
6.3 任务指标与行为回归一起看#
| 维度 | 做法 | 解读限制 |
|---|---|---|
| 损失与困惑度 | 相同 tokenizer、mask 与分母 | 不同口径不可直接比 |
| 目标任务 | 固定测试集与生成参数 | 检查污染、模板和随机性 |
| 人工或模型评审 | 盲测、随机顺序、明确标准 | 评审也会有偏差,需抽检 |
| 原有能力 | 固定回归集 | 不能只记录目标任务提升 |
7. 冻结基础权重仍需检查遗忘#
冻结 保留了原始权重文件,但启用 adapter 后,前向使用 ,原有任务的行为仍可能退化。关闭 adapter 可恢复基础模型路径,并不保证启用时不遗忘。
可测试相关任务数据 replay、减少训练步数或约束输出偏移。Replay 比例依任务评估,不采用统一百分比。EWC 使用旧任务重要性估计惩罚参数偏移,需明确在哪组可训练参数上定义;对普通参数 的典型形式为:
是对角 Fisher 重要性估计, 是旧任务参考参数, 为强度。输出 KL 约束则需要另定义参考模型、输入分布与 KL 方向。两者都增加成本,收益用目标任务与回归集共同判断。
参考资料与适用条件#
- LoRA,§4、§7:参数化、初始化与矩阵/rank 选择。
- Microsoft LoRA 线性实现:
reset_parameters;链接跟随主分支,复现时应另记录 commit。 - QLoRA、初始化动力学:分别核对量化配置与理论假设。
- LIMA、EWC:数据案例与遗忘约束。
本篇的排查顺序与候选网格用于组织对照实验,未新增个人训练结果。