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

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

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

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

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

输入提示被转化为标记,

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

然后转换为嵌入向量,

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

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

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

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

在创建嵌入向量之后,它们被送入自注意层,其中一系列权重被应用于计算注意分数。在完整的微调中,这些层中的每个参数都会被更新。

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


LoRA是一种策略,它通过冻结所有原始模型参数,

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

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

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

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

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

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

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

然后,将这个结果矩阵添加到原始权重中,并用这些更新后的值替换模型中的原始权重。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

然后,将这个新的求和权重矩阵取代模型中的原始权重。

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

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

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

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

并再次更新模型。

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

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

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

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

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

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

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

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

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

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

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

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

该表显示了LoRA矩阵的秩在第一列,模型的最终损失值

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

以及不同度量标准(包括BLEU和ROUGE)的分数。粗体值表示每个度量标准所达到的最佳分数。

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

作者发现,在秩大于16的损失值中出现了平稳期。

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

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

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

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

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

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

参考

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

Read more

开箱即用!商品评价爬虫实战,好评差评数据直接拿

开箱即用!商品评价爬虫实战,好评差评数据直接拿

目录 前言 一、核心思路与技术选型 1. 需求背景 2. 技术选型:Selenium 二、环境准备 1. 安装依赖库 2. 配置浏览器驱动 三、代码实现:爬取好评与差评 1. 完整代码(附详细注释) 2. 代码核心拆解 (1)好评爬取逻辑 (2)差评爬取逻辑 四、数据的后续应用 1. 词向量转换 2. 情感分类模型训练 五、注意事项 六、总结 前言         在自然语言处理(NLP)领域,情感分析是极具实用价值的方向之一 —— 比如输入一段商品评价,自动判断其是好评还是差评。而情感分析的前提,是要有高质量的标注数据;本文将分享如何通过 Python+Selenium 爬取苏宁商品的好评与差评数据,

By Ne0inhk
深入解析Spring @AliasFor注解:应用场景与实战示例

深入解析Spring @AliasFor注解:应用场景与实战示例

概述 在Spring框架的注解体系中,@AliasFor注解虽不常被单独提及,却是简化注解使用、提升代码可读性的核心工具。它主要用于为注解属性定义别名,实现属性间的双向绑定,让开发者在使用注解时更灵活。本文将从核心定义、关键特性、应用场景、实战示例四个维度,全面解析@AliasFor注解,帮助开发者真正掌握其用法。 一、@AliasFor注解核心定义与特性 1.1 核心定义 @AliasFor是Spring框架提供的注解(全类名:org.springframework.core.annotation.AliasFor),其核心作用是为注解的属性声明别名,使多个不同名称的属性对应同一个逻辑含义,实现“一个逻辑属性,多个访问入口”。简单来说,就是给注解的属性起“外号”,无论使用哪个名称,最终效果完全一致。 @AliasFor本身有两个核心属性,用于指定别名关系: * value():指定当前属性的别名属性名(默认空字符串); * annotation():指定目标注解的Class对象,仅用于“跨注解(元注解)定义别名”时使用(默认当前注解)

By Ne0inhk
网络原理全景图:从通信起源到 TCP/IP 体系架构深度拆解

网络原理全景图:从通信起源到 TCP/IP 体系架构深度拆解

【深度长文】网络原理全景图:从通信起源到 TCP/IP 体系架构深度拆解 我的主页:寻星探路个人专栏:《JAVA(SE)----如此简单!!! 》《从青铜到王者,就差这讲数据结构!!!》 《数据库那些事!!!》《JavaEE 初阶启程记:跟我走不踩坑》 《JavaEE 进阶:从架构到落地实战 》《测试开发漫谈》 《测开视角・力扣算法通关》《从 0 到 1 刷力扣:算法 + 代码双提升》 没有人天生就会编程,但我生来倔强!!! 寻星探路的个人简介: 一、 网络发展史:从“物理孤岛”到“逻辑互连” 1.1 独立模式 (Standalone) —— 孤岛时代 在计算机诞生的早期,每一台机器都是独立的。文档中描述了一个生动的场景:假设有终端 A、B、

By Ne0inhk
深入解析MySQL(8)——核心日志与备份恢复

深入解析MySQL(8)——核心日志与备份恢复

1.二进制日志 1.1 概述 作用:二进制日志(Binary Log)以二进制格式存储,记录所有修改数据库数据的SQL语句(如insert、update、delete)或事件(如表结构变更) 核心功能: * 主从复制:主库通过二进制日志将数据变更同步到从库 * 数据恢复:配合MySQL 自带的二进制日志解析工具mysqlbinlog,可将二进制日志转换为 SQL 语句并执行 配置: 会话级配置:在命令行客户端中设置变量session sql_log_bin,仅本次连接生效 -- 1 -> 开启 -- 0 -> 关闭 mysql>setsession sql_log_bin =[1|0]

By Ne0inhk