分享
低算力大模型微调(例如 LoRA )进阶路线是什么?
输入“/”快速插入内容
低算力大模型微调(例如 LoRA )进阶路线是什么?
2024年8月23日修改
作者:西红柿牛腩
原文:
https://zhuanlan.zhihu.com/p/694907...
一、什么是微调?
大模型为什么需要微调?
核心原因还是在于需要 “赋予” 大模型更加定制化的功能,完成特定领域的NLP任务例如结合本地
知识库
进行检索、围绕特定领域问题进行问答等。
大模型的微调包括全参数微调和参数高效微调。
类型
原理
适用场景
资源消费
全部参数微调
Full fine-tuning
基于已经预训练的模型,使用针对特定任务的数据集进行全部调整
学习
垂直领域
知识和指令遵从能力。微调数据对达到w级以上
GPU
群分布式
训练,小时到数天级
高效参数微调
Parameter-Efficient Fine-Tuning,PEFT
指微调少量或额外的模型参数,固定大部分预训练模型参数,大幅度降低计算和存储成本
垂直领域业务数据量少,训练资源有限
小时级别(<24小时)
大模型全量微调(Fine-tuning)**通过在预训练的大型模型基础上调整所有层和参数,使其适应特定任务。这一过程使用较小的学习率和特定任务的数据进行,可以充分利用预训练模型的通用特征,但可能需要更多的计算资源。
PEFT(Parameter-Efficient Fine-Tuning )参数
高效微调
是指微调少量或额外的模型参数,固定大部分预训练模型(LLM)参数,从而大大降低了计算和存储成本,同时,也能实现与
全量参数微调
相当的性能。
二、PEFT微调都有哪些方法?
参数高效微调(PEFT)确实是在各种下游任务中适应各种语言模型的有效方法。作为这些技术的一部分,它有助于使
预训练模型
适应特定任务或领域,并最大限度地减少通常可能需要的额外参数和计算资源。
两种主要类型,根据附加可调模型或参数而有所不同,它们是:
根据最新的一篇综述,
系统回顾
、PEFT 算法的最新进展及其相关的系统实施成本可分为以下几部分:选取一部分参数更新(S)、增加额外参数(Additive fine-tuning )、引入
重参数化
(R),根据图1材料中显示的
示意图
,可以看到高效参数微调更新参数都是局部。
Additive fine-tuning
additeve fine-tuning
两种主要类型,根据附加可调模型或参数而有所不同,它们是:
a) 基于适配器的微调: 这种方法涉及在 Transformer 块内插入小型
适配器
层。由于在微调过程中,仅更新模型架构中
策略性定位
的极少量可训练参数,从而减少存储、内存和计算需求。
从数学上讲,附加适配器可以表示为
其中,Wdown 表示下投影矩阵,Wup 为
上投影矩阵
,σ 表示 。为此范例提出的一些值得注意的算法是:
b)基于
prompt
的微调:
Prompt tuning提供了一种通过微调来改进模型并提高性能的方法。在这种方法中,可调节的向量(称为soft prompt)被添加到输入序列的开头。
2) Selective PEFT :
该方法不是像附加 PEFT 那样添加更多参数,而是微调现有参数的子集,以增强下游任务的模型性能。
Reparameterized PEFT重新参数化的PEFT:
在高层次上,它的工作原理是通过
转换模型
的参数,将模型的架构从一种架构转换为另一种架构。而在低层次上,在 PEFT 的背景下,它涉及构建
低秩参数化
以实现训练期间参数效率的目标。在推理时,可以将模型转换为原始权重参数化,保证推理速度不变。