大模型 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(全量微调)
流程描述:
- Pre-training(预训练):使用海量数据集训练得到预训练大语言模型
- Fine-tuning(微调):使用特定领域数据集对预训练模型进行微调,得到微调后的大语言模型
- Inference(推理):用户向微调后的模型发送查询,模型返回响应
📝通俗解释:全量微调就像是把一个已经训练好的"通才"重新培养成某个领域的"专才"。所有的"大脑神经"(模型参数)都会被重新调整。
2.2 Parameter-Efficient Fine-Tuning(参数高效微调)
流程描述:
- Pre-training(预训练):同样使用海量数据集训练得到预训练大语言模型
- PEFT Process:
- 引入额外组件或使用预训练LLM的一部分
- 结合特定领域数据集
- 将上述组件与预训练模型结合,形成最终的推理模型
- Inference(推理):用户向模型发送查询,模型返回响应
📝通俗解释:参数高效微调就像给"通才"戴上一副"特制眼镜"(额外组件),不需要改变整个大脑,只需要添加或调整一点点东西,就能完成特定任务。这样学习(训练)起来更快、更省资源。
三、Full Fine Tuning 篇
3.1 介绍一下 Full Fine Tuning?
Full Fine Tuning(全量微调) 是指在较小的、特定于任务的标注数据集上进一步训练已经预训练的 LLM 的过程。在完全微调中,所有模型参数都会更新,使其与预训练类似,只是它是在带标签且更小的数据集上完成的。
📝通俗解释:想象一个大学生已经学完了所有基础课程(全量预训练),现在要去医院实习,需要把学到的医学知识应用到实际诊断中。全量微调就是在这个实习阶段,把大脑中所有的知识都根据实际经验进行调整。
3.2 介绍一下 Full Fine Tuning 优点?
- 比从头开始训练需要更少的数据:因为模型已经具备了基本的语言理解能力
- 提高准确性:针对特定任务进行优化,能获得更好的任务表现
- 增强稳健性:全量调整使模型更好地适应特定领域的数据分布
📝通俗解释:就像一个已经学会游泳的人,再学自由泳比一个不会游泳的人学游泳要容易得多,因为基础已经在那里了。
3.3 介绍一下 Full Fine Tuning 缺点?
- 计算成本高:需要大量的GPU计算资源
- 大量内存需求:需要存储整个模型的参数和梯度
- 时间和专业知识密集:训练时间长,需要专业的调参经验
📝通俗解释:这就像培养一个专科医生需要很长时间、很多学费和资深导师的指导一样。全量微调需要强大的"硬件"(GPU)和经验丰富的"导师"(算法工程师)。
四、Parameter-Efficient Fine-Tuning 篇
4.1 介绍一下 Parameter-Efficient Fine-Tuning?
参数高效微调(PEFT) 使用技术通过仅更新一小部分总参数来进一步调整预训练模型。PEFT 保留了预训练的知识,同时可以进行更快、更高效的训练。
📝通俗解释:PEFT就像给一个已经训练好的"通才"发一本"小册子"(少量可训练参数),让他根据这本小册子来回答特定问题。不需要重新训练整个大脑,只需要调整一点点东西,效率大大提高。
五、LoRA 篇
5.1 介绍一下 LoRA?
LoRA 是 Low-Rank Adaptation of Large Language Models 的缩写,是最常用的 PEFT 方法,使用重新参数化技术,通过执行低秩近似来缩小可训练参数集的大小。
📝通俗解释:LoRA的原理就像做数学降维。比如一个100x100的矩阵,信息可以用一个10x10的矩阵近似表示,这样需要学习的内容就少了很多,但核心信息都保留了。
5.2 介绍一下 LoRA 流程?
- 选择要调整的权重矩阵:确定模型中哪些层的权重需要调整
- 引入两个低秩矩阵:在原始权重矩阵旁边添加两个小的矩阵(A和B)
- 计算低秩更新:通过训练这两个小矩阵来学习变化
- 结合原始权重:将学到的变化加回到原始权重上
📝通俗解释:就像你有一本很厚的书(原始模型),你想让它记住一些新知识。你不需要重写整本书,而是添加几张便签纸(低秩矩阵),把你的"笔记"写在便签上,最后把便签夹进书里。
5.3 介绍一下 LoRA 优点?
- 任务切换效率高:可以快速切换不同的任务
- 需要更少的 GPU:显存需求大幅降低
- 高精度:在大多数任务上能达到接近全量微调的效果
📝通俗解释:LoRA就像一个"万能便签本",你可以在便签上快速写不同科目的笔记,需要哪科就抽出来对应的便签,非常方便,而且不占多少地方。
5.4 介绍一下 LoRA 缺点?
- 在多个任务的高精度微调,或者说足够复杂的任务下,表现可能不如全面微调
📝通俗解释:便签虽然方便,但有时候记的笔记太多太复杂,可能不如直接把书重写一遍记得牢靠。对于特别复杂的任务,全量微调效果更好。
六、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 流程?
- 将模型用 4-bit 加载:把预训练模型压缩成4位精度存储
- 在训练时把数值反量化到 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 流程?
- 预训练模型作为基础:加载已经训练好的预训练模型
- 插入适配器:在模型的每一层或指定层之间插入Adapter模块
- 保持预训练参数不变:冻结原始模型的权重
- 训练适配器:只训练新插入的Adapter参数
- 任务特定的调整:通过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 优点?
- 更好的适应性和灵活性:能够根据不同输入动态调整提示
- 改进的上下文理解:LSTM能捕捉序列中的上下文关系
- 参数共享和泛化能力:同一个编码器可以用于不同任务
📝通俗解释:P-Tuning就像有一个"智能军师",会根据你当前的问题现场想出最好的"开场白",而不是背固定的台词。
10.3 介绍一下 P-Tuning 缺点?
- 相对复杂:需要设计一个额外的 LSTM 模型来生成虚拟标记嵌入
- 约束了要优化的参数量:可训练的参数数量受限
- 模型层数越深,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 具有更出色的效能:
- 更深层的提示:在模型的多个层次添加可学习参数
- 更好的任务性能:在复杂任务上表现更优
- 更适用于小模型:即使参数少也能有良好效果
📝通俗解释: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面试宝典