一文彻底搞懂大模型参数高效微调(PEFT)

PEFT(Parameter-Efficient Fine-Tuning)是一种在保持预训练模型大部分参数不变的情况下,通过仅调整少量额外参数来适应新任务的技术。这些额外参数可以是新添加的嵌入层、低秩矩阵或其他类型的参数,它们被用来“引导”或“调整”预训练模型的输出,以使其更适合新任务。

前排提示,文末有大模型AGI-CSDN独家资料包哦!
图片

Parameter-Efficient Fine-Tuning

PEFT的主要方法包括Prefix Tuning(在模型输入层添加可训练的前缀嵌入),LoRA(通过低秩矩阵近似模型参数更新),以及Adapter Tuning(在模型层间插入小型神经网络adapters)。

图片

Parameter-Efficient Fine-Tuning

  1. Prefix Tuning
  • Prefix Tuning通过在模型输入层之前添加可训练的前缀嵌入(prefix embeddings)来影响模型的输出。这些前缀嵌入与原始输入拼接后一起输入到模型中,而模型的其他部分保持不变。
  1. LoRA(Low-Rank Adaptation)
  • LoRA通过在原始模型权重矩阵附近添加一个低秩矩阵来近似模型参数的更新。这种方法通过优化这个低秩矩阵来实现微调,而不需要修改原始模型参数。
  1. Adapter Tuning
  • Adapter Tuning通过在模型的每个层之间插入小型神经网络(称为adapters)来实现微调。这些adapters包含可训练的权重,而模型的原始参数保持不变。

图片

Parameter-Efficient Fine-Tuning

一、Prefix Tuning(前缀微调)

什么是Prefix Tuning?Prefix Tuning在原始文本进行词嵌入之后,在前面拼接上一个前缀矩阵,或者将前缀矩阵拼在模型每一层的输入前。

这个前缀与输入序列一起作为注意力机制的输入,从而影响模型对输入序列的理解和表示。由于前缀是可学习的,它可以在微调过程中根据特定任务进行调整,使得模型能够更好地适应新的领域或任务。

图片

Prefix Tuning

Transformer进行Prefix Tuning?对Transformer进行Prefix Tuning以实现问答、文本分类等自然语言处理任务。

主要步骤包括在Transformer模型的输入层或各层输入前添加可学习的前缀嵌入,并通过训练这些前缀嵌入来优化模型在特定任务上的表现。

  1. 初始化前缀嵌入
  • 在Transformer模型的输入层之前,初始化一个固定长度的前缀嵌入矩阵。这个矩阵的维度通常是[前缀长度, 嵌入维度],其中嵌入维度与模型词嵌入的维度相同。前缀长度可以根据任务需求进行调整。
  1. 将前缀嵌入与输入序列拼接
  • 将初始化好的前缀嵌入与原始输入序列的词嵌入进行拼接,形成新的输入表示。这个新的输入表示将作为Transformer模型各层的输入。
  1. 训练模型
  • 在训练过程中,模型会根据输入序列(包括前缀嵌入)和标签数据进行学习。通过反向传播算法,模型会更新前缀嵌入的参数,以最小化在特定任务上的损失函数。由于只有前缀嵌入的参数被更新,预训练模型的其他参数保持不变,因此这种方法具有很高的参数效率。
  1. 微调与优化
  • 根据训练过程中的表现,可以对前缀嵌入的初始化方式、长度、学习率等参数进行微调,以进一步优化模型在特定任务上的性能。
  1. 训练模型应用于问答、文本分类等任务
  • 训练完成后,将模型应用于问答、文本分类等自然语言处理任务。在推理阶段,只需要将任务相关的输入序列与训练好的前缀嵌入进行拼接,然后输入到模型中即可得到预测结果。

图片

Prefix Tuning

二、LoRA(低秩适应微调)

什么是LoRA?LoRA(Low-Rank Adaptation)基于预训练模型具有较低的“内在维度”(intrinsic dimension)的假设,即模型在任务适配过程中权重的改变量可以是低秩的。

LoRA通过在预训练模型中引入一个额外的线性层(由低秩矩阵A和B组成),并使用特定任务的训练数据来微调这个线性层,从而实现对模型的高效微调。

