大模型微调方法调研

news/2024/10/20 5:27:55/

文章目录

  • Freeze方法
  • PT方法
  • Lora方法
  • Adalora
  • Prompt Tuning
  • Adapter Tuning
  • Prefix tuning
  • 遗留问题

Freeze方法

对原始模型部分参数进行冻结操作,仅训练部分参数

PT方法

P-Tuning,仅对大模型的Embedding加入新的参数。
P-Tuning 提出将 Prompt 转换为可以学习的 Embedding 层,只是考虑到直接对 Embedding 参数进行优化会存在这样两个挑战:

Discretenes: 对输入正常语料的 Embedding 层已经经过预训练,而如果直接对输入的 prompt embedding进行随机初始化训练,容易陷入局部最优。
Association:没法捕捉到 prompt embedding 之间的相关关系。
作者在这里提出用 MLP + LSTM 的方式来对 prompt embedding 进行一层处理:

在这里插入图片描述

self.lstm_head = torch.nn.LSTM(input_size=self.input_size,hidden_size=self.hidden_size,num_layers=num_layers,dropout=lstm_dropout,bidirectional=True,batch_first=True,)self.mlp_head = torch.nn.Sequential(torch.nn.Linear(self.hidden_size * 2, self.hidden_size * 2),torch.nn.ReLU(),torch.nn.Linear(self.hidden_size * 2, self.output_size),
)
self.mlp_head(self.lstm_head(input_embeds)[0])

Prefix Tuning 通过在每个 Attention 层都加入 Prefix Embedding 来增加额外的参数,通过 MLP 来初始化;而 P-Tuning 只是在输入的时候加入 Embedding,并通过 LSTM+MLP 来初始化。

P-Tuning-V2,将大模型的Embedding和每一层前都加上新的参数。

在这里插入图片描述

Lora方法

在大型语言模型上对指定参数增加额外的低秩矩阵,并在模型训练过程中,仅训练而外增加的参数。

Adalora

预训练语言模型中的不同权重参数对下游任务的贡献是不同的。因此需要更加智能地分配参数预算,以便在微调过程中更加高效地更新那些对模型性能贡献较大的参数。

具体来说,通过奇异值分解将权重矩阵分解为增量矩阵,并根据新的重要性度量动态地调整每个增量矩阵中奇异值的大小。这样可以使得在微调过程中只更新那些对模型性能贡献较大或必要的参数,从而提高了模型性能和参数效率。

在这里插入图片描述

Prompt Tuning

该方法可以看作是Prefix Tuning的简化版本,只在输入层加入prompt tokens,并不需要加入MLP进行调整来解决难训练的问题。固定预训练参数,为每一个任务额外添加一个或多个 embedding,之后拼接 query 正常输入 LLM,并只训练这些 embedding。随着预训练模型参数量的增加,Prompt Tuning的方法会逼近fine-tuning的结果。

在这里插入图片描述

作者:吃果冻不吐果冻皮
链接:https://www.zhihu.com/question/601594836/answer/3032763174
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Adapter Tuning

设计了Adapter结构(首先是一个down-project层将高维度特征映射到低维特征,然后过一个非线形层之后,再用一个up-project结构将低维特征映射回原来的高维特征;同时也设计了skip-connection结构,确保了在最差的情况下能够退化为identity),并将其嵌入Transformer的结构里面,在训练时,固定住原来预训练模型的参数不变,只对新增的Adapter结构进行微调。同时为了保证训练的高效性(也就是尽可能少的引入更多参数)
在这里插入图片描述

作者:吃果冻不吐果冻皮
链接:https://www.zhihu.com/question/601594836/answer/3032763174
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载
请注明出处。

Prefix tuning

在输入 token 之前构造一段任务相关的 virtual tokens 作为 Prefix,然后训练的时候只更新 Prefix 部分的参数,而 Transformer 中的其他部分参数固定。该方法其实和构造 Prompt 类似,只是 Prompt 是人为构造的“显式”的提示,并且无法更新参数,而Prefix 则是可以学习的“隐式”的提示。

