演示 / 大语言模型 / LoRA

LoRA:小矩阵怎样改变大矩阵?

冻结原来的权重 W₀,只让两个小矩阵 A、B 提供增量。点击单步,看一列 B 与一行 A 形成的外积,怎样逐项叠成 ΔW。

B:取第 k 列

A:取第 k 行

正在累加的 ΔW 8 × 8

蓝色为非负,橙色为负;颜色深浅使用同一尺度。边框标出当前外积使用的行与列。

适配后的 W₀ + ΔW 8 × 8

冻结的 W₀:全过程不改动 8 × 8

参数预算与观察

这段动画演示了什么?

ΔW = (α / r)BA,其中 B 的形状为 d × r,A 为 r × k,所以 rank(ΔW) ≤ r。动画按外积逐项累加,展示的是矩阵分解,不是训练的时间步骤。W₀ 本身不要求低秩。

论文采用随机初始化 A、零初始化 B,使初始 ΔW = 0。本页用固定示例数值替代随机数,便于比较。这里没有数据集、损失函数、反向传播或真实语言模型,也不能据此判断不同 r 的任务效果。参数统计仅针对单个无偏置权重矩阵,未包含整个模型和优化器。

试一试:固定 r,把 α 改为 0;再勾选 B = 0,比较两种情况下的结果。随后把 r 从 1 调到 4,观察可训练参数量的变化。

对照精读:LoRA · Hu 等,LoRA 原论文(2021),§4.1