大模型微调:参数高效微调(PEFT)方法总结

PEFT (Parameter-Efficient Fine-Tuning) 参数高效微调是一种针对大模型微调的技术,旨在减少微调过程中需要调整的参数量,同时保持或提高模型的性能。

LORAAdapter TuningPrompt Tuning 为主的PEFT方法总结如下

LORA

  • 论文题目:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
  • 论文链接:https://arxiv.org/pdf/2106.09685
  • 发表时间:2021.10.16

含义

一种用于微调大型预训练语言模型(如GPT-3或BERT)的方法。核心思想是在模型的关键层中添加小型、低秩的矩阵来调整模型的行为,而不是直接改变整个模型的结构。

原理

低秩矩阵分解: LoRA通过将权重矩阵分解为两个较低秩的矩阵来减少参数量。具体来说,对于模型中的某个权重矩阵 W,LoRA将其表示为两个较小的矩阵 A 和 B,使得 W≈A×B。这样可以有效地减少需要更新的参数数量。

保持预训练权重不变: LoRA保留了预训练模型的原始权重,并在此基础上进行调整。通过添加低秩更新矩阵 ΔW=A×B 到原始权重矩阵 W,来得到新的权重矩阵 W′=W+ΔW。这种方法允许模型在保留预训练知识的同时,适应新的任务。

Adapter Tuning

  • 论文题目:Parameter-Efficient Transfer Learning for NLP
  • 论文链接:https://arxiv.org/pdf/1902.00751
  • 发表时间:2019.6.13

含义

通过在预训练模型的基础上添加适配器层(adapters),来实现特定任务的微调。这种方法旨在保留预训练模型的原始权重,仅在需要适应新任务的地方进行小规模的参数调整。

原理

插入适配器层: 在预训练模型的特定位置(通常是在每个 Transformer 层的内部或后面)插入适配器层。

适配器层结构: 这些适配器层是一些小规模的神经网络,通常由一个下采样层(减少维度)、一个激活函数(如 ReLU)和一个上采样层(恢复维度)组成。

冻结预训练权重: 在微调过程中,预训练模型的原始权重保持不变,仅训练适配器层的权重。

高效微调: 由于适配器层的参数数量相对较少,微调过程变得更加高效。适配器层可以针对不同任务进行训练,而不影响预训练模型的核心结构。

Prompt Tuning

  • 论文题目:The Power of Scale for Parameter-Efficient Prompt Tuning
  • 论文链接:https://arxiv.org/pdf/2104.08691
  • 发表时间:2021.9.2

含义

在预训练语言模型的输入中添加可学习的嵌入向量作为提示。其核心思想是通过引入任务特定的提示(prompts),而非对整个模型进行全参数更新,从而实现对模型的高效微调

原理

设计提示词: 输入提示(prompt)通常包含任务描述、示例或特定的输入格式。例如,对于情感分类任务,可以设计一个提示词:“这段文字的情感是:”。

优化提示词: Prompt Tuning 的优化对象是输入提示的词嵌入(embedding)。通过梯度下降等优化算法,调整提示词的词嵌入,使得模型在特定任务上的表现达到最优。

冻结预训练模型: 在 Prompt Tuning 中,预训练模型的权重保持不变,仅优化提示词的嵌入

Prefix-Tuning

  • 论文题目:Prefix-Tuning: Optimizing Continuous Prompts for Generation
  • 论文链接:https://arxiv.org/pdf/2101.00190
  • 发表时间:2021.1.1

含义

通过固定预训练模型的参数,仅在输入序列的前面添加一个可训练的前缀(prefix),从而在不改变模型参数的情况下实现特定任务的适应

原理

固定模型参数: 不对预训练语言模型(如 GPT-3、BERT 等)的参数进行微调

添加可训练前缀: 在输入序列的前面添加一个可训练的前缀向量。这个前缀向量的长度和维度可以根据具体任务进行调整

