LLaMA参数微调方法

1.Adapter Tuning:嵌入在transformer中

新增了一个名为adapter的结构,其核心思想是保持模型其他原始参数不变,只改变adapter的参数,其结构如下图所示:

1.在每一个transformer模块最后都加入一层adapter。

2.adapter首先使用一个feedforward将高维特征映射到了低维特征。

3.低维特征经过一层非线性层之后将低维特征映射回高维特征。

2.Prefix Tuning:构造虚拟token

1.在输入token之前构造一段任务相关的虚拟token作为Prefix。

2.在训练时可以只更新Prefix部分的参数,而transformer预训练的参数固定。

【注】该方法与构造Prompt类型,但是构造人为构造的显示提示并且构造参数不可更新,而Prefix是隐式构造。

3.Prompt Tuning

与Prefix Tuning相比之下,prompt tuning使用单个提示表示,该表示前置于嵌入式输入。除了需要更少的参数外,所提出方法允许transformer更新中间层任务表示,通过输入示例进行上下文化。

Prompt tuning只需要为每个任务存储一个小的特定于任务的提示,并使用原始的预训练模型支持混合任务推理。
P-Tuning V1只在输入层加入了Prompt,而P-Tuning V2则在每一层都加入了Prompt,解决了深度提示优化的问题。另外P-Tuning V2还提出了Multi-task learning解决不同规模和任务的适配性问题。

4.LoRA

LoRA的核心思想是用一种低秩的方式来调整这些参数矩阵,在数学上低秩意味着一个矩阵可以用两个极小的矩阵来近似。它提出用两个小矩阵近似一个大矩阵,先降维(减小计算量)后升维(维持维度不变)。具体来说是固定原始模型的参数,只训练降维矩阵A与升维矩阵B。最后用原始模型参数与B矩阵相加。

A矩阵一般用随机高斯分布初始化,维度上是降维;B矩阵用0矩阵初始化,维度上是升维。

参数更新 :W = W + A*B。

梯度更新 :在微调过程中,计算关于矩阵A和矩阵B的损失,在优化过程中对A和B进行更新,原始矩阵W保持不变。

代码具体操作:①将原始矩阵W参数冻结。②新引入两个线性层对应图中两个矩阵,先降维后升维。③LoRA主要实现了两分支通路,一条分支为已被冻结weight参数的原始结构,另一条分支为新引入的降维再升维线性层。

5.QLoRA:相比于LoRA进一步降低显存消耗

而QLoRa更进一步,引入了4位量化、双量化和利用nVidia统一内存进行分页。

分页优化器、双量化、增加Adapter。

相关推荐
Ai墨芯1119 小时前
深度学习水论文:特征提取
人工智能·深度学习
SHIPKING3939 小时前
【机器学习&深度学习】LLamaFactory微调效果与vllm部署效果不一致如何解决
人工智能·深度学习·机器学习
闻道且行之10 小时前
Windows|CUDA和cuDNN下载和安装,默认安装在C盘和不安装在C盘的两种方法
windows·深度学习·cuda·cudnn
生医转码,四海为家12 小时前
零基础-动手学深度学习-6.6 卷积神经网络(LeNet)
人工智能·深度学习·cnn
CoovallyAIHub12 小时前
避开算力坑!无人机桥梁检测场景下YOLO模型选型指南
深度学习·算法·计算机视觉
seasonsyy14 小时前
2.安装CUDA详细步骤(含安装截图)
python·深度学习·环境配置·cuda
淦暴尼15 小时前
银行客户流失预测分析
python·深度学习·算法
go546315846516 小时前
在本地环境中运行 ‘dom-distiller‘ GitHub 库的完整指南
人工智能·深度学习·神经网络·算法·矩阵·github
边缘常驻民16 小时前
PyTorch深度学习入门记录3
人工智能·pytorch·深度学习
a15046317 小时前
人工智能——图像梯度处理、边缘检测、绘制图像轮廓、凸包特征检测
人工智能·深度学习·计算机视觉