LLMs参数高效微调(PEFT) Parameter efficient fine-tuning (PEFT)

正如你在课程的第一周所看到的,训练LLMs需要大量的计算资源。完整的微调不仅需要内存来存储模型,还需要在训练过程中使用的各种其他参数。

即使你的计算机可以容纳模型权重,最大模型的权重现在已经达到几百GB,你还必须能够为优化器状态、梯度、前向激活和训练过程中的临时内存分配内存。这些额外的组件可能比模型大数倍,很快就会变得太大,难以在消费者硬件上处理。
在这里插入图片描述

与完整的微调不同,完整微调会在监督学习期间更新每个模型权重,而参数高效微调方法仅更新一小部分参数。

一些路径技术会冻结大部分模型权重,并专注于微调现有模型参数的子集,例如特定层或组件。
在这里插入图片描述

其他技术根本不会触及原始模型权重,而是添加少量新参数或图层,并仅对新组件进行微调。
在这里插入图片描述

使用PEFT,大多数甚至全部LLM权重都被保持冻结。因此,训练的参数数量要比原始LLM中的参数数量小得多。在某些情况下,仅占原始LLM权重的15-20%。这使得训练的内存需求更加可管理。

实际上,PEFT通常可以在单个GPU上执行。而且,由于原始LLM只是稍作修改或保持不变,PEFT对于完整微调的灾难性遗忘问题不太容易发生。
在这里插入图片描述

完整微调会为你训练的每个任务产生一个新版本的模型。这些模型的大小与原始模型相同,因此如果你为多个任务进行微调,可能会导致昂贵的存储问题。
在这里插入图片描述

让我们看看如何使用PEFT来改善这种情况。通过参数高效微调,你只训练少量权重,从而在整体上获得更小的占用空间,具体取决于任务,可能仅为几兆字节。
在这里插入图片描述

新的参数与原始LLM权重结合进行推理。PEFT权重会针对每个任务进行训练,并且可以在推理时轻松替换,
在这里插入图片描述

从而实现将原始模型高效地适应多个任务。
在这里插入图片描述

有几种方法可以用于参数高效微调,每种方法在参数效率、内存效率、训练速度、模型质量和推理成本方面都存在权衡。
在这里插入图片描述

让我们来看一下三种主要类别的PEFT方法。

选择性方法只微调原始LLM参数的子集。你可以采用几种方法来确定要更新的参数。你可以选择仅训练模型的某些组件或特定层,甚至是单个参数类型。研究人员发现,这些方法的性能是参差不齐的,参数效率和计算效率之间存在显著的权衡。在本课程中,我们不会重点讨论它们。
在这里插入图片描述

重新参数化方法也使用原始LLM参数,但通过创建原始网络权重的新低秩转换来减少要训练的参数数量。这种类型的常用技术是LoRA,我们将在下一个视频中详细探讨。
在这里插入图片描述

最后,附加方法通过保持所有原始LLM权重冻结并引入新的可训练组件来进行微调。
在这里插入图片描述

在这里,有两种主要方法。

适配器方法在模型的体系结构中添加新的可训练层,通常位于注意力或前馈层之后的编码器或解码器组件内。
在这里插入图片描述

另一方面,软提示方法保持模型体系结构固定且冻结,并专注于操作输入以实现更好的性能。可以通过向提示嵌入添加可训练参数或保持输入固定并重新训练嵌入权重来实现这一点。在本课程中,你将了解一种特定的软提示技术,称为提示微调。
在这里插入图片描述

首先,让我们继续下一个视频,更详细地了解LoRA方法,看看它如何减少训练所需的内存。

参考

https://www.coursera.org/learn/generative-ai-with-llms/lecture/rCE9r/parameter-efficient-fine-tuning-peft

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/93869.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ThinkPHP 多应用配置,及不同域名访问不同应用的配置【详解】

ThinkPHP 多应用配置,及不同域名访问不同应用的配置【详解】 一、安装多应用扩展二、删除项目的中默认的controller文件夹三、创建多应用四、修改config/app.php文件五、测试并且访问多应用六、配置小皮,不同域名访问不同的应用七、小结 一、安装多应用扩…

在CSS中,盒模型中的padding、border、margin是什么意思?