任务适应: 在实际应用中,前缀向量与输入序列一起输入到预训练模型中。由于前缀向量是可训练的,模型可以通过调整前缀向量来适应特定的任务,而无需改变模型本身的参数。

P-Tuning

  • 论文题目:GPT Understands, Too

  • 论文链接:https://arxiv.org/pdf/2103.10385v1

  • 发表时间:2021.3.18

含义

在模型输入中插入一些可训练的提示(prompts),这些提示是嵌入向量(embedding vectors),在训练过程中被优化

原理

固定模型参数: 和 Prefix-Tuning 类似,不改模型参数

插入可训练提示: 在输入序列的适当位置插入一些可训练的提示向量

任务适应: 在训练过程中,这些提示向量与输入序列一起输入到预训练模型中

P-Tuning V2

  • 论文题目:P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks
  • 论文链接:https://arxiv.org/pdf/2110.07602v2
  • 发表时间:2021.10.18

含义

保留了 P-Tuning 的核心思想,即通过优化输入提示向量来引导预训练模型处理特定任务

原理

相比较于P-Tuning:

动态提示优化: 采用动态提示优化方法

多层提示插入: P-Tuning V2 不仅在输入序列的前面插入提示向量,还在模型的不同层次(如中间层)插入提示向量

BitFit

  • 论文题目:BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models
  • 论文链接:https://arxiv.org/abs/2106.10199
  • 发表时间:2021.6.18

含义

通过仅微调模型的偏置参数来适应新的任务,从而减少了需要调整的参数量。

原理

  • 原始 BERT 模型:包含多层 Transformer,每层有权重矩阵 W 和偏置 b。

  • BitFit 微调:保持所有权重矩阵 W 不变,只微调每层的偏置参数 b

DistilBERT

  • 论文题目:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
  • 论文链接:https://arxiv.org/abs/1910.01108
  • 发表时间:2020.3.1

含义

使用知识蒸馏技术将大模型压缩成更小的模型,从而减少微调所需的计算资源和时间。

原理

知识蒸馏是一种模型压缩技术,通过训练一个较小的学生模型(student model)来模仿较大教师模型(teacher model)的行为。具体步骤如下:

  1. 教师模型:使用预训练的 BERT 模型作为教师模型。
  2. 学生模型:构建一个较小的 BERT 模型,即 DistilBERT。
  3. 训练过程:在训练过程中,学生模型通过模仿教师模型的输出来学习。损失函数不仅包括学生模型和教师模型输出之间的差异,还包括学生模型和真实标签之间的差异。> PEFT (Parameter-Efficient Fine-Tuning) 参数高效微调是一种针对大模型微调的技术,旨在减少微调过程中需要调整的参数量,同时保持或提高模型的性能。

LORAAdapter TuningPrompt Tuning 为主的PEFT方法总结如下

LORA

  • 论文题目:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
  • 论文链接:https://arxiv.org/pdf/2106.09685
  • 发表时间:2021.10.16

含义

一种用于微调大型预训练语言模型(如GPT-3或BERT)的方法。核心思想是在模型的关键层中添加小型、低秩的矩阵来调整模型的行为,而不是直接改变整个模型的结构。

原理

低秩矩阵分解: LoRA通过将权重矩阵分解为两个较低秩的矩阵来减少参数量。具体来说,对于模型中的某个权重矩阵 W,LoRA将其表示为两个较小的矩阵 A 和 B,使得 W≈A×B。这样可以有效地减少需要更新的参数数量。

保持预训练权重不变: LoRA保留了预训练模型的原始权重,并在此基础上进行调整。通过添加低秩更新矩阵 ΔW=A×B 到原始权重矩阵 W,来得到新的权重矩阵 W′=W+ΔW。这种方法允许模型在保留预训练知识的同时,适应新的任务。

Adapter Tuning

  • 论文题目:Parameter-Efficient Transfer Learning for NLP
  • 论文链接:https://arxiv.org/pdf/1902.00751
  • 发表时间:2019.6.13

