落地领域大模型应知必会(2): 轻量化微调

2023-11-14

编者按:在实际部署大模型的过程中可能会面临资源限制的问题。通过轻量化大模型微调技术,可以将大型预训练语言模型适配到特定领域、特定任务,并减小其模型尺寸和计算量需求,提高性能和效率。

上一篇文章中,我们分享了大语言模型的主要微调技术总览。接下来,本文将介绍轻量化大模型微调技术,重点关注Prompt Tuning和Prefix Tuning。

以下是译文,Enjoy!

本文经原作者授权,由Baihai IDP编译。如需转载译文,请联系获取授权。

原文链接:

https://magazine.sebastianraschka.com/p/understanding-parameter-efficient

作者 | SEBASTIAN RASCHKA, PHD

编译 | 岳扬

01 Prompt Tuning

Prompt Tuning是一种通过改变输入提示语(input prompt)以获得更优模型效果的技术。举个例子,如果我们想将一条英语句子翻译成德语,可以采用多种不同的方式向模型提问,如下图所示:

图片

这是一个hard prompt tuning示例,通过尝试多种输入提示来获得更好的输出效果。

这个案例采用的是硬提示调优(hard prompt tuning) 方法,因为它直接修改了离散的输入标记(input tokens),而这些标记是不可再分的。

译者注:在自然语言处理领域,一般将文本进行分词处理,将一个句子拆分为一个个离散的单词或标点符号作为input token。每个token代表一个离散的语义单位,模型可以根据这些token进行语义理解和生成回复。

例如,对于句子 “你好,很高兴见到你!”,可以将其分解为以下离散的input token:

[ “你”, “好”, “,”, “很”, “高兴”, “见到”, “你”, “!” ]

这些离散的token可以作为模型的输入,用于训练或生成对话回复。注意,在使用离散的input token时需要将其转换为对应的向量表示(如词嵌入表示),以便模型能够对其进行处理和学习。

与硬提示调优(hard prompt tuning)相反,软提示调优(soft prompt tuning)方法(Lester等人,2021年[1])将输入标记(input tokens)的嵌入(embeddings)与可通过反向传播算法(backpropagation)进行优化的可训练张量(tensor)连接起来,以提高模型在目标任务上的性能。

伪代码如下所示:

图片

说明soft prompting相关概念的伪代码

与离散的文本prompt不同,软提示(soft prompts)是通过反向传播算法(back-propagation)获得的,因此可以根据已标注数据集的损失函数反馈(loss feedback)进行调整。

相较于全参数微调(full-finetuning),软提示调优(soft prompt tuning)具有更高的参数效率(more parameter-efficient),但使用软提示调优的模型性能可能稍逊一筹,如下图所示。

图片

该图来自提出soft prompting的论文,https://arxiv.org/abs/2104.08691

另一方面,如果模型参数为11B,则根据上图所示,软提示调优(soft prompt tuning)可以达到全参数微调(full fine tuning)的性能水平(需要注意的是,LLaMA模型的最小参数规模为7B,最大参数规模为65B)。

存储效率

如果我们想要将大模型应用于特定任务,并因此需要微调预训练模型,通常需要为每个任务保存整个模型的副本。然而,如果使用prompt tuning,我们只需要为每个任务保存一个小小的task-specific soft prompt。例如,对于T5 "XXL"模型,每个微调模型副本需要110亿个参数。相比之下,假设prompt长度为5个tokens,嵌入的size为4096维(4096-dimensional),对于每个每个任务,通过prompt tuning只需要20480个参数,这相当于减少了五个数量级以上的参数量。

02 从Prompt Tuning到Prefix Tuning

目前,有一种特殊的、被独立开发的prompt tuning方式被称为前缀调优(prefix tuning) (Li & Liang 2021[2])。其思想是将可训练的张量(trainable tensors)添加到每个Transformer块中,而非像soft prompt tuning中那样只添加输入嵌入(input embeddings)。同时,通过全连接层(fully connected layers,两层并且具有非线性激活函数的小型多层感知机)获取soft prompt embedding。

