LLM:参数高效微调方法总结

news/2024/10/20 10:35:03/

可以分为基于适配器、基于提示的。

一、基于适配器的方法

其核心思想是在预训练模型的各层之间插入轻量级的额外模块——适配器,通过仅微调这些适配器模块以适应特定的下游任务,同时冻结原模型的大部分参数。

在这里插入图片描述
在这里插入图片描述

1.Lora系列

原始的Lora

LoRA 表示通过低秩分解使用两个较小矩阵(称为更新矩阵)的权重更新 ∆W。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

X-LoRA

X-LoRA 将 LoRA 的低秩适配器与 MoE 的专家机制相结合,引入多个 LoRA 适配器作为专家,根据输入动态选择部分适配器进行参数调整。
在这里插入图片描述

输入数据
|
|— 第一次前向传播(基础模型) —> 隐藏状态
|
|— 计算缩放系数
|
|— 调整 LoRA 适配器
|
|— 第二次前向传播(基础模型 + LoRA 适配器) —> 最终输出

AdaLoRA

AdaLoRA 通过动态分配参数预算,针对任务中更为重要的权重矩阵分配更多参数(即更高的秩
𝑟),并修剪掉不太重要的权重矩阵。∆W 分为多个三元组,每个三元组根据其对模型性能的贡献进行评分。重要性分数低的三元组被修剪,而重要性分数高的三元组被保留以供微调。

首先,我们为重要性更低的模块分配更小的秩,那么将有效的减少模型的计算量。其次,如果我们能够为更重要的特征分配更大的秩,那么将能够更有效的捕捉特征的细节信息。

在这里插入图片描述

QLoRA

QLoRA的优化有三个核心要点:
首先是定义了一种4位标准浮点数(Normal Float 4-bit,NF4)量化,基于分块的分位数量化的量化策略;
其次是双重量化,包含对普通参数的一次量化和对量化常数的再一次量化,可以进一步减小缓存占用;
最后是分页优化器(Page Optimizer),用来在显存过高时用一部分内存代替显存。

在这里插入图片描述

LongLoRA

一般的transformer的attention计算复杂度为 O(n^2)为序列长度,使得llm长文本微调训练慢且资源消耗多。
主要贡献:稀疏局部注意力: 引入了一种称为“shift short attention”(S²-Attn)的机制,以减少计算复杂度并提高效率。
在这里插入图片描述
将输入序列分成多个短序列(例如,每个短序列长度为 m),然后对这些短序列分别进行注意力计算。通过将短序列的结果合并,从而近似全局注意力的效果

二、提示方法

提示分为硬提示和软提示。
硬提示是续写,直接加字符,类似于base模型。对提示敏感,难以找到合适的。
软提示是在输入端的嵌入层加入一段连续的向量。缺点是它们不是人类可读的。
在这里插入图片描述

Prefix-tuning 前缀优化

Prefix-tuning的核心在于将一个连续的可训练向量(前缀)添加到模型输入中。这些前缀向量不对应于实际的单词,而是自由参数,直接影响模型的内部状态。通过优化这些前缀,模型能够更好地适应不同的生成任务。
每一层都有。
在这里插入图片描述

Prompt tuning 提示调优

通过冻结整个预训练模型,只允许每个下游任务在输入文本前面添加k个可调的标记(Token)来优化模型参数,赋予语言模型能够执行特定的下游任务的能力。
通常只在输入层添加。
在这里插入图片描述

P-tuning P 调优

添加了一个可训练的嵌入张量,可以对其进行优化以找到更好的提示,并使用提示编码器(双向长短期记忆网络或 LSTM)来优化提示参数。
在这里插入图片描述
提示标记可以插入输入序列中的任何位置,并且不仅限于开头;
提示标记仅添加到 Input,而不是将它们添加到模型的每一层;
引入锚点标记可以提高性能,因为它们指示输入序列中组件的特征。


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

相关文章

国外电商系统开发-运维系统应用管理

还记得您常用的 service httpd start 、service sshd stop这样的命令吗?这些都是在停止启动服务,为了让研发人员,或者是快速操作服务,这里给大家制定了简单的应用管理。在这里,您可以把上面的命令加入进来,…

二叉树算法之B+ 树(B+ Tree)详细解读

B树(B Tree)是B树的一种变体,广泛应用于数据库系统和文件系统的索引结构。与B树相比,B树在结构上有一些改进,特别是在提高查询效率、范围查找性能和磁盘I/O效率等方面更具优势。 1. B树的定义与性质 B树与B树的主要区…

微信小程序中的文件查看方法

获得后缀名判断类型,如果是图片用ex.previewImage(),如果是视频,用uni.previewMedia(),如果是word文档这些的,用 uni.downloadFile来下载资源后用 uni.saveFile来保存到本地,uni.openDocument来打开新的网页,如果打不开的话则返回说到PC端去打开 const lookFile (url) > {l…

Gin框架操作指南03:HTML渲染

官方文档地址(中文):https://gin-gonic.com/zh-cn/docs/ 注:本教程采用工作区机制,所以一个项目下载了Gin框架,其余项目就无需重复下载,想了解的读者可阅读第一节:Gin操作指南&#…

pdf文件怎样一张纸打印四页

在日常工作和学习中,我们经常会遇到需要将PDF文件中的多页内容合并打印到一张纸上的情况,比如将四页内容打印到一张A4纸上,以节省纸张和成本。同时,在打开pdf文件的方式,一般都是通过电脑浏览器打印,因此对…

外部服务器如何访问专用网络的本地IP

在专用网络(如公司内网、专用局域网等)中的 IP 地址,也属于本地 IP 地址。这些地址仅在专用网络内部使用,不能直接从互联网访问。本地 IP 地址的范围通常包括以下几类私有地址段: 10.0.0.0 到 10.255.255.255172.16.0…

Unity中通过给定的顶点数组生成凸面体的方法参考

这里我们使用了Quickhull for Unity插件,其实就是一个ConvexHullCalculator.cs文件,代码如下: /*** Copyright 2019 Oskar Sigvardsson** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software…

SQL实现给表添加数据及其触发器操作

新建一个表实现添加数据,数据不重复,。判断两个字段是否存在,如果存在,就修改对应字段,如果不存在就新增数据。 测试表格Test如下: 新建触发器如图: 触发程式如下: USE [Test] GO/*…