图片

LoRA

什么是低秩矩阵?低秩矩阵的秩(即矩阵中最大的线性无关行或列向量的个数)远小于矩阵的行数或列数。

图片

LoRA将预训练模型的权重矩阵的增量(即微调前后的权重差异)分解为一个低秩矩阵A和一个原始矩阵B的乘积,即ΔW = AB。在微调过程中,仅训练低秩矩阵A的参数,而保持原始矩阵B和预训练模型的其他部分不变。

图片

LoRA参数主要包括秩(lora_rank,影响性能和训练时间)、缩放系数(lora_alpha,确保训练稳定)、Dropout系数(lora_dropout,防止过拟合)和学习率(learning_rate,控制权重更新步长),它们共同影响模型微调的效果和效率。

1. 秩(Rank)
  • 参数名称:lora_rank

  • 描述:秩是LoRA中最重要的参数之一,它决定了低秩矩阵的维度。秩的大小直接影响模型的性能和训练时间。

  • 常用值:对于小型数据集或简单任务,秩可以设置为1或2;对于更复杂的任务,秩可能需要设置为4、8或更高。

2. 缩放系数(Alpha)
  • 参数名称:lora_alpha

  • 描述:缩放系数用于在训练开始时对低秩矩阵的更新进行缩放,以确保训练过程的稳定性。

  • 常用值:缩放系数的具体值取决于秩的大小和任务的复杂度。

3. Dropout系数
  • 参数名称:lora_dropout

  • 描述:Dropout是一种正则化技术,用于防止模型过拟合。在LoRA Fine-tuning中,Dropout系数决定了在训练过程中随机丢弃低秩矩阵中元素的概率。

  • 常用值:Dropout系数的常用值范围在0到1之间,具体值取决于模型的复杂度和数据的规模。

4. 学习率(Learning Rate)
  • 参数名称:learning_rate

  • 描述:学习率决定了模型在训练过程中权重更新的步长。适当的学习率可以帮助模型在训练过程中更快地收敛到最优解。

  • 常用值:学习率的具体值取决于多个因素,包括模型的复杂度、数据的规模以及训练过程中的其他超参数设置。

图片

LoRA

三、Adapter Tuning(适配器微调)

什么是Adapter Tuning?Adapter Tuning能够在保持模型参数数量相对较小的情况下,通过增加少量可训练参数(即适配器)来提高模型在特定任务上的表现。

Adapter Tuning的核心思想是在预训练模型的中间层中插入小的可训练层或“适配器”。这些适配器通常包括一些全连接层、非线性激活函数等,它们被设计用来捕获特定任务的知识,而不需要对整个预训练模型进行大规模的微调。

图片

Adapter Tuning如何实现?Adapter Tuning在预训练模型中插入设计的适配器模块,仅训练这些模块参数以微调模型,同时保持预训练模型参数不变,并在特定任务数据集上评估性能。

图片

  1. 准备环境:安装并配置好深度学习框架(如 PyTorch 或 TensorFlow)和相关的库,这些框架和库将用于模型的训练、评估和部署。

  2. 定义 Adapter 模块:根据任务的具体需求,设计适配器的结构。适配器通常包括输入层、输出层、可能的下投影和上投影前馈层(用于调整特征的维度),以及非线性激活函数等。这些组件共同构成了能够学习特定任务知识的轻量级模块。

  3. 在预训练模型中插入 Adapter:将设计好的适配器模块插入到预训练模型的特定位置,通常是 Transformer 架构中的某些层之间,比如两个全连接层(也称为前馈网络或FFN)之间。这样做可以使得适配器能够捕获并转换经过该层的特征表示,从而适应新的任务。

  4. 准备数据集:收集并处理用于微调的数据集,包括训练集、验证集和测试集。这些数据集应该能够反映目标任务的特性,以便模型能够从中学习到有效的表示和决策规则。

  5. 定义模型:将预训练模型与插入的适配器模块相结合,定义出完整的模型结构。在这个过程中,需要确保模型能够正确地处理输入数据,并通过适配器模块进行特征的转换和提取。

  6. 训练模型:在特定任务的数据集上训练模型。在训练过程中,只调整适配器模块的参数,而保持预训练模型的主要参数不变。这样做可以保持预训练模型在通用任务上的性能,同时使模型能够快速适应新的特定任务。

  7. 评估模型:在测试集上评估模型的性能。通过比较模型在测试集上的预测结果与实际标签之间的差异,可以评估模型在特定任务上的准确性和泛化能力。根据评估结果,可以对模型进行进一步的调整和优化。