含义

通过在预训练模型的基础上添加适配器层(adapters),来实现特定任务的微调。这种方法旨在保留预训练模型的原始权重,仅在需要适应新任务的地方进行小规模的参数调整。

原理

插入适配器层: 在预训练模型的特定位置(通常是在每个 Transformer 层的内部或后面)插入适配器层。

适配器层结构: 这些适配器层是一些小规模的神经网络,通常由一个下采样层(减少维度)、一个激活函数(如 ReLU)和一个上采样层(恢复维度)组成。

冻结预训练权重: 在微调过程中,预训练模型的原始权重保持不变,仅训练适配器层的权重。

高效微调: 由于适配器层的参数数量相对较少,微调过程变得更加高效。适配器层可以针对不同任务进行训练,而不影响预训练模型的核心结构。

Prompt Tuning

  • 论文题目:The Power of Scale for Parameter-Efficient Prompt Tuning
  • 论文链接:https://arxiv.org/pdf/2104.08691
  • 发表时间:2021.9.2

含义

在预训练语言模型的输入中添加可学习的嵌入向量作为提示。其核心思想是通过引入任务特定的提示(prompts),而非对整个模型进行全参数更新,从而实现对模型的高效微调

原理

设计提示词: 输入提示(prompt)通常包含任务描述、示例或特定的输入格式。例如,对于情感分类任务,可以设计一个提示词:“这段文字的情感是:”。

优化提示词: Prompt Tuning 的优化对象是输入提示的词嵌入(embedding)。通过梯度下降等优化算法,调整提示词的词嵌入,使得模型在特定任务上的表现达到最优。

冻结预训练模型: 在 Prompt Tuning 中,预训练模型的权重保持不变,仅优化提示词的嵌入

Prefix-Tuning

  • 论文题目:Prefix-Tuning: Optimizing Continuous Prompts for Generation
  • 论文链接:https://arxiv.org/pdf/2101.00190
  • 发表时间:2021.1.1

含义

通过固定预训练模型的参数,仅在输入序列的前面添加一个可训练的前缀(prefix),从而在不改变模型参数的情况下实现特定任务的适应

原理

固定模型参数: 不对预训练语言模型(如 GPT-3、BERT 等)的参数进行微调

添加可训练前缀: 在输入序列的前面添加一个可训练的前缀向量。这个前缀向量的长度和维度可以根据具体任务进行调整

任务适应: 在实际应用中,前缀向量与输入序列一起输入到预训练模型中。由于前缀向量是可训练的,模型可以通过调整前缀向量来适应特定的任务,而无需改变模型本身的参数。

P-Tuning

  • 论文题目:GPT Understands, Too

  • 论文链接:https://arxiv.org/pdf/2103.10385v1

  • 发表时间:2021.3.18

含义

在模型输入中插入一些可训练的提示(prompts),这些提示是嵌入向量(embedding vectors),在训练过程中被优化

原理

固定模型参数: 和 Prefix-Tuning 类似,不改模型参数

插入可训练提示: 在输入序列的适当位置插入一些可训练的提示向量

任务适应: 在训练过程中,这些提示向量与输入序列一起输入到预训练模型中

P-Tuning V2

  • 论文题目:P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks
  • 论文链接:https://arxiv.org/pdf/2110.07602v2
  • 发表时间:2021.10.18

含义

保留了 P-Tuning 的核心思想,即通过优化输入提示向量来引导预训练模型处理特定任务

原理

相比较于P-Tuning:

动态提示优化: 采用动态提示优化方法

多层提示插入: P-Tuning V2 不仅在输入序列的前面插入提示向量,还在模型的不同层次(如中间层)插入提示向量

BitFit

  • 论文题目:BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models
  • 论文链接:https://arxiv.org/abs/2106.10199
  • 发表时间:2021.6.18

含义

通过仅微调模型的偏置参数来适应新的任务,从而减少了需要调整的参数量。