在CSS中,盒模型(Box Model)是用来描述和布局HTML元素的基本概念。它将每个HTML元素看作是一个矩形的盒子,这个盒子包括了内容(content)、内边距(padding)、边框(border&a…

时空数据挖掘精选23篇论文解析【AAAI 2023】

今天和大家分享时空数据挖掘方向的资料。 时空数据挖掘是人工智能技术的重要分支,是一种采用人工智能和大数据技术对城市时空数据进行分析与挖掘的方法,旨在挖掘时空数据,理解城市本质,解决城市问题。 目前,时空数据…

kubernetes搭建及基本使用

1. 前置要求准备 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止 swap 分区 此处我是白嫖的谷歌云…

Prometheus关于微服务的监控

在微服务架构下随着服务越来越多,定位问题也变得越来越复杂,因此监控服务的运行状态以及针对异常状态及时的发出告警也成为微服务治理不可或缺的一环。服务的监控主要有日志监控、调用链路监控、指标监控等几种类型方式,其中指标监控在整个微服务监控中比重最高,也是实际生…

<C++> STL_容器适配器

1.容器适配器 适配器是一种设计模式,该种模式是将一个类的接口转换成客户希望的另外一个接口。 容器适配器是STL中的一种重要组件,用于提供不同的数据结构接口,以满足特定的需求和限制。容器适配器是基于其他STL容器构建的,通过…

【VRTK4.0运动专题】轴移动AxisMove(真实身体的移动)

文章目录 1、概览2、释义3、属性设置 1、概览 2、释义 “竖直轴”控制的行为“水平轴”控制的行为1Vertical-Slide 滑动Horizontal-Slide 滑动2Vertical-Slide 滑动Horizontal-SmoothRotate 转动3Vertical-Slide 滑动Horizontal-SnapRotate 转动(不连续&#xff09…

openGauss学习笔记-47 openGauss 高级数据管理-权限

文章目录 openGauss学习笔记-47 openGauss 高级数据管理-权限47.1 语法格式47.2 参数说明47.3 示例 openGauss学习笔记-47 openGauss 高级数据管理-权限 数据库对象创建后,进行对象创建的用户就是该对象的所有者。数据库安装后的默认情况下,未开启三权分…

java八股文面试[数据结构]——HashMap和HashTable区别

HashMap源码中的重要常量 DEFAULT_INITIAL_CAPACITY: HashMap的默认容量,16 MAXIMUM_CAPACITY: HashMap的最大支持容量,2^30 TREEIFY_THRESHOLD:Bucket中链表长度大于该默认值,转化为红黑树。 UNTREEIFY_THRESHOLD…

【微服务】微服务调用原理及服务治理

本文通过图文结合,简要讲述微服务的调用原理,以及服务治理的相关概念。 1.微服务的调用原理 举个栗子:你去会所洗脚。首先,技师肯定要先去会所应聘,通过之后,会所会记录该技师的信息和技能,然后…

BMP图片读写实践:rgb转bgr

本实理论上支持24位图和32位图&#xff0c;实际上只测试了24位。原理很简单&#xff0c;就是RGB中的蓝色字节和红色字节交换。 测试代码1&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/stat.h> #include <stdlib.h> #include &l…

回归预测 | MATLAB实现TSO-ELM金枪鱼群优化算法优化极限学习机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现TSO-ELM金枪鱼群优化算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现TSO-ELM金枪鱼群优化算法优化极限学习机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效…

初试Eureka注册中心

Eureka是spring cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)P(分区容错性)。一个Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。 搭建eureka服务 引入eureka依赖 引入SpringCloud为eureka提供的starter依…

橙河:海外賺美金的项目有哪些?

大家好&#xff0c;我是橙河老师。现在呢&#xff0c;很多人去国外打工&#xff0c;大家在短视频上也经常能看到&#xff0c;他们在国外挣了几年钱&#xff0c;回来就能买车买房。 其实呢&#xff0c;他们在国外的工作&#xff0c;工资也就是几千块一个月&#xff0c;不过他们…

C语言数值表示——进制、数值存储方式

进制 进制也就是进位制&#xff0c;是人们规定的一种进位方法对于任何一种进制—X进制&#xff0c;就表示某一位置上的数运算时是逢X进一位 十进制是逢十进一&#xff0c;十六进制是逢十六进一&#xff0c;二进制就是逢二进一&#xff0c;以此类推&#xff0c;x进制就是逢x进位…

通俗理解DDPM到Stable Diffusion原理

代码1&#xff1a;stabel diffusion 代码库代码2&#xff1a;diffusers 代码库论文&#xff1a;High-Resolution Image Synthesis with Latent Diffusion Models模型权重&#xff1a;runwayml/stable-diffusion-v1-5 文章目录 1. DDPM的通俗理解1.1 DDPM的目的1.2 扩散过程1.3 …

编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。

环境&#xff1a; CentOS 7 Linux 3.10.0-1160.el7.x86_64 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff08;3&#xff09;安装nginx服务&#xff0c;将提供的dest目录…

Linux学习之DNS服务的原理

DNS服务一些理论 域名系统&#xff08;Domain Name System&#xff0c;DNS&#xff09;是互联网的核心应用服务&#xff0c;可以通过IP地址查询到域名&#xff0c;也可以通过域名查询到IP地址。 FQDN&#xff08;Full Qualified Domain Name&#xff09;是完全限定域名&#xf…

Apache Paimon 实时数据湖 Streaming Lakehouse 的存储底座

摘要&#xff1a;本文整理自阿里云开源大数据表存储团队负责人&#xff0c;阿里巴巴高级技术专家李劲松&#xff08;之信&#xff09;&#xff0c;在 Streaming Lakehouse Meetup 的分享。内容主要分为四个部分&#xff1a; 流计算邂逅数据湖 Paimon CDC 实时入湖 Paimon 不止…

java八股文面试[多线程]——死锁、活锁、饥饿

DCL双重锁&#xff1a;TODO 如何预防死锁&#xff1a; 如何查看线程死锁&#xff1a; 知识来源&#xff1a; 【2023年面试】描述一下线程安全活跃态问题&#xff0c;以及竞态条件_哔哩哔哩_bilibili 【2023年面试】如何预防死锁_哔哩哔哩_bilibili 【并发与线程】阿里一面&…