Skip to content

大模型 SFT 方式对比篇

来自:AiGC面试宝典

Just do it! 2024年05月19日 21:34


目录

  • 一、SFT 微调方案如何选择?
  • 二、Full Fine Tuning vs Parameter-Efficient Fine-Tuning
  • 三、Full Fine Tuning 篇
  • 四、Parameter-Efficient Fine-Tuning 篇
  • 五、LoRA 篇
  • 六、QLoRA 篇
  • 七、Adapter Tuning 篇
  • 八、Prefix Tuning 篇
  • 九、Prompt Tuning 篇
  • 十、P-Tuning 篇
  • 十一、P-Tuning V2 篇

一、SFT 微调方案如何选择?

  • SFT 微调方案选择的影响因素:
    • 任务复杂性
    • 可用的数据量
    • 计算资源
    • 期望的性能
    • 泛化能力(是否过拟合)

📝通俗解释:选择微调方案就像选择学习方法。如果任务简单就像做选择题,可以用一个简单的方法;如果任务复杂就像做问答题,需要更精细的方法。同时也要考虑你的"学费"(计算资源)和"学习资料"(数据量)够不够。


二、Full Fine Tuning vs Parameter-Efficient Fine-Tuning

2.1 Full Fine Tuning(全量微调)

流程描述:

  1. Pre-training(预训练):使用海量数据集训练得到预训练大语言模型
  2. Fine-tuning(微调):使用特定领域数据集对预训练模型进行微调,得到微调后的大语言模型
  3. Inference(推理):用户向微调后的模型发送查询,模型返回响应

📝通俗解释:全量微调就像是把一个已经训练好的"通才"重新培养成某个领域的"专才"。所有的"大脑神经"(模型参数)都会被重新调整。

2.2 Parameter-Efficient Fine-Tuning(参数高效微调)

流程描述:

  1. Pre-training(预训练):同样使用海量数据集训练得到预训练大语言模型
  2. PEFT Process
    • 引入额外组件或使用预训练LLM的一部分
    • 结合特定领域数据集
    • 将上述组件与预训练模型结合,形成最终的推理模型
  3. Inference(推理):用户向模型发送查询,模型返回响应

📝通俗解释:参数高效微调就像给"通才"戴上一副"特制眼镜"(额外组件),不需要改变整个大脑,只需要添加或调整一点点东西,就能完成特定任务。这样学习(训练)起来更快、更省资源。


三、Full Fine Tuning 篇

3.1 介绍一下 Full Fine Tuning?

Full Fine Tuning(全量微调) 是指在较小的、特定于任务的标注数据集上进一步训练已经预训练的 LLM 的过程。在完全微调中,所有模型参数都会更新,使其与预训练类似,只是它是在带标签且更小的数据集上完成的。

📝通俗解释:想象一个大学生已经学完了所有基础课程(全量预训练),现在要去医院实习,需要把学到的医学知识应用到实际诊断中。全量微调就是在这个实习阶段,把大脑中所有的知识都根据实际经验进行调整。

3.2 介绍一下 Full Fine Tuning 优点?

  1. 比从头开始训练需要更少的数据:因为模型已经具备了基本的语言理解能力
  2. 提高准确性:针对特定任务进行优化,能获得更好的任务表现
  3. 增强稳健性:全量调整使模型更好地适应特定领域的数据分布

📝通俗解释:就像一个已经学会游泳的人,再学自由泳比一个不会游泳的人学游泳要容易得多,因为基础已经在那里了。

3.3 介绍一下 Full Fine Tuning 缺点?

  1. 计算成本高:需要大量的GPU计算资源
  2. 大量内存需求:需要存储整个模型的参数和梯度
  3. 时间和专业知识密集:训练时间长,需要专业的调参经验

📝通俗解释:这就像培养一个专科医生需要很长时间、很多学费和资深导师的指导一样。全量微调需要强大的"硬件"(GPU)和经验丰富的"导师"(算法工程师)。


四、Parameter-Efficient Fine-Tuning 篇

4.1 介绍一下 Parameter-Efficient Fine-Tuning?

参数高效微调(PEFT) 使用技术通过仅更新一小部分总参数来进一步调整预训练模型。PEFT 保留了预训练的知识,同时可以进行更快、更高效的训练。

📝通俗解释:PEFT就像给一个已经训练好的"通才"发一本"小册子"(少量可训练参数),让他根据这本小册子来回答特定问题。不需要重新训练整个大脑,只需要调整一点点东西,效率大大提高。


五、LoRA 篇

5.1 介绍一下 LoRA?

LoRALow-Rank Adaptation of Large Language Models 的缩写,是最常用的 PEFT 方法,使用重新参数化技术,通过执行低秩近似来缩小可训练参数集的大小。

📝通俗解释:LoRA的原理就像做数学降维。比如一个100x100的矩阵,信息可以用一个10x10的矩阵近似表示,这样需要学习的内容就少了很多,但核心信息都保留了。