如何学习AI大模型 ?

“最先掌握AI的人,将会晚掌握AI的人有竞争优势,晚掌握AI的人比完全不会AI的人竞争优势更大”。 在这个技术日新月异的时代,不会新技能或者说落后就要挨打。

老蓝我作为一名在一线互联网企业(保密不方便透露)工作十余年,指导过不少同行后辈。帮助很多人得到了学习和成长。

我是非常希望可以把知识和技术分享给大家,但苦于传播途径有限,很多互联网行业的朋友无法获得正确的籽料得到学习的提升,所以也是整理了一份AI大模型籽料包括:AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、落地项目实战等 免费分享出来。

👉点击即可获取大模型学习包2024年最新版👈

  1. AI大模型学习路线图
  2. 100套AI大模型商业化落地方案
  3. 100集大模型视频教程
  4. 200本大模型PDF书籍
  5. LLM面试题合集
  6. AI产品经理资源合集

大模型学习路线

想要学习一门新技术,你最先应该开始看的就是学习路线图,而下方这张超详细的学习路线图,按照这个路线进行学习,学完成为一名大模型算法工程师,拿个20k、15薪那是轻轻松松!

视频教程

首先是建议零基础的小伙伴通过视频教程来学习,其中这里给大家分享一份与上面成长路线&学习计划相对应的视频教程。文末有整合包的领取方式

技术书籍籽料

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,这里也分享一份我学习期间整理的大模型入门书籍籽料。文末有整合包的领取方式

大模型实际应用报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。文末有整合包的领取方式

大模型落地应用案例PPT

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。文末有整合包的领取方式

大模型面试题&答案

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。文末有整合包的领取方式

领取方式

这份完整版的 AI大模型学习籽料我已经上传CSDN,需要的同学可以微⭐扫描下方CSDN官方认证二维码免费领取

### 如何将微调后的模型保存并下载到本地 为了实现将经过微调的机器学习或深度学习模型保存至本地设备,可以采用多种方法和技术栈。以下是具体的技术细节: #### 使用 Hugging Face 的 PEFT 工具包 Hugging Face 提供了一个名为 `PEFT`(Parameter-Efficient Fine-Tuning)的工具包[^2],它支持高效参数调整技术,允许用户轻松加载、训练以及导出微调后的模型。通过该库中的功能模块,可以直接将模型保存为本地文件。 保存模型的核心代码如下所示: ```python from peft import PeftModel, PeftConfig # 假设 model 是已经完成微调的 PyTorch 模型实例 model.save_pretrained("./local_model_directory") # 将模型权重存储在指定目录下 ``` 上述脚本会把模型及其配置文件存入指定路径 `"./local_model_directory"` 中。这些文件通常包括但不限于以下几类:PyTorch 权重 `.bin`, 配置 JSON 文件等。 #### 设备端模型的独特优势 对于完全运行于终端上的模型而言,在不依赖云端的情况下即可完成数据处理与模型优化过程[^1]。这意味着当您希望保护隐私或者减少延迟时,这种方法尤为适用。一旦完成了个性化适配之后,就可以直接将其序列化成二进制形式以便后续部署应用。 另外值得注意的是,《Machine Learning for Computer Systems and Networking:A Survey》一文中提到关于计算机系统及网络领域内的机器学习分类体系结构介绍[^3],虽然此部分并未涉及具体的模型保存操作指南,但它为我们理解不同场景下的ML解决方案提供了理论基础框架指导意义非凡。 #### 总结 无论是借助像HuggingFace这样的开源平台所提供的高级API接口还是遵循传统方式手动编写逻辑来达成目标——即将精调完毕后的AI算法实体转移到个人电脑硬盘上都是可行且被广泛实践验证有效的途径之一;同时也要考虑到实际应用场景需求差异从而选取最合适的策略组合运用其中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值