LoRA与LoRAPrune

💡 原文英文,约1200词,阅读约需5分钟。
📝

内容提要

在大型语言模型时代,由于大型语言模型的参数数量非常庞大,即使在小数据集上微调模型也会非常耗时。与微调大型语言模型类似,修剪大型语言模型也会非常耗时,因为需要评估大型语言模型中所有参数的重要性。本文介绍了如何使用低秩适应(LoRA)加速大型语言模型的微调,以及如何使用LoRAPrune修剪大型语言模型。LoRA假设在微调过程中的参数更新矩阵是低秩的,并将完整秩的参数更新矩阵分解为两个低秩矩阵。LoRA在微调过程中冻结完整秩的参数矩阵,只更新具有更少参数的两个低秩矩阵,从而显著降低了微调大型语言模型的计算成本。LoRAPrune是为了加速参数重要性评估过程而提出的,其中采用了LoRA进行神经网络修剪和微调。

🔎

延伸解读

LoRA 如何降低微调成本

LoRA 的核心在于冻结预训练权重矩阵,仅更新两个低秩矩阵 A 和 B。前向传播时先计算 Ax 再计算 B(Ax),避免显式构造 BA 矩阵;反向传播时只计算 A 和 B 的梯度。由于低秩矩阵参数量远少于原矩阵,微调的计算和内存开销显著降低。此外,微调后的 BA 可融合回原权重,推理时无额外开销。

LoRAPrune 的参数重要性评估

LoRAPrune 将 LoRA 用于剪枝,通过泰勒展开近似参数组的重要性。一阶梯度项恰好是训练反向传播中已计算的梯度,可免费获得。但原论文中,由于 BA 矩阵在实际计算中不存在,作者采用相邻时间步 BA 的变化来近似梯度,并利用 B 和 A 的梯度信息进行复杂计算。

对 LoRAPrune 近似方法的改进思路

文章作者认为,原 LoRAPrune 的近似方法过于复杂。若假设 BA 被显式计算,则梯度可精确表示为 ∂L/∂h 与 x^T 的特定子矩阵乘积。即使不显式计算,也可缓存上一时间步的低秩矩阵 A 和 B,重新计算 BA,由于它们参数量少,存储开销可接受。这为参数重要性评估提供了更直接的途径。

❓

Q&A

LoRA是什么,它如何加速大型语言模型的微调?

LoRA是一种低秩适应方法,通过将完整秩的参数更新矩阵分解为两个低秩矩阵,冻结完整秩的参数矩阵,仅更新低秩矩阵,从而显著降低计算成本。

LoRAPrune的主要目的是什么?

LoRAPrune旨在加速参数重要性评估过程,结合LoRA进行神经网络的修剪和微调。

LoRA在微调过程中如何处理参数更新?

在微调过程中,LoRA冻结完整秩的参数矩阵,仅更新两个低秩矩阵,从而减少计算开销。

LoRA如何降低大型语言模型的计算成本?

LoRA通过分解参数更新矩阵为两个低秩矩阵,减少了需要更新的参数数量,从而降低了计算成本。

在LoRAPrune中,如何评估参数的重要性?

在LoRAPrune中,参数重要性通过近似计算得到,利用梯度信息来简化计算过程。

LoRA和LoRAPrune之间有什么关系?

LoRAPrune是基于LoRA的方法,利用LoRA加速神经网络的修剪和微调过程。

🏷️

标签

➡️

继续阅读