知行札记
专题AI 模型与系统模型训练与适配

参数高效适配与遗忘

解释 LoRA、QLoRA、适配范围、数据容量与验证方法。

把适配目标和更新范围分开

调整已有模型可以学习应答格式、任务策略、领域表征和新事实。哪些目标需要多少更新容量,应由任务、数据、底座与验证决定。LoRA 能学习新内容,全参数更新也能只改变风格;二者的区别首先是允许参数怎样变化。

参数高效适配 PEFT 只更新少量参数。低秩更新、插入小型模块、可学习前缀各有不同位置和计算代价。已有底座满足任务时,提示与外部知识可能已够用;需要稳定改变行为或内部表示时,再比较参数适配。

LoRA 的前向与梯度

设原线性层 y=W0xy=W_0x,W0W_0 为 d×kd\times k。LoRA 冻结底座,添加

y=W0x+αrBAx,B∈Rd×r,A∈Rr×k.y=W_0x+\frac{\alpha}{r}BAx,\quad B\in\mathbb R^{d\times r},\quad A\in\mathbb R^{r\times k}.

rr 限制更新的秩,α/r\alpha/r 缩放适配分支。可训练参数为 r(d+k)r(d+k)。常见初始化令 B=0B=0、AA 随机,使初始增量为零,整个层保留原有映射。此时第一步 BB 可以得到梯度,AA 的梯度受 BB 为零限制;随着 BB 改变,两者共同训练。这里的“零增量”与层自身是恒等映射没有关系。LoRA 原论文 建立了这种结构。

低秩结构限制单层更新方向,多层非线性组合仍能形成复杂行为。原论文的谱分析说明一些任务存在有效低秩解;观察到 LoRA 学得低秩本身不能证明所有全参数最优解都低秩。

训练后可以将 ΔW=(α/r)BA\Delta W=(\alpha/r)BA 合入兼容的浮点权重,消除独立适配分支的计算。多适配器动态切换、量化底座以及特定部署格式可能保留分支或需要重新量化,合并过程应核查误差与输出。冻结权重省下其梯度和优化器状态,反向传播仍可能需要经过底座并保留激活。

秩、缩放、位置与学习率

提高秩增加容量、参数和部分计算;提高 α\alpha 改变同一适配参数对输出的作用。Adam 对梯度尺度的部分归一化,不会简单抵消前向分支的全部作用。学习率、初始化、缩放和训练长度共同决定有效更新。比较不同秩时,要明确缩放规则是否固定,分别讨论容量变化与尺度变化。

标准 LoRA 使用 α/r\alpha/r,rsLoRA 使用 α/r\alpha/\sqrt r,目标是改善高秩设置的缩放行为。DoRA 将权重幅度与方向分开适配,增加训练时的归一化工作;这些变体的效果与成本需要在相同训练预算和任务下比较。rsLoRA、DoRA 给出各自条件。

适配 Q/V、全部注意力投影、FFN 或多个线性层,会改变容量分布。只给少数矩阵增加很高的秩,与给更多矩阵较低的秩并不等价。模块名依模型结构确定。词嵌入与输出投影也可以按任务训练或适配,尤其扩展词表时;两者是否共享参数、框架怎样选择模块需明确。

输出投影经 softmax 对所有词表候选打分,交叉熵梯度通常覆盖全部输出行。输入 embedding 的查表路径只访问输入中出现的行;共享权重、稠密实现、优化器状态和权重衰减会进一步改变更新行为。将两者统一说成“仅出现 token 行得到梯度”,会误导显存和能力判断。

学习率没有由 LoRA 结构唯一决定的固定倍数。已有文献展示过比全参数更新更大的 LoRA 学习率,也展示了任务与训练规模差异。分别调优两种方法、记录训练 token 与覆盖模块,才能判断性能差来自容量还是配置。

适配变体可按改变的对象理解。AdaLoRA 在总参数预算内调整不同层或方向的秩分配;PiSSA 使用基座权重的主要奇异方向初始化可训练分支;LoftQ 联合考虑量化底座与低秩误差补偿。它们分别改变容量配置、起点和量化误差,使用时比较相同数据、训练预算及保存能力。AdaLoRA、PiSSA、LoftQ

一个 4096×40964096\times4096 矩阵有约 1678 万参数;秩 r=8r=8 的 LoRA 分支有 8(4096+4096)=655368(4096+4096)=65536 个参数。这是单个矩阵的参数算术,整个模型还包含其他层与状态。若只适配一个投影,较小参数量也意味着更新只从这条路径影响输出。参数百分比与最终质量之间没有单调保证。

QLoRA:冻结低位权重上的适配

QLoRA 保留 LoRA 更新,将冻结底座压缩为低位表示。其论文提出 NF4、双重量化和分页优化器:NF4 适配近似正态权重的量化分布;双重量化进一步压缩量化常量;分页优化器缓解显存尖峰。QLoRA 论文 的性能与硬件结果限定于其模型和实验。

存储为 4 位与计算为 4 位需要区分。QLoRA 的典型路径在运算时反量化到计算精度,适配器保持可训练的较高精度。梯度穿过冻结底座的运算到达适配器,底座本身不积累参数梯度。量化误差对该底座形成固定扰动,适配器可能补偿部分扰动,无法保证所有任务无损。

底座低位权重并非全部显存:量化尺度、适配参数、优化器状态、激活、临时缓冲和分页传输都需记账。分页将部分状态放到主存,能够减少设备内存压力,也可能增加传输延迟。训练侧可行的格式不保证服务引擎支持相同格式或高速内核。

数据容量与效果证据怎样比较

《LoRA Learns Less and Forgets Less》在 Llama-2-7B 上比较指令微调与更大规模的持续预训练,同时测目标任务和保留能力。其结果说明低秩适配的容量与遗忘权衡随训练设置变化;不能据此划出所有模型“行为能学、知识不能学”的固定界线。原论文

《LoRA vs Full Fine-tuning: An Illusion of Equivalence》进一步比较更新谱、目标分数与预训练能力保留。目标分数接近仍可能有不同权重结构和后续学习行为。原论文 两项研究的任务和指标应分别阅读,不用单一目标分数代表适配的全部代价。

小型高质量指令集可以显著改善已有能力的表达。LIMA 的特定实验支持这种可能性,无法推出所有新任务都只需一千条。数据数量、知识新颖度、底座能力、样本多样性和更新范围共同决定需求。LIMA

遗忘与检查点选择

目标数据推动参数偏向新分布,旧任务可能退化。冻结大部分参数会限制变化,仍不能保证旧能力保持。顺序训练多个任务、量化误差和适配器切换也需要验证。

任务内验证集测目标任务,保留能力探针测原本需要保留的能力。两者在适配前建立基线,训练中按成本安排复测。数据按文档、来源或任务边界隔离,避免同一材料的近重复泄漏。探针要对应实际保留需求,任意公开选择题集无法代表全部旧能力。

训练 loss 下降而验证 loss 回升提示可能过拟合,还需排除分布、标签和损失口径差异。开放生成中,loss 与人类任务质量可能不单调;检查点选择应以预先定义的任务结果和保留预算为主,同时使用 loss 诊断。最后一个检查点没有天然优势。

回放旧数据、混合训练、早停、缩小更新范围、正则化或保留不同适配器,都可以调整遗忘与目标能力的权衡。它们各有数据、计算和管理成本。较低的秩或更强的正则也可能限制必要的新能力,处理方式应跟随可观察的缺陷。

最后更新于

本页目录