者注: 使用深度学习模型进行自然语言处理任务时,input embeddings常作*为模型的第一层进行使用,将离散的input token转换为连续的向量表示,从而实现对文本的有效建模和处理。*

前缀调优技术将预定义的prompt嵌入到模型中,以影响模型的生成行为。这项技术可以改变模型对输入的解释方式,使得模型能够更好地根据prompt生成相应的输出。

下图说明了常规Transformer块和经过前缀(prefix)修改的Transformer块之间的区别

图片

Illustration of prefix tuning

请注意,在上图中,“全连接层”是指一个小型多层感知机(由两个全连接层和一个非线性激活函数组成)。这些全连接层将soft prompt嵌入到一个与transformer块输入具有相同维度的特征空间(feature space)中,以确保两层连接时的兼容性。

使用Python伪代码,可以说明常规Transformer块和经过前缀(prefix)修改的Transformer块之间的区别:

图片

prefix tuning的伪代码图示

根据提出prefix tuning的论文,该方法在仅训练0.1%的参数的情况下,实现了与微调所有层相当的模型性能(该实验基于GPT-2模型)。此外,在大多数情况下,prefix tuning的表现甚至优于微调所有层,可能是因为该方法涉及的参数较少,有助于减少对较小目标数据集的过拟合问题

图片

由Li and Liang发表的Prefix Tuning相关论文中的注释图

最后,为了澄清推理过程中soft prompts的使用方式,请注意以下几点:在学习了soft prompts后,在我们针对特定任务对模型进行微调时,我们必须将其(soft prompts)作为前缀(prefix)提供。这样做可以使模型根据特定任务自定义其回答。此外,我们可以拥有多个soft prompts,每个对应于不同的任务,并且在推理过程能够提供相应的前缀,以最好地去处理特定任务。

03 Prefix与Prompt Tuning

在性能方面,soft prompt tuning和prefix tuning孰强孰弱?不幸的是,就性能而言,目前尚无直接比较soft prompt tuning和prefix tuning的研究结果,因为这它们是独立开发并同时发布的方法,各自的论文中未进行直接的比较。此外,在我查阅参数高效型大语言模型(parameter-efficient LLM)的最新文献中,并没有找到同时包含这两种方法的基准测试(benchmark)

prefix tuning这种方法中,通过向输入序列(input sequence)插入特定任务的前缀(a task-specific prefix)来修改模型的更多层、,因此需要微调更多的参数。另一方面,soft prompt tuning仅涉及对input prompt embeddings进行微调,因此更新的参数较少。这使得soft prompt tuning可能比prefix tuning更轻量化(parameter-efficient),但也可能限制了其适应更广泛目标任务的能力。

就性能方面而言,我们可以合理地期望prefix tuning可能表现得更好,因为它能够调整更多的模型参数以便适应更广泛的新任务。然而,这可能是以增加计算资源的消耗和提高模型出现过拟合的风险为代价的。另一方面,soft prompt tuning可能具有更高的计算效率,但由于微调的参数较少,可能会导限制模型的性能

04 总结

该文章介绍了两种轻量化微调技术:soft prompt tuning 和 prefix tuning。与全参数微调(full finetuning)相比,这两种方法仅需调整很少的参数。

对于开发者来说,soft prompt tuning可以更具有吸引力,因为他们只需要修改input embeddings,而不需像prefix tuning那样修改内部transformer块。

在你开始尝试使用这些技术微调大模型之前,我建议你持续关注其他更有趣的轻量化微调(parameter-efficient finetuning)技术:Adapters,LLaMA-Adapter(与常规的Adapter有关但也有所不同)以及Low-Rank Adaptation(LoRA) 等等。这些技术可能会提供更多选择,并且可以根据你的具体需求进行更好的调整。

