大模型微调
简介
按微调目标划分
指令微调(Instruction Tuning)
从模型微调的目标进行划分,可分为提示微调、有监督微调、指令微调等。指令微调可以看作有监督微调(SFT)的一种特殊形式。
指令微调的训练目标是提升模型遵循指令的能力。
数据集格式
一般采用”指令-输入-输出”的格式,常见的数据结构如下:
{
“instruction”: “请用简洁的语言解释机器学习的基本概念。”,
“input”: “”,
“output”: “机器学习是一种计算方法,它通过从数据中学习模式,而不是基于规则进行编程。”
}
数据集
泛化到未见任务
在单轮中遵循用户指令
像人类一样提供帮助
不同领域指令微调数据集
大模型在不同领域具有其独特性要求和挑战,比如对话领域需要理解长序列寓意关系,并生成连贯的回复;信息抽取领域需要处理不同规范的信息抽取。针对不同领域的特点需要构建合适的指令微调数据集。
按微调的参数规模划分
可划分为全参数微调和参数高效的微调方式。
参数高效微调 (PEFT)
参数高效微调方法致力于在保持模型性能的同时,显著减少需要训练的参数数量。这类方法特别适合计算资源有限的场景。
Adapter Tuning
LoRA
背景:常规的Adapter参数微调方法,增加了额外的训练参数,且改变了模型结构,导致训练时的内存占用增大,推理时长增加。
关键假设:针对下游任务微调得到的增量参数矩阵是低秩的。
LoRA方法:使用低秩分解近微调的增量参数矩阵。
$$W_0 + \Delta W = W_0 + BA$$
$W_0$ 为预训练模型参数,$\Delta W$ 为微调参数,使用矩阵的低秩分解 $B$ 和 $A$ 的乘积近似微调参数矩阵,模型微调训练时,更新的参数为 $A$、$B$ 矩阵,在执行推理时,将 $BA$ 与 $W_0$ 进行合并。
LoRA微调的优点
- 一个中心模型可以有多个下游任务
- 适配器权重可以与基本模型参数矩阵合并,因此不增加额外的推理计算量,不增加推理延迟。额外增加的计算量只有参数合并的计算量。
- 与其他PEFT方法正交,可以多种微调方法组合
- 可插拔
LoRA微调的模型参数选取
注意力参数、FFN参数。
LoRA参数初始化
LoRA参数初始化如何实现和全参数微调一样从预训练权重$W_0$开始?矩阵A初始化为全零矩阵,矩阵B通过高斯核函数进行初始化。不能初始化两个全零矩阵,否则两个权重矩阵的梯度全为0,处于鞍点不能更新参数。
LoRA的秩如何选择
秩r作为模型训练的超参,理想期望低秩近似结构$BA$与$\delta W$的表达能力越接近越好。
一些经验:(1)下游任务越复杂,所需的r越高;(2)基座模型能力越强,所需的r越小;(3)数据规模越大,所需的r越高。
LoRA微调相比全参数微调降低了显存占用
预训练权重$W_0$在LoRA微调中只参与前向计算,但不进行梯度计算和参数更,显存不需要存储$W_0$的梯度和优化器状态。B、A矩阵的秩远低于$W_0$的秩,B、A的权重参数、梯度及优化器状态所占的存储开销远小于$W_0$的梯度和优化器状态的存储开销。
Lora优化
微调学习过程
- 初始化优化
- 梯度更新优化
- 避免过拟合
- 组和其他学习范式
提升跨任务泛化能力
基于描述,即时适配
Text-to-Lora
LoRA相关进展
LongLora:解决长上下文LLM有效微调的问题。
QLora:可以在单张48GB GPU上微调65B的LLM。
LoRI:
Prefix Tuning
受prompts技术的启发,P-Tuning采用微调Embedding的方式,在模型输入前添加一个任务特定的向量序列即prefix,微调时冻结基础模型参数,只优化prefix参数。
P-Tuning由于引入了可学习的prefix embedding,prefix embedding也可由encoder动态生成,这部分计算会略微增加推理耗时。
LST
LST(Ladder Side-Tuning,阶梯式侧向微调)是一种参数高效微调(PEFT)方法。其核心思想是在预训练模型的不同层插入侧向分支(side network),通过这些分支以”阶梯式”方式引入任务特定的适配参数。
基本原理:
- 在主模型的多个层级插入轻量级的侧向网络(如Adapter),这些侧分支以”阶梯”结构连接。
- 训练时仅更新侧向分支参数,主模型参数保持冻结。
- 推理时主模型和侧向分支共同参与输出,提升模型对新任务的适应能力。
优势:
- 显著减少需训练参数,节省显存和计算资源。
- 支持多任务/多领域适配,灵活性高。
- 可与LoRA等其他PEFT方法结合使用。
适用场景:
- 资源受限环境下的大模型微调
- 多任务学习和跨领域迁移
- 需要高效参数隔离的场景
小结
示例
微调大语言模型
基座模型
a.基座模型,不太依赖数据格式,理论上效果应该更好
b.chat模型,sft需要遵循指令的格式
垂类语料微调
a.epoch不要超过1轮,避免灾难性遗忘
b.最好加通用语料,通用语料、垂直语料的配比要注意,最好在mini-batch层面都能有通用语料
继续预训练
a.知识是在预训练阶段记忆的
b.默认语料的储备是非常充足的
基座模型特点
LLama
a.本身sql的能力比较强
b.中文字符太少
参考
alpaca-lora
Ladder Side-Tuning
Awesome-LoRAs
PEFT技术简介
ToolAlpha
Text-to-Lora
ManyICL
Ladder-Side-Tuning
QLora
LoRI: Reducing Cross-Task Interference in Multi-Task Low-Rank Adaptation