一文读懂LoRA 优雅谈大模型

Microsoft于2021年推出的LoRA是一种经济型微调模型参数的方法。如今大模型的参数规模动不动都在10亿级别以上,微调大模型(微调这里代表着SFT,例如读者将某个大模型拿到自身畛域,想经常使用自身畛域的常识再次训练和精校大模型,就属于模型微调的畛域。)的片面微调形式下,须要调整一切的参数,因此所须要的资源和时期渺小。

LoRA提出了一种微训练模型的新方法,在解冻大局部的模型参数之余,仅仅降级额外的局部参数。同时它的功能与“微调大模型的所有参数”相似,但是能够将训练参数的数量缩小了10,000倍,GPU内存需求缩小了3倍。这以为着在生产级的GPU也可以运转这种计算和内存效率更高的新方法。

在学习完“神经网络与矩阵”的时刻,读者都可以知道神经网络都可以用矩阵来示意。LoRA 假定微调时期的权重降级可以很好地近似于低秩矩阵。LoRA不会降级全权重矩阵W,而是将降级合成为两个较小的矩阵A和B。

上图左侧为原始论文的配图,右图为另外的视角。举个例子,若原始权重W为d*k的格局,那么一共存在4096(d)×4096(k)=16,777,216个参数。

这时刻LoRA经常使用A(d*r)和B(r*k)来代表权重降级,由于A和B的矩阵相乘也是d*k维度的。假定r为8,则LoRA须要降级的权重参数为4096×8+ 8×4096 =65,536个参数。<一下子要降级的模型参数降低了N倍!>

详细的训练环节是这样的,将原来的矩阵参数固定,而后应用新的数据继续训练大模型,而这个训练环节仅仅降级A和B矩阵。在推理经常使用的时刻,将原来的矩阵W和(A*B)相加。下图为可视化版本:

r如何选用,什么的数值是正当的?原始的论文在某些模型上给出了试验的结果,普通而言都是r=4或许r=8,当然这个超参数还是须要详细场景详细剖析。

从先期的试验数据而言,LoRA的成果还是不错的。但是LoRA最重要的疑问在于矩阵被投影到更小的维度上,因此在此环节中必需会失落一些消息。

随同着量化技术,可以将量化引入LoRA,因此降生了QLoRA。例如神经网络的权重存储为32位浮点数(FP32)。量化可以将其转换为较低精度的点,例如16位或许8位(UINT-8或INT8)。

权重合成低秩顺应 (DoRA) 将预先训练的权重合成为两个重量:幅度和方向。如下图所示,原来参数矩阵W的维度照旧是d*k,新增了一个幅度向量m(1*k)。

上图绿色局部为须要被训练,而蓝色局部的参数示意在微调训练中是被解冻的。DoRA在训练A和B矩阵的时刻,还是应用了LoRA的方法。但是新增了幅度M向量。

可以将矩阵的每列都看成向量,每列的权重矩阵都可以用大小和方向示意。例如可以将[2.0, 3.0]合成为0.5*[4, 6]。在启动齐全微调时,梯度降级只是扭转了列向量的方向,而幅度却坚持简直恒定。

下图为可视化的环节:

DoRA将列向量合成为2个重量可以愈加灵敏地降级方向重量,这更凑近于齐全微调。

MoRA 的概念相似于 LoRA,但不是将权重矩阵合成为更小的维度,而是将其合成为小的方形矩阵。

例如,假设原始权重层具备4096×4096~= 16M参数,则r=8的LoRA具备4096×8 + 8×4096=65,536参数。经常使用MoRA可以将维度减小到r=256,即256×256=65,536。在这两种状况下,须要训练和降级的参数是相反的,但是钻研人员宣称与LoRA相比具备更高的学习代表性。

依据这篇2024年5月的论文,LoRA的局限性之一是不可记住少量数据。“关于LoRA观察到的这种限度,一个正当的解释或许是它对低秩降级的依赖。低秩降级矩阵 ∆W ,很难预计FFT中的全秩降级,尤其是在须要记忆特定畛域常识的继续预训练等外存密集型义务中。

为了论证这个观念,钻研人员钻研了LoRA和FFT在经过微调记忆新常识方面的差异。为了防止应用 LLM 的原始常识,钻研人员随机生成10K对通用惟一标识符 (UUID),每对蕴含两个具备32个十六进制值的UUID。该义务要求LLM依据输入的UUID生成相应的UUID。例如,给定一个UUID,比如“205f3777-52b6-4270-9f67-c5125867d358”,模型应该依据10K个训练对生成相应的UUID。这个义务也可以看作是一个问答义务,而实现它所必需的常识齐全来自训练数据集,而不是LLM自身。

试验的结果辅证了钻研人员的说法。MoRA的损失收敛得很快。

​​​,作者:

您可能还会对下面的文章感兴趣: