外观
5 种 LLM 微调技术
5 LLM Fine-tuning Techniques
传统微调(如下图所示)在 LLM 上是行不通的,因为这些模型参数量达数十亿、体积高达数百 GB,而不是每个人都能用得起这样的计算基础设施。

好在如今我们有许多更优的方式来微调 LLM,下图展示了其中五种流行的技术:

让我们来逐一了解这些技术:
1)LoRA
在权重矩阵旁边新增两个低秩矩阵 A 和 B,把可训练参数放在这两个矩阵里。与其直接微调 W,不如调整这两个低秩矩阵中的更新量。

2)LoRA-FA
虽然 LoRA 大幅减少了可训练参数的总量,但更新这些低秩权重时,仍然需要相当可观的激活内存。LoRA-FA(FA 即 Frozen-A,冻结 A)冻结矩阵 A,只更新矩阵 B。

3)VeRA
在 LoRA 中,每一层都有各自独立的一对低秩矩阵 A 和 B,且两者都会被训练。而在 VeRA 中,矩阵 A 和 B 是冻结的、随机生成的,并且在模型所有层之间共享。VeRA 关注的是学习规模很小、逐层专属的缩放向量(记作 b 和 d),这两个向量才是这套方案中唯一可训练的参数。

4)Delta-LoRA
在这种方法中,除了训练低秩矩阵之外,矩阵 W 本身也会被调整,但不是用传统的方式。具体做法是:把低秩矩阵 A、B 的乘积在两个连续训练步骤之间的差值(即 delta)加到 W 上:

5)LoRA+
在 LoRA 中,矩阵 A 和 B 使用相同的学习率进行更新。而论文作者发现,给矩阵 B 设置更高的学习率,能带来更优的收敛效果。

附加内容:LoRA-drop
LoRA-drop 的观察是:并非所有层都能从 LoRA 更新中获得同等收益。它的做法是先给每一层都加上低秩矩阵、短暂训练一段时间,然后测量每一层的激活强度,判断哪些层真正重要。

如果某一层的 LoRA 激活值始终接近零,说明它对模型输出的影响微乎其微,可以被移除。

通过只在高影响力的层上保留 LoRA,LoRA-drop 降低了训练成本、加快了微调速度,同时几乎不损失精度。
附加内容:量化低秩适配(Quantized Low-Rank Adaptation,QLoRA)
量化低秩适配(QLoRA)是对上文所讨论的 LoRA 技术的一种改进,它进一步解决了用 LoRA 微调大模型时所面临的内存限制问题。
具体来说,回顾一下我们前面在 LoRA 中讨论的内容:我们会用两个矩阵 A 和 B,给权重为 W 的网络层做增强。

现在,假设权重矩阵 W 中有 2500 万个参数:

通常,这 2500 万个参数会以 float32 格式表示,每个参数需要 32 位(即 4 字节)。这会带来相当可观的内存占用,对大型 LLM 来说尤其如此。
这意味着仅这一个矩阵的内存占用就是(2500 万 × 4 字节/参数)= 1 亿字节,也就是 0.1GB。
QLoRA 的核心思路,是用量化(Quantization)来降低权重矩阵 W 的内存占用。
正如你可能已经猜到的,量化就是用更低位数的表示方式(比如 16 位、8 位或 4 位)来表示参数。

这会大幅减少存储模型参数所需的内存量。
举例来说,假设你的模型有超过 100 万个参数,每个参数都用 32 位浮点数表示。
如果可行的话,改用 8 位数值来表示这些参数,能大幅降低内存占用(约 75%),同时仍能表示相当大范围的数值。
当然,量化会在模型体积和精度之间引入一种权衡。
降低参数的位宽虽然能让模型变小,但也会导致精度损失。
这意味着相比原始的全精度模型,模型的预测结果会变得更加近似、不那么精确。
QLoRA 确实采用了一些特殊技巧来尽可能保留信息,但其中无疑仍然存在一定的权衡取舍。
这在某种程度上,与模型压缩(Model compression)中的量化技术是同一脉络,我们会在后面的 LLM 优化章节详细介绍。
附加内容:DoRA
DoRA(权重分解低秩适配,Weight-Decomposed Low-Rank Adaptation)是一种更精细的大模型微调方法,它在保留 LoRA 高效性的同时,解决了 LoRA 的一个关键局限。
从核心思路上说,DoRA 建立在 LoRA 的原理之上,但引入了一个分解步骤,把预训练权重矩阵 W 拆分成两个部分:幅度(magnitude,m)和方向(direction,V)。

这种拆分让微调过程可以分别针对这两个部分进行调整,从而提升参数效率和整体表现。