END

参考资料

  1. https://arxiv.org/abs/2104.08691

  2. https://arxiv.org/abs/2101.00190

本文经原作者授权,由Baihai IDP编译。如需转载译文,请联系获取授权。

原文链接

https://magazine.sebastianraschka.com/p/understanding-parameter-efficient

相关文章推荐
落地领域大模型应知必会 (1) :主要微调方法总览

大模型的三大法宝:Finetune, Prompt Engineering, Reward

Prompt Learning: ChatGPT也在用的NLP新范式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

落地领域大模型应知必会(2): 轻量化微调 的相关文章

  • 经济学人:重塑世界的区块链技术

    比特币背后的技术可让彼此互不认识的人建立可依赖的账簿 这远远超出了加密数字货币本身的意义 Mariana Catalina Izaguirre女士在她简陋的房子已经居住了三十年 但洪都拉斯的警察在2009年突然要将她赶走 不同于她在特古西加
  • Frida hook零基础教程

    1 环境搭建 1 准备frida服务端环境 Releases frida frida GitHub 根据手机具体版本下载对应文件并解压 Android手机一般是arm64架构 将解压后的frida server推送到手机端的 data lo
  • rocketmq客户端配置

    1 客户端配置 相对于RocketMQ的Broker集群 生产者和消费者都是客户端 2 客户端寻址方式 RocketMQ可以令客户端找到Name Server 然后通过Name Server再找到Broker 如下所示有多种配置方式 优先级

