预训练大语言模型的三种微调技术总结:fine-tuning、parameter-efficient fine-tuning和prompt-tuning

news2024/11/17 3:35:51

预训练大模型,尤其是大语言模型已经是当前最火热的AI技术。2018年Google发布BERT模型(BERT在DataLearner官方模型卡信息:https://www.datalearner.com/ai-models/pretrained-models/BERT )的时候,大家还没有意识到本轮AI浪潮会发展到如此火热的地步。但是,BERT出现之后,fine-tuning技术也随之流行,即将预训练模型的权重冻结,然后根据具体任务进行微调变得十分有效且被应用在很多场景。而随着ChatGPT的火热,parameter-efficient fine-tuning和prompt-tuning技术似乎也有替代传统fine-tuning的趋势,本篇论文将简单描述预训练模型领域这三种微调技术及其差别。

当然,这三种技术并不是有完全隔离的界线,目前很多研究也并没有明显区分,本文的内容结合部分研究提供一种视角。欢迎理性讨论~

img

一、fine-tuning技术

Fine-tuning是一种在自然语言处理(NLP)中使用的技术,用于将预训练的语言模型适应于特定任务或领域。Fine-tuning的基本思想是采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它。

Fine-tuning的概念已经存在很多年,并在各种背景下被使用。Fine-tuning在NLP中最早的已知应用是在神经机器翻译(NMT)的背景下,其中研究人员使用预训练的神经网络来初始化一个更小的网络的权重,然后对其进行了特定的翻译任务的微调。

经典的fine-tuning方法包括将预训练模型与少量特定任务数据一起继续训练。在这个过程中,预训练模型的权重被更新,以更好地适应任务。所需的fine-tuning量取决于预训练语料库和任务特定语料库之间的相似性。如果两者相似,可能只需要少量的fine-tuning。如果两者不相似,则可能需要更多的fine-tuning。

在NLP中,fine-tuning最著名的例子之一是由OpenAI开发的OpenAI GPT(生成式预训练变压器)模型。GPT模型在大量文本上进行了预训练,然后在各种任务上进行了微调,例如语言建模,问答和摘要。经过微调的模型在这些任务上取得了最先进的性能。

下图来自威斯康星大学麦迪逊分校的统计学教授Sebastian Raschka的总结。

img

这是近几年很流行的大模型使用方法。即将除了输出层以外的所有权重“冻结”(freeze)。然后随机初始化输出层参数,再以迁移学习的方式训练。仅仅更新全连接输出层,其它层的权重不变。

二、parameter-efficient fine-tuning技术

参数高效的fine-tuning,简称PEFT,旨在在尽可能减少所需的参数和计算资源的情况下,实现对预训练语言模型的有效微调。它是自然语言处理(NLP)中一组用于将预训练语言模型适应特定任务的方法,其所需参数和计算资源比传统的fine-tuning方法更少。

换个角度说,parameter-efficient fine-tuning技术在通过仅训练一小组参数来解决传统微调技术需要大量资源的问题,这些参数可能是现有模型参数的子集或新添加的一组参数。这些方法在参数效率、内存效率、训练速度、模型的最终质量和附加推理成本(如果有的话)方面存在差异。

这些技术对于研究人员和开发人员非常重要,因为他们可能无法使用强大的硬件或需要在低资源设备上进行模型微调。

其中一种参数高效的fine-tuning技术称为蒸馏(distillation),它由Hinton等人于2015年引入。该方法涉及训练一个较小的模型来模仿一个较大的预训练模型的行为。预训练模型生成“教师”预测结果,然后用于训练较小的“学生”模型。通过这样做,学生模型可以从较大模型的知识中学习,而无需存储所有参数。

另一种技术称为适配器训练(adapter training),它由Houlsby等人于2019年引入。适配器是添加到预训练模型中的小型神经网络,用于特定任务的微调。这些适配器只占原始模型大小的一小部分,这使得训练更快,内存需求更低。适配器可以针对多种任务进行训练,然后插入到预训练模型中以执行新任务。

第三种技术称为渐进收缩(progressive shrinking),它由Kaplan等人于2020年引入。这种技术涉及在fine-tuning期间逐渐减小预训练模型的大小。从一个大模型开始,逐渐减少参数的数量,直到达到所需的性能。这种方法可以产生比从头开始训练的模型性能更好的小型模型。

UMass Lowell大学的教授在3月份发布了一篇parameter-efficient fine-tuning的综述,大家可以去学习一下:Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning

三、prompt-tuning技术

prompt-tuning是一种更近期的精调预训练语言模型的方法重点是调整输入提示(input prompt)而非修改模型参数。这意味着预训练模型保持不变,只有输入提示被修改以适应下游的任务。通过设计和优化一组提示,可以使预训练模型执行特定任务。

prompt-tuning和传统的fine-tuning的主要区别在于预训练模型被修改的程度。fine-tuning修改模型的权重,而提示调整只修改模型的输入。因此,prompt-tuning调整比精调的计算成本低,需要的资源和训练时间也更少。此外,prompt-tuning比精调更灵活,因为它允许创建特定任务的提示,可以适应各种任务。

对于像GPT-3这样的大规模模型,整体精调可能需要大量计算资源。

一些值得注意的prompt-tuning技术包括:

Prefix tuning(前缀调整):由Li和Liang在论文“Prefix-Tuning: Optimizing Continuous Prompts for Generation”(2021)中提出。前缀调整涉及学习特定任务的连续提示,在推理过程中将其添加到输入之前。通过优化这个连续提示,模型可以适应特定任务而不修改底层模型参数,这节省了计算资源并实现了高效的精调。

下图是论文中给出的fine-tuning与Prefix tuning的差异示意图:

img

==P-Tuning:==由Liu等人在论文“P-Tuning: GPT Understands, Learns, and Generates Any Language”(2021)中提出。P-Tuning涉及训练可学习的称为“提示记号”的参数,这些参数与输入序列连接。这些提示记号是特定于任务的,在精调过程中进行优化,使得模型可以在保持原始模型参数不变的情况下在新任务上表现良好。

经典的prompt-tuning方式不涉及对底层模型的任何参数更新。相反,它侧重于精心制作可以指导预训练模型生成所需输出的输入提示或模板。这通常是一个手动的试错过程,从中选择最适合特定任务的提示。然而,随着前缀调整和P-Tuning等提示调整技术的出现,它们提供了更系统化和高效的方式来适应输入提示,从而提高大型预训练模型在特定任务上的性能。

四、总结

其实,从上述的总结中大家可以看到,微调技术的发展似乎与模型的发展规模息息相关。最早出现fine-tuning也是模型变大之后,使用原有模型的架构在新数据上训练成本过高且丢失了原有模型的能力,后来也是因为模型发展的规模增长远远超过硬件性能的发展,导致更加高效的微调技术出现。而当前最火热的prompt-tuning其实也就是几乎根本无法微调大模型而产生的一种替代方式。当然,模型本身能力的强大也使得该方法变得有效。其实,从这个思路下去,大家也可以看到,当大模型开始涉及更加复杂和现实的问题时候,如果可以出现自动prompt-tuning技术而非手工调整可能是未来很重要的方向。毕竟在文本摘要、代码debug等需要大量的输入来让模型认识问题的场景,如何有效的将过长的输入prompt给模型是一个很重要的问题,现在的大模型在长输入方面成本推理成本很高也有很大限制,因此这种技术也是未来很重要的一个方向!

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

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

相关文章

国际植物命名数据库(International Plant Names Index)

功能介绍 https://www.ipni.org/ 是国际植物命名数据库(International Plant Names Index)的官方网站。国际植物命名数据库是一个全球性的植物命名和分类资源,旨在提供植物命名信息的权威来源。以下是该网站的一些特点和功能: 植…

wmvcore.dll丢失怎么弄?解决wmvcore.dll丢失问题

wmvcore.dll是Windows Media Player中的一个重要组件,它负责处理视频和音频文件的编码和解码。如果您在使用Windows Media Player或其他媒体播放器时遇到了wmvcore.dll丢失的问题,那么您可能无法播放视频或音频文件。在这种情况下,您可以使用…

干货|接口测试必备技能-常见接口协议解析

【摘要】 服务与服务之间传递数据包,往往会因为不同的应用场景,使用不同的通讯协议进行传递。比如网站的访问,常常会使用 HTTP 协议进行传递,文件传输使用 FTP,邮件传递使用 SMTP。上述的三种类型的协议都处于网络模型…

电流环参数自整定及其原理

前言 电流环参数自整定是通过程序计算电流环PI调节器增益以实现环路响应仅受用户设定PI调节器带宽影响,而和电机本身参数无关的目的。 本文分析电流环参数自整定背后的原理,并通过仿真进行验证。 1、永磁同步电机dq轴数学模型 本文提到的电流环参数自…

【论文总结】Creating a Secure Underlay for the Internet

为互联网创建一个安全的底层 摘要: 对手可以利用跨域路由漏洞拦截通信并破坏关键互联网应用的安全性。与此同时,部署诸如边界网关安全协议(BGPsec)和下一代网络上的可扩展性、控制和隔离(SCION)等安全路由…

38 KVM管理设备-管理虚拟机USB

文章目录 38 KVM管理设备-管理虚拟机USB38.1 配置USB控制器38.1.1 概述38.1.2 注意事项38.1.3 配置方法 38.2 配置USB直通设备38.2.1 概述38.2.2 注意事项38.2.3 配置说明38.2.4 配置方法 38 KVM管理设备-管理虚拟机USB 为了方便在虚拟机内部使用USBkey设备、USB海量存储设备等…

蓝桥杯单片机基础模板一:动态数码管显示

蓝桥杯单片机有一些基础模块的写法,他是没有一定的公式模板的。 好比动态数码管扫描显示,原理就是快速地 传输段选和位选。 但因为电路上添加了74HC573芯片,导致了我们移植别处 51单片机的动态扫描代码 会出现诸多问题,比如闪烁…

期末学习总结模板

期末学习总结精选篇1 转眼间研究生的生活已经有一学期了,感觉才参加复试没多久,回头想想,这一年过的真快,因为生病,耽误了很多时间,收获太少,遗憾太多。 本学期的收获: 1、暑假里看了…

Elasticsearch文件存储

分析Elasticsearch Index文件是如何存储的? 主要是想看一下FST文件是以什么粒度创建的? 首先通过kibana找一个索引的shard,此处咱们就以logstash-2023.05.30索引为例 查看下shard分布情况 GET /_cat/shards/logstash-2023.05.30?vindex …

AtCoder Beginner Contest 303——A-E题讲解

蒟蒻来讲题,还望大家喜。若哪有问题,大家尽可提! Hello, 大家好哇!本初中生蒟蒻讲解一下AtCoder Beginner Contest 303这场比赛的A-E题! A - Similar String 原题 Problem Statement Two characters x x x and y…

Python IDLE介绍

目录 IDE(集成开发环境)是什么 Python IDLE使用方法详解 Python IDLE常用快捷键 IDE(集成开发环境)是什么 IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员…

一、Fuzzing速成之AFL实战

文章目录 一、Fuzzing基本知识1、什么是Fuzzing?2、Fuzzing运行流程 二、Fuzzing实战1、下载AFL压缩包2、安装AFL3、Fuzzing 一、Fuzzing基本知识 1、什么是Fuzzing? 维基百科将模糊测试定义为:     模糊测试 (fuzz testing, fuzzing)…

【Python 文本挖掘】零基础也能轻松掌握的学习路线与参考资料

Python文本挖掘是利用Python语言和相关文本挖掘工具对大量文本数据进行分析和挖掘的过程。Python在文本挖掘方面广泛应用于自然语言处理、情感分析、主题建模、关键词提取等领域。 学习Python文本挖掘需要掌握Python编程基础、数据分析和可视化、自然语言处理、机器学习等知识…

Flutter:功能型组件(3)- 拖拽组件、缩放平移组件

拖拽组件 拖拽组件包含 Draggable、LongPressDraggable 和 DragTarget。 Draggable、LongPressDraggable 为可拖拽的组件,LongPressDraggable 继承自Draggable,因此用法和 Draggable 完全一样,唯一的区别就是 LongPressDraggable 触发拖动的…

nginx添加nginx-sticky-module模块步骤

nginx-sticky-module模块是nginx实现负载均衡的一种方案,和ip_hash负载均衡算法会有区别的 ip_hash 根据客户端ip将请求分配到不同的服务器上.sticky 根据服务器个客户端的cookie,客户端再次请求是会带上此cookie,nginx会把有次cookie的请求转发到颁发cookie的服务器上. 安装…

AI工具合集!一共600+覆盖全行业,除了ChatGPT,那你也会喜欢这些其他的AI工具

如果你喜欢ChatGPT,那你也会喜欢这些其他的AI工具。 AI正在改变我们的工作方式,我不想错过充分利用它的机会,所以我尝试了一系列AI工具来节省时间,提高我的工作效率。 这里有个集合了600ai工具的合集包。 序号AI工具名称AI分类A…

I.MX RT1170加密启动详解(4):OTFAD XIP加密运行代码

本节将介绍基于AES加密的OTFAD引擎,它可以在不影响AES-128-CTR性能的情况下实时解密数据。OTFAD包括对AES密钥展开机制的完整硬件支持,它可以解密最多4个唯一的AES上下文。每个上下文都有一个用户定义的128位的Image Encryption Key(IEK)、一个64位的计数…

uniapp的movable-view、movable-area

uniapp的movable-view、movable-area movable-view: 可以在页面中拖拽滑动必须在movable-area组件中,并且必须是直接子节点必须设置width和height属性,不设置默认为10px提供特殊事件:htouchmove和vtouchmove movable-area&#xf…

用于ECharts的全国省市区县乡镇街道级的行政区划边界数据(GeoJSON格式)

https://map.vanbyte.com 提供了免费的省市县3级行政边界数据(GeoJSON格式)、省市县乡4级联动数据。 至于行政区划边界数据的来源,网络上有各种教程。授人以鱼不如授人以渔,下面记录一下各类方法的具体步骤。 来源1:阿里云的数据可视化平台…

听劝 不要盲目的学网络安全。

听劝 不要盲目的学网络安全。 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可…