原理

  • 原始 BERT 模型:包含多层 Transformer,每层有权重矩阵 W 和偏置 b。

  • BitFit 微调:保持所有权重矩阵 W 不变,只微调每层的偏置参数 b

DistilBERT

  • 论文题目:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
  • 论文链接:https://arxiv.org/abs/1910.01108
  • 发表时间:2020.3.1

含义

使用知识蒸馏技术将大模型压缩成更小的模型,从而减少微调所需的计算资源和时间。

原理

知识蒸馏是一种模型压缩技术,通过训练一个较小的学生模型(student model)来模仿较大教师模型(teacher model)的行为。具体步骤如下:

  1. 教师模型:使用预训练的 BERT 模型作为教师模型。
  2. 学生模型:构建一个较小的 BERT 模型,即 DistilBERT。
  3. 训练过程:在训练过程中,学生模型通过模仿教师模型的输出来学习。损失函数不仅包括学生模型和教师模型输出之间的差异,还包括学生模型和真实标签之间的差异。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux安全运维] MySQL 数据库安全配置

MySQL 安全配置 1 .1 MySQL备份 1 .1 .1 命令 1.数据库备份 mysqldump -uroot -p123456 bbs > /tmp/bbs.sql2.删除数据库 drop database bbs;3.创建数据库 create database bbs character set utf8;4.导入备份 mysql -uroot -p123456 bbs < /tmp/bbs.sql5.sql 语句…

java计算器,输入公式和对应变量的值

目标&#xff1a;最近想写个东西&#xff0c;本质就是一个计算器&#xff0c;我们可以输入公式&#xff08;例如&#xff1a;ab&#xff09;&#xff0c;然后把公式的值&#xff08;a:10,b:20&#xff09;也输入进去。最后得到结果。核心&#xff1a;这个想法核心部分就是给一个…

OpenCV C++的网络实时视频流传输——基于Yolov5 face与TCP实现实时推流的深度学习图像处理客户端与服务器端

前言 在Windows下使用TCP协议&#xff0c;基于OpenCV C与Yolov5实现了一个完整的实时推流的深度学习图像处理客户端与服务器端&#xff0c;为了达到实时传输的效果&#xff0c;客户端使用了多线程的方式实现。深度学习模型是基于onnxruntime的GPU推理。&#xff0c;实现效果如…

Web基础、apache和nginx的知识及服务搭建

一、Web基础概念和常识 Web&#xff1a;为用户提供的⼀种在互联网上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 Web 服务为⽤户提供各种互联网服务&#xff0c;这些服务包括信息浏览服务&#xff0c;以及各种交互式服务&#xff0c;包括聊…

Windows 11 实现移动热点自启动

原文链接&#xff1a;https://blog.iyatt.com/?p16784 背景 公司的 WiFi 用起来很卡&#xff0c;但是电脑有线使用网络又是正常的&#xff0c;另外我用的那台台式机是有无线网卡的&#xff0c;平时就是用电脑开热点给手机用&#xff0c;但是每次开机都要自己手动启动就麻烦&…

【云原生】Kubernetes中crictl的详细用法教程与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

心动小站Ⅸ--Nvidia一种夸张的增长

当有灭绝级别的威胁时&#xff0c;你希望它如何出现在头版&#xff1f;华尔街日报或 CNN 的新闻中说它即将发生&#xff1f; 大多数新闻都是在灾难发生后才传到你耳中的。谈到人工智能&#xff0c;我们已经收到了很多警告&#xff0c;这些警告来自各个领域的专家&#xff0c;比…

下面关于枚举的描述正确的一项是?

A. 枚举中定义的每一个枚举项其类型都是String&#xff1b; B. 在Java中可以直接继承java.util.Enum类实现枚举类的定义&#xff1b; C. 利用枚举类中的values()方法可以取得全部的枚举项&#xff1b; D. 枚举中定义的构造方法只能够使用private权限声明&#xff1b; 答案选择…