同时,为了防止直接更新 Prefix 的参数导致训练不稳定的情况,他们在 Prefix 层前面加了 MLP 结构(相当于将Prefix 分解为更小维度的 Input 与 MLP 的组合后输出的结果),训练完成后,只保留 Prefix 的参数。

embedding = torch.nn.Embedding(num_virtual_tokens, token_dim)
transform = torch.nn.Sequential(torch.nn.Linear(token_dim, encoder_hidden_size),torch.nn.Tanh(),torch.nn.Linear(encoder_hidden_size, num_layers * 2 * token_dim),
)

在这里插入图片描述
原文链接:https://zhuanlan.zhihu.com/p/627642632

大模型微调论文综述:
Delta Tuning: A Comprehensive Study of Parameter Efficient Methods for Pre-trained Language Models

遗留问题

租的显卡怎么在本地部署和使用
每种微调方式的机理、优缺点?
微调的实现?data/model/


http://www.ppmy.cn/news/380116.html

相关文章

二层和三层交换机到底有啥区别?二者如何切换?

概要 计算机网络中的交换机是用于在局域网(LAN)中转发数据包的重要设备。其中,二层交换机和三层交换机是两种常见的交换机类型。本文将详细介绍二层交换机和三层交换机的特点、工作原理、各自的优缺点以及在思科、华为、瞻博网络三家厂商如何…

ai绘画生成器有哪些?分享3款好用的ai自动绘画生成器

文字和绘画是两种看似不同的艺术形式,但它们之间却有着一种神奇的联系。你或许曾经在一些创意绘画作品中发现过使用文字进行表达的元素,那么,文本究竟如何生成这些令人惊叹的艺术作品呢?今天,我们就来探索一下文字怎样…

Layui禁止表格部分复选框,layui禁止表格自带第一列复选框,layui禁止表格部分复选框,layui获取表格复选框选中数据

前言 禁止某些行可以勾选操作&#xff0c;及选中后的操作和行操作 效果 实现 执行一个table示例 <table id"data_table" class"layui-hide" lay-filter"data_table"></table>cols 的第一列就是需要重写的复选框 table.render({…

万物云原生下的服务进化 | 京东云技术团队

导读&#xff1a; 在万物云原生下的环境下&#xff0c;Java的市场份额也因耗资源、启动慢等缺点&#xff0c;导致在云原生环境里被放大而降低&#xff0c;通过这篇文章&#xff0c;读者可以更好地了解如何在云原生环境下通过升级相关版本和使用GraalVM打出原生镜像到方式&…

Python3 使用xpath匹配爬取彼岸壁纸高清美女图片

Python3 使用xpath匹配爬取高清美女图片&#xff01; 写代码必做的三件事&#xff1a; 1.做笔记&#xff0c;注意细节&#xff01; 2.代码一定要加上注释&#xff01; 3.思路一定要清晰&#xff01; 最终结果图&#xff1a; 全部都是高清大图&#xff1a;1920x1080 网站链接&…

美女福利图片API接口,免费好用

1、前言 美女图片福利查询接口&#xff0c;能获取一些青春靓女的图片&#xff0c;拿来做一些demo非常合适。 查看接口完整信息&#xff1a;https://www.idmayi.com/doc/detail?id15 2、接口明细 注意&#xff1a;app_id和app_secret是临时秘钥&#xff0c;如果真正使用&#x…

Swagger 2.0 规范 详解

目录 前言 顶级标签 元数据 基本网址 标签信息 媒体类型&#xff08;MIME TYPE) 路径与操作 参数 &#xff08;parameters) Common Parameters 同一路径的公共参数 不同路径的公共参数 描述响应体 RequestBody 响应体 空响应体 默认响应 重用响应 完整的Demo …

使用ReactPy报错:RuntimeError: No built-in server implementation installed.解决

目录 一、问题呈现二、问题原因及解决办法三、处理结果 一、问题呈现 在初次运行ReactPy报错raise RuntimeError("No built-in server implementation installed.") RuntimeError: No built-in server implementation installed.具体报错信息如下&#xff1a; D:\i…