一文彻底搞懂Fine-tuning - 预训练和微调(Pre-training vs Fine-tuning)

Parameter-Efficient Fine-Tuning

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

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

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

LoRA

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

Adapter Tuning

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

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

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

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

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

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

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

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

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

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值