5.2 介绍一下 LoRA 流程?

  1. 选择要调整的权重矩阵:确定模型中哪些层的权重需要调整
  2. 引入两个低秩矩阵:在原始权重矩阵旁边添加两个小的矩阵(A和B)
  3. 计算低秩更新:通过训练这两个小矩阵来学习变化
  4. 结合原始权重:将学到的变化加回到原始权重上

📝通俗解释:就像你有一本很厚的书(原始模型),你想让它记住一些新知识。你不需要重写整本书,而是添加几张便签纸(低秩矩阵),把你的"笔记"写在便签上,最后把便签夹进书里。

5.3 介绍一下 LoRA 优点?

  1. 任务切换效率高:可以快速切换不同的任务
  2. 需要更少的 GPU:显存需求大幅降低
  3. 高精度:在大多数任务上能达到接近全量微调的效果

📝通俗解释:LoRA就像一个"万能便签本",你可以在便签上快速写不同科目的笔记,需要哪科就抽出来对应的便签,非常方便,而且不占多少地方。

5.4 介绍一下 LoRA 缺点?

  1. 在多个任务的高精度微调,或者说足够复杂的任务下,表现可能不如全面微调

📝通俗解释:便签虽然方便,但有时候记的笔记太多太复杂,可能不如直接把书重写一遍记得牢靠。对于特别复杂的任务,全量微调效果更好。


六、QLoRA 篇

6.1 介绍一下 QLoRA?

QLoRA(Quantized Low-Rank Adaptation)是一种高效的模型微调方法,在 LoRA 的基础上引入了深度量化的过程。

QLoRA 使用一种新颖的高精度技术将预训练模型量化为 4-bit。这种技术包括:

  • 一种低精度存储数据类型(4-bit NormalFloat,简写为 NF4)
  • 一种计算数据类型(16-bit BrainFloat)

这样做可以在保持整个模型精度损失极小的同时显著减少存储需求。

📝通俗解释:QLoRA就像把一本精装书(32位精度的模型)压缩成一本漫画书(4位精度)。漫画书页数少很多,但关键情节和人物都还在。读漫画的时候再把它"翻译"回原来的内容,这样既省地方又能学到东西。

6.2 介绍一下 QLoRA 流程?

  1. 将模型用 4-bit 加载:把预训练模型压缩成4位精度存储
  2. 在训练时把数值反量化到 bf16 后进行训练:使用时再还原成高精度进行计算

量化过程说明:

  • 4-bit 量化意味着每个权重仅由 4 个比特表示(16个可能的值)
  • 首先确定量化的范围,比如从 -1 到 1
  • 将这个范围划分为 16 个区间,每个区间对应一个 4-bit 的值
  • 将原始的 32 位浮点数值映射到最近的量化区间上

📝通俗解释:就像把一本1000页的书压缩成每页只有16个字的"极简版"。虽然信息损失了一些,但核心内容还在,而且携带和修改都超级方便。


七、Adapter Tuning 篇

7.1 介绍一下 Adapter Tuning?

Adapter Tuning 在模型的每个层或者某些特定层之间插入小的神经网络模块,称为"adapter"。这些 adapter 是可以训练的,而原始模型的参数则保持不变。

📝通俗解释:就像在大脑的每个神经元之间安装一个"小开关"(Adapter)。这些开关很小,但可以独立学习如何处理特定任务,而不需要改变大脑本身。

7.2 介绍一下 Adapter Tuning 流程?

  1. 预训练模型作为基础:加载已经训练好的预训练模型
  2. 插入适配器:在模型的每一层或指定层之间插入Adapter模块
  3. 保持预训练参数不变:冻结原始模型的权重
  4. 训练适配器:只训练新插入的Adapter参数
  5. 任务特定的调整:通过Adapter来适应不同的下游任务

📝通俗解释:这个过程就像给一台已经组装好的电脑添加"功能插件"。不需要换掉整个电脑(模型),只需要在特定位置插入插件,就能让电脑完成新的功能。


八、Prefix Tuning 篇

8.1 介绍一下 Prefix Tuning?

Prefix Tuning 是在输入序列前面添加可学习的前缀向量,这些前缀作为模型内部表示的一部分,可以影响整个模型的行为,提供输入数据的直接上下文信息。

📝通俗解释:Prefix Tuning就像在问问题之前先说一段"开场白"或"背景提示"。这段开场白是模型自己学习的,不需要人为写出来,但它能帮助模型更好地理解你接下来要问什么。

8.2 介绍一下 Prefix Tuning 训练示例?

输入序列:[Prefix1][Prefix2][Prefix3] 我想看一部电影。

问题:根据前缀生成后续的自然语言文本

答案:模型生成的文本,如"那真令人兴奋!"

提示:前缀本身提供上下文信息,没有单独的外部提示

📝通俗解释:就像你对服务员说"[神秘的悄悄话]我想看一部电影",服务员根据你刚才说的悄悄话(Prefix),就能猜出你可能想看动作片、爱情片还是恐怖片。那个"悄悄话"就是Prefix。


