大模型微调

简介

按微调目标划分

指令微调(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微调的优点

  1. 一个中心模型可以有多个下游任务
  2. 适配器权重可以与基本模型参数矩阵合并,因此不增加额外的推理计算量,不增加推理延迟。额外增加的计算量只有参数合并的计算量。
  3. 与其他PEFT方法正交,可以多种微调方法组合
  4. 可插拔

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优化

微调学习过程

  1. 初始化优化
  2. 梯度更新优化
  3. 避免过拟合
  4. 组和其他学习范式

提升跨任务泛化能力

基于描述,即时适配
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

开源模型

LLaVA: An open-source alternative to GPT-4V


大模型微调
https://summerchengh.github.io/tech-blog/2025/03/24/大模型-微调方法/
Author
Your Name
Posted on
March 24, 2025
Licensed under