随机推荐

  • 智慧农业物联网系统 智慧农业解决方案

    智慧农业是智慧经济发展在农牧业上的运用反映 伴随着5G无线通信技术 互联网大数据信息资源管理技术性等现代化技术性普及化 物联网的实际运用标准逐渐完善 传统农业便熟练掌握物联网 摇身一变变成智能农业 智慧农业应用农业地区的每个传感器连接点检测
  • linux间文件实时同步(syncthing) ---带历史版本“后悔药”

    一 概念简介 syncthing 一款开源免费的数据同步工具 基于P2P的跨平台文件同步工具 通过tcp建立设备连接 再通过TLS进行数据安全传输 支持公网与局域网搭建 支持单双向同步与历史版本控制 后悔药 备份机未感染情况下 历史版本理论
  • 关于我“不小心”打开我姐浏览器这件事儿

    今天早上手机骤然没电 我犹如一只情急之下的小松鼠 抓紧时间把手机送回家中的充电宝岛 房间 接着 为了方便处理业务 扮演特别行动队员的角色 借来了姐姐的手机 结果可嚣张了 浏览器记录里居然有这么多 精彩 内容 哎呀 姐姐啊 你这是干啥呢 怎么
  • layui弹窗间的传值(layui弹出层传值)(窗口传值)

    layui弹窗间的传值 layui弹出层传值 窗口传值 LayUI父窗口向弹出层传递数据可以解决页面中的编辑数据的操作 点击编辑按钮 父窗口传递当前选中行当数据至弹出层 弹出层获取到父窗口传递的数据 接着在弹出层中展示出来 效果如下 具体步
  • 数据结构和算法(C)------4.线性表(2)单链表

    目录 1 链式存储结构 1 1 定义 1 2 实现方式 1 3 与链式存储有关的术语 1 4 链表 链式存储结构 的特点和优缺点 1 4 1 特点 1 4 2 优点 1 4 3 缺点 2 单链表的实现 2 1 单链表的存储结构定义 2 2
  • ImportError: cannot import name 'ndcg_score' from 'sklearn.metrics'

    用sklearn metrics调用ndcg score 出现找不到模块的情况 从网上找了资料都说是sklearn版本问题 查看了一下版本是0 20 3 然后就去更新sklearn pip install upgrade scikit le
  • 2021CCPC河南省赛题解(主席树+二分)

    考场没看见随机化数据 写了一个主席树 二分 但是之前练习的时候没有做过多实例 忘记初始化上层用到的所有节点信息了 wa麻了 思路 主席树 二分 O nlogn 2 二分距离当前点最近的 大于等于a i 的数的个数最靠右的位置 然后利用主席树
  • 尚硅谷Redis 7学习笔记

    尚硅谷Redis 7学习笔记 视频链接 新手入门篇 1 安装及数据类型 2 持久化 3 Redis 7 事务 管道 发布订阅 主从 哨兵 集群 4 springboot整合redis 高级篇 更新中
  • 稳压二极管原理及使用

    要理解稳压二极管的工作原理 只要了解二极管的反向特性就行了 所有的晶体二极管 其基本特性是单向导通 就是说 正向加压导通 反向加压不通 这里有个条件就是反向加压不超过管子的反向耐压值 那么超过耐压值后是什么结果呢 一个简单的答案就是管子烧毁
  • 【Python】之 os.path 模块详解

    前言 os path 模块是系统路径操作模块 但实际的原理可以把它认为是处理包含斜杠 和反斜杠 字符串的模块 其中 斜杠 是 linux 系统下的路径分隔符 和反斜杠 是 windows 系统下的路径分隔符 也就是说 只要提供一个包含斜杠和
  • 论文阅读笔记:Attention is All You Need

    论文标题 Attention is All You Need 目录 论文标题 Attention is All You Need 1 摘要 2 前言 3 模型结构 自注意力机制 多头自注意力机制 注意力机制在Transformer中的应用
  • shell脚本不能激活环境变量问题完美解决

    今天在Linux系统写shell脚本时发现配置好java环境变量后 明明写了source etc profile 但还是不能激活 也就是java version没有反应 非要自己手动去激活 后来发现我是用 test sh 来启动的脚本 te
  • RPA技术分享--通过解压 OFD 获取发票信息

    了解RPA www i search com cn 学习RPA https support i search com cn 下载RPA https www i search com cn from csdn 实际上 ofd docx xls
  • sql实现截取字段内容

    场景 出现一批数据需要修复 调用方法进行传参 而存储该字段内容是JSONString呈现 所需的仅仅是其中的某一部分数据 因此需要完成截取 并拼接成想要的格式 使用如下格式调用postman实现自动化执行接口调用 例如 taskId xxx
  • 用GCC生成和调用dll【C语言版】

    今天在网上找了好久 才找到这个能成功运行的视频教程 现在分享给大家 Windows下C语言使用GCC编写和调用dll https www bilibili com video BV1E4411z7Ua share source copy w
  • 颜色识别的实例二

    原图 识别结果 代码 color fuses hdev classify fuses by color dev update window off step set up fuse properties and hue ranges Fus
  • iwebsec靶场 SQL注入漏洞通关笔记6- 宽字节注入

    系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1 数字型注入 mooyuan的博客 CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2 字符型注入 宽字节注入 mooyuan的博客 CSDN博客 iwebsec靶场 SQL
  • (十七)QT生成PDF文件

    在实际情况中 我们有时候会遇到需要把txt html或者图片变成PDF文件的情况 例如把检测结果生成PDF文档给客户等等 QT4使用QPrinter来实现这个功能 QT5修改为QPdfWriter这个类 一 QT5的修改 如果你想在QT5中
  • 思岚RPLIDAR A2 在ubuntu 16.04上的测试

    1 下载雷达ROS包 首先在github上下载rplidar的ros包 下载指令为 默认安装了git git clone https github com Slamtec rplidar ros git 在ubuntu上创建工作空间 并将该
  • 落地领域大模型应知必会(2): 轻量化微调

    编者按 在实际部署大模型的过程中可能会面临资源限制的问题 通过轻量化大模型微调技术 可以将大型预训练语言模型适配到特定领域 特定任务 并减小其模型尺寸和计算量需求 提高性能和效率 在上一篇文章中 我们分享了大语言模型的主要微调技术总览 接下