九、Prompt Tuning 篇

9.1 介绍一下 Prompt Tuning?

Prompt Tuning 使用可学习向量(通常称为 prompt tokens)来模仿自然语言提示的形式。这些向量被设计为引导模型针对特定任务生成特定类型的输出,通常被看作是任务指导信息的一部分,用更少量的向量模仿传统的自然语言提示。

📝通俗解释:Prompt Tuning不像Prefix Tuning那样在输入前面加"悄悄话",而是用一些"隐形的魔法词汇"来引导模型。这些词汇是模型自己学出来的,人类看不懂,但模型知道它们代表什么意思。

9.2 介绍一下 Prompt Tuning 优点?

  • 在处理多种任务时表现良好,具有良好的任务通用性

📝通俗解释:就像一个"万能魔法咒语本",学会这几条咒语就可以应对各种不同的情况,非常方便。

9.3 介绍一下 Prompt Tuning 缺点?

  • 在处理特别复杂或需要细粒度控制的任务时可能受限

📝通俗解释:简单的咒语能解决简单问题,但遇到复杂的数学证明或精细的创作要求时,可能就不够用了。

9.4 介绍一下 Prompt Tuning 训练示例?

输入序列:[Prompt1][Prompt2] 这部电影令人振奋。

问题:评价这部电影的情感倾向

答案:模型需要预测情感倾向(例如"积极")

提示:无明确的外部提示,[Prompt1][Prompt2] 充当引导模型的内部提示

📝通俗解释:就像你给模型看了两个"魔法符号",它就知道要把这段影评分类为"正面情绪",但你完全不知道这两个符号是什么意思。


十、P-Tuning 篇

10.1 介绍一下 P-Tuning?

P-Tuning 使用一个可训练的 LSTM 模型(称为 prompt_encoder)来动态生成虚拟标记嵌入,允许根据输入数据的不同生成不同的嵌入。连续提示被插入到输入序列的 embedding 层,只作用于第一层。

📝通俗解释:P-Tuning不像Prompt Tuning那样用固定不变的"魔法符号",而是让模型自己学一个"魔法生成器"(LSTM网络)。这个生成器可以根据不同的输入,动态生成不同的提示,让模型更好地理解当前的任务。

10.2 介绍一下 P-Tuning 优点?

  1. 更好的适应性和灵活性:能够根据不同输入动态调整提示
  2. 改进的上下文理解:LSTM能捕捉序列中的上下文关系
  3. 参数共享和泛化能力:同一个编码器可以用于不同任务

📝通俗解释:P-Tuning就像有一个"智能军师",会根据你当前的问题现场想出最好的"开场白",而不是背固定的台词。

10.3 介绍一下 P-Tuning 缺点?

  1. 相对复杂:需要设计一个额外的 LSTM 模型来生成虚拟标记嵌入
  2. 约束了要优化的参数量:可训练的参数数量受限
  3. 模型层数越深,tuning 的稳定性难以保证:深层模型的训练可能不稳定

📝通俗解释:虽然"智能军师"很聪明,但培养这个军师需要更多精力,而且如果模型层数太多,军师的意见可能传达不稳定。


十一、P-Tuning V2 篇

11.1 介绍一下 P-Tuning V2?

P-Tuning V2 在 P-Tuning 的基础上进行了改进,将只在第一层插入连续提示修改为在许多层都插入连续提示,而不仅仅是输入层。

📝通俗解释:P-Tuning V2就像不仅在对话开始时有"开场白",而且在对话的每个环节都有"小贴士"。这样模型在处理信息的每一层都能得到提示,理解更全面。

11.2 介绍一下 P-Tuning V2 优点?

应对复杂的 NLU 任务和小型模型方面,相比 P-Tuning 具有更出色的效能:

  1. 更深层的提示:在模型的多个层次添加可学习参数
  2. 更好的任务性能:在复杂任务上表现更优
  3. 更适用于小模型:即使参数少也能有良好效果

📝通俗解释:P-Tuning V2就像给模型的每个"思考层级"都配备了"顾问团",从表层理解到深层分析都有指导,所以对复杂问题的处理能力更强,即使是"小型大脑"也能表现得很好。


总结对比表

方法可训练参数量适用场景优点缺点
Full Fine Tuning全部任务复杂、数据充足效果最好资源消耗大
LoRA约1-4%资源有限、多任务高效、任务切换快复杂任务效果略差
QLoRA约1-4%超大规模模型显存需求极低量化可能损失精度
Adapter约1-5%多任务并行训练稳定推理有额外开销
Prefix Tuning极小简单任务简单快速复杂任务受限
Prompt Tuning极小多任务通用性好复杂任务受限
P-Tuning中等复杂度动态生成提示深层不稳定
P-Tuning V2中等复杂NLU任务深层提示、效果好训练稍复杂

来源:知识星球 - AiGC面试宝典

https://articles.zsxq.com/id_e2piver2uzei.html

基于 MIT 许可发布