趋近智
低秩适应(LoRA)基于一个简单而高效的前提运作:它不直接修改预训练模型的全部权重,而是学习一小组改变。这种方法保持原始模型权重不变,并向模型的特定层注入一对可训练的低秩矩阵,通常在注意力机制内。这意味着对于一个庞大的权重矩阵 ,我们不计算它的新值。相反,我们学习一个更新量 ,正向传播时使用的实际权重变为 。
LoRA 的高效性源于它表示更新矩阵 的方式。它将更新限制为一个低秩矩阵,该矩阵可以分解为两个小得多的矩阵的乘积。这是基于这样的观察:为了让模型适应新任务所需的调整通常具有较低的“内在秩”,这意味着无需满秩矩阵就能捕获这些变化。
考量一个来自预训练模型的原始权重矩阵 ,其维度为 。完全微调方法会更新这个矩阵中所有 个参数。LoRA 通过将更新 表示为两个较小矩阵的乘积来避免这种情况:一个维度为 的矩阵 和一个维度为 的矩阵 。秩 是一个远小于 或 的超参数。
该层的修改后的正向传播变为:
这里, 是该层的输入, 是输出。训练期间, 保持冻结,只有矩阵 和 中的参数通过反向传播进行更新。
这种分解能大幅减少可训练参数。原始矩阵 有 个参数。LoRA 矩阵 和 合计有 个参数。对于 Transformer 中典型的方阵(其中 ),可训练参数的数量仅为 而非 。
举个例子,如果我们有一个大小为 的权重矩阵(超过1600万个参数),并且我们使用 LoRA 秩 ,则可训练参数的数量变为 。这使得该单层的参数减少了超过 99.8%,从而使训练过程更易于处理。
该图展示了 LoRA 层如何处理输入。输入
x经过原始的冻结权重矩阵W₀(主路径)。同时,它并行通过可训练的适配器矩阵A和B。两条路径的输出随后相加,生成最终的层输出h。
在实现 LoRA 时,您会遇到一些影响微调过程行为和表现的配置参数。
r:秩是最有影响力的超参数。它决定了可训练参数的数量以及 LoRA 适配器的表达能力。较小的秩(例如 4、8)会导致更少的参数和更快的训练,但可能无法获取复杂任务所需的所有信息。较大的秩(例如 32、64)提供更大的容量,但代价是增加 VRAM 使用和减慢训练速度。r 的选择是性能与效率之间的直接权衡。α:LoRA 实现通常包含一个缩放超参数 alpha。适配器的输出在添加到基础模型的输出之前,会按 进行缩放。这意味着正向传播在技术上是 。这种缩放有助于使适配器的影响正常化,防止在更改秩 r 时更新过大或过小。常见的默认设置是将 alpha 等于 r,这将缩放因子简化为 1。然而,独立调整 alpha 有时可以带来更好的结果。q_proj) 和值 (v_proj) 投影矩阵。这些层被认为对模型行为适应新数据模式具有很大影响。将其应用于更多层会增加可训练参数的数量,但可能提供更好的性能。LoRA 的设计提供了比完全微调更多的实际益处:
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造