鸿蒙(API 12 Beta2版)NDK开发【Node-API简介】

Node-API简介 场景介绍 HarmonyOS Node-API是基于Node.js 8.x LTS的[Node-API]规范扩展开发的机制&#xff0c;为开发者提供了ArkTS/JS与C/C模块之间的交互能力。它提供了一组稳定的、跨平台的API&#xff0c;可以在不同的操作系统上使用。 本文中如无特别说明&#xff0c;后…

鸿蒙配置Version版本号,并获取其值

app.json5中配置版本号&#xff1a; 获取版本号&#xff1a; bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).then((bundleInfo) > {let versionName bundleInfo.versionName; //应用版本号}).catch((error: BusinessE…

CTF Web SQL注入 10000字详解

这里写目录标题 涉及的数据库知识unionorder bydatabase()information_schemalimit--空格注释replaceinto outfilelikeGROUP BYHAVINGGROUP BY、HAVING、WHERE之间的关系regexp 原理信息收集操作系统数据库判断注入点注入点类型POST注入数字型注入字符型注入搜索型注入Insert/u…

数学中的连分式、无穷连根式、平方根

连分式 连分式&#xff08;continued fraction&#xff09;由和与倒数的多层嵌套构成&#xff0c;可以是有限的&#xff0c;也可以是无限的。 表达式&#xff1a;或 import mathdef fraction_to_continued_fraction(numerator, denominator, max_terms):"""计算…

【无标题】web+http协议+nginx搭建+nginx反向代理(环境准备)

一&#xff0e;Web 为用户提供互联网上浏览信息的服务&#xff0c;web服务是动态的&#xff0c;可交互的。 1.安装httpd yum -y install httpd 2.启动 systemctl start httpd 3.关闭防火墙 systemctl stop firewalld [rootrs html]# echo "我手机号是" > …

如何在 cPanel 上更改主共享 IP 地址

cPanel & WHM的主共享IP地址是服务器上新建虚拟主机账户时的默认IP地址。这使得主机服务商能够轻松创建新账户&#xff0c;并简化原本复杂且耗时的域名和网络服务器配置过程。但如果你想更改cPanel服务器的主共享IP地址&#xff0c;该怎么办呢&#xff1f; 本文将概述更改服…

PHP经销商订货管理系统小程序源码

经销商订货管理系统&#xff1a;重塑供应链效率的利器 &#x1f680; 开篇&#xff1a;解锁供应链管理的新纪元 在竞争激烈的商业环境中&#xff0c;经销商作为供应链的关键一环&#xff0c;其订货效率直接影响到整个供应链的流畅度和响应速度。传统的订货方式往往繁琐、易出…

精品PPT | 云原生大数据平台构建及落地实践.pptx

1、监控和可观测性的关系及渊源 2、当前阶段落地可观测性的挑战在哪里 3、落地好一个可观测系统的三大要素 4、面向故障处理过程的可观测性体系建设案例 5、思考&#xff1a;人工智能2.0对可观测性技术和产品演进的影响

YOLO入门教程(一)——训练自己的模型【含教程源码 + 故障排查】

目录 引言前期准备Step1 打标训练Step2 格式转换Step3 整理训练集Step4 训练数据集4.1创建yaml文件4.2训练4.3故障排查4.3.1OpenCV版本故障&#xff0c;把OpenCV版本升级到4.0以上4.3.2NumPy版本故障&#xff0c;把NumPy降低版本到1.26.44.3.3没有安装ultralytics模块4.3.4Aria…

Web 安全:Memcached 未授权访问漏洞.(11211端口)

Web 安全&#xff1a;Memcached 未授权访问漏洞 Memcached 是一套常用的 key-value 缓存系统&#xff0c;由于它本身没有权限控制模块&#xff0c;所以对公网开放的 Memcache 服务很容易被攻击者扫描发现。然而 Memcached 的默认配置&#xff0c;11211 端口 不需要密码即可访问…