LLMs PEFT技术1:LoRA Parameter efficient fine-tuning PEFT techniques 1: LoRA Low rank Adaptation

在这里插入图片描述

低秩适应(LoRA),简称为LoRA,是一种属于重新参数化类别的参数高效微调技术。

让我们来看看它是如何工作的。作为一个快速提醒,这是你在课程早期看到的transformer架构图。
在这里插入图片描述

输入提示被转化为标记,
在这里插入图片描述

然后转换为嵌入向量,
在这里插入图片描述

并传递到transformer的编码器和/或解码器部分。在这两个组件中,有两种类型的神经网络:自注意网络和前馈网络。
在这里插入图片描述

这些网络的权重是在预训练期间学习的。

在创建嵌入向量之后,它们被送入自注意层,其中一系列权重被应用于计算注意分数。在完整的微调中,这些层中的每个参数都会被更新。
在这里插入图片描述
LoRA是一种策略,它通过冻结所有原始模型参数,
在这里插入图片描述

然后在原始权重旁边注入一对秩分解矩阵来减少微调过程中需要训练的参数数量。较小矩阵的维度被设置为它们的乘积是一个与它们修改的权重具有相同维度的矩阵。
在这里插入图片描述

然后,保持LLM的原始权重冻结,并使用本周早些时候学到的相同监督学习过程训练较小的矩阵。
在这里插入图片描述

在推理中,这两个低秩矩阵相乘,以创建一个与冻结权重具有相同维度的矩阵。
在这里插入图片描述

然后,将这个结果矩阵添加到原始权重中,并用这些更新后的值替换模型中的原始权重。
在这里插入图片描述

现在你有一个经过LoRA微调的模型,可以执行特定任务。因为这个模型与原始模型具有相同数量的参数,所以对推理延迟几乎没有影响。

研究人员发现,将LoRA应用于模型的自注意层通常足以为任务进行微调并实现性能提升。
在这里插入图片描述

然而,原则上,你也可以将LoRA用于其他组件,如前馈层。

但由于大多数LLM的参数在注意层中,通过将LoRA应用于这些权重矩阵,你可以在可训练参数方面获得最大的节省。

让我们通过使用Attention is All You Need论文中描述的transformer架构来看一个实际例子。

该论文指定了transformer权重的维度为512 x 64。这意味着每个权重矩阵有32,768个可训练参数。
在这里插入图片描述

如果你使用秩等于8的LoRA作为微调方法,你将训练两个小秩分解矩阵,其小维度为8。这意味着矩阵A的维度为8 x 64,共有512个参数。矩阵B的维度为512 x 8,即4,096个可训练参数。通过更新这些新的低秩矩阵的权重,而不是原始权重,你将训练4,608个参数,而不是32,768个,减少了86%。
在这里插入图片描述

由于LoRA允许你显著减少可训练参数的数量,因此通常可以使用单个GPU执行此参数高效微调方法,而无需使用分布式GPU集群。

由于秩分解矩阵较小,因此可以为每个任务微调不同的矩阵集,并在推理时通过更新权重来切换它们。
在这里插入图片描述

假设你为特定任务训练了一对LoRA矩阵,我们将其称为任务A。

要在此任务上进行推理,您将这些矩阵相乘,然后将结果矩阵添加到原始冻结权重中。
在这里插入图片描述

然后,将这个新的求和权重矩阵取代模型中的原始权重。
在这里插入图片描述

然后,您可以使用此模型在任务A上进行推理。

如果相反,您想要执行不同的任务,比如任务B,您只需采用为该任务训练的LoRA矩阵,计算它们的乘积,然后将此矩阵添加到原始权重中
在这里插入图片描述

并再次更新模型。
在这里插入图片描述

存储这些LoRA矩阵所需的内存非常小。

因此,原则上,您可以使用LoRA来训练多个任务。在需要使用权重时切换它们,并避免存储多个LLM的完整尺寸版本。

这些模型有多好?让我们使用您本周早些时候了解到的ROUGE指标来比较LoRA微调模型与原始基本模型和完整微调版本的性能。

让我们专注于对话摘要中的Fine-Tuning FLAN-T5,这是您本周早些时候探索过的内容。只是提醒一下,FLAN-T5基本模型已经进行过一轮初始的完整微调,使用了大量的指导数据集。

首先,让我们为FLAN-T5基本模型和我们早期讨论过的摘要数据集设置一个基准分数。这里是基础模型的ROUGE分数,其中较高的数字表示更好的性能。在本次讨论中,您应该关注ROUGE 1分数,但您可以使用任何这些分数进行比较。正如您所看到的,分数相当低。
在这里插入图片描述

接下来,看看已经在对话摘要上进行了额外的完整微调的模型的分数。请记住,虽然FLAN-T5是一个有能力的模型,但仍然可以从特定任务的额外微调中受益。通过完整的微调,您在监督学习期间更新了模型中的每个方式。您可以看到,这导致ROUGE 1分数大大提高,相对于基本FLAN-T5模型增加了0.19。额外的微调轮次极大地提高了模型在摘要任务上的性能。
在这里插入图片描述

现在让我们来看一下LoRA微调模型的分数。您可以看到,这个过程也在性能方面取得了巨大的提升。ROUGE 1分数从基线增加了0.17。虽然略低于完整微调,但差距不大。然而,通过使用LoRA进行微调,您训练了比完整微调少得多的参数数量,使用的计算资源也大大减少,因此这种小的性能权衡可能是值得的。
在这里插入图片描述

您可能想知道如何选择LoRA矩阵的秩。这是一个很好的问题,仍然是一个活跃的研究领域。原则上,秩越小,可训练参数的数量越小,节省的计算资源越大。然而,与模型性能有关的一些问题需要考虑。

在首次提出LoRA的论文中,微软的研究人员探讨了不同秩的选择如何影响模型在语言生成任务上的性能。您可以在这里看到结果的摘要。

该表显示了LoRA矩阵的秩在第一列,模型的最终损失值
在这里插入图片描述

以及不同度量标准(包括BLEU和ROUGE)的分数。粗体值表示每个度量标准所达到的最佳分数。
在这里插入图片描述

作者发现,在秩大于16的损失值中出现了平稳期。
在这里插入图片描述

换句话说,使用较大的LoRA矩阵不会提高性能。在这里的要点是,秩在4-32的范围内可以在减少可训练参数和保持性能之间提供良好的平衡。

优化秩的选择是一个正在进行的研究领域,随着更多像您这样的从业者使用LoRA,最佳实践可能会不断演变。
在这里插入图片描述

LoRA是一种强大的微调方法,可以实现出色的性能。该方法背后的原理不仅对于训练LLM有用,对于其他领域的模型也很有用。

您将在本周探索的最终路径方法根本不会改变LLM,而是专注于训练您的输入文本。让我们在下一个视频中一起了解更多。

参考

https://www.coursera.org/learn/generative-ai-with-llms/lecture/NZOVw/peft-techniques-1-lora

猜你喜欢

转载自blog.csdn.net/zgpeace/article/details/132531628
今日推荐