什么是参数高效微调

参数高效微调(Parameter-Efficient Fine-Tuning, PEFT )是一种针对预训练模型(尤其是大语言模型)进行微调的策略,旨在以较低的计算和存储成本适配模型到特定任务或数据集,同时保持模型的泛化能力。PEFT 的核心思想是避免对模型的全部参数进行更新,而是仅调整一小部分参数或引入少量额外参数,从而在资源受限的环境下实现高效微调。

以下是对 PEFT 的详细描述及其常见方法的列举与解释:


1. 什么是参数高效微调(PEFT)?

在传统的全参数微调 (Full Fine-Tuning)中,模型的所有参数都会被更新,这需要大量的计算资源(GPU/TPU 内存)和存储空间(保存完整的模型副本)。对于参数量达到数十亿甚至千亿的大型模型(如 GPT-3、LLaMA 等),全参数微调的成本往往是不可承受的。此外,全参数微调可能导致过拟合,尤其是在目标数据集较小的情况下。

PEFT 通过以下方式解决这些问题:

  • 减少参数更新:只更新模型的一小部分参数或添加少量可训练参数,而冻结大部分预训练参数。
  • 降低存储需求:仅保存更新参数或额外参数的权重,而不是整个模型。
  • 保持性能:通过精心设计的方法,PEFT 能够在性能上接近甚至媲美全参数微调。
  • 适应多样化任务:PEFT 方法通常是模块化的,易于在不同任务间迁移。

PEFT 的应用场景包括:

  • 在边缘设备上部署模型。
  • 快速适配模型到特定领域或任务。
  • 在低资源环境中进行模型训练。

2. 常见的 PEFT 方法

以下是几种主流的 PEFT 方法,每种方法都有其独特的设计理念和适用场景:

(1) Adapter-based Methods(适配器方法)

  • 描述:Adapter 方法在预训练模型的每一层中插入小型的神经网络模块(称为适配器),这些模块是可训练的,而原始模型参数保持冻结。适配器通常是轻量级的全连接层,参数量远小于原始模型。
  • 工作原理:
    在 Transformer 模型中,适配器通常插入到注意力模块或前馈网络(FFN)之后。
    适配器包含一个降维层(down-projection)、一个非线性激活函数(如 ReLU)和一个升维层(up-projection),形成瓶颈结构(bottleneck)。
    训练时只更新适配器的参数,原始 Transformer 参数保持不变。
  • 优点:
    参数效率高:适配器参数量通常只占模型总参数的 0.5%-10%。
    模块化设计:适配器可以针对不同任务独立训练和存储,易于切换。
    性能接近全参数微调。
  • 缺点:
    推理时会增加少量延迟,因为适配器引入了额外的计算。
  • 代表工作:
    AdapterHub:一个开源框架,支持在 Transformer 模型中插入适配器。
    Pfeiffer Adapter:一种经典的适配器设计,插入在 Transformer 的 FFN 之后。
    Houlsby Adapter:在每一层插入两个适配器(一个在注意力后,一个在 FFN 后)。
  • 应用场景:多任务学习、跨语言迁移学习。

(2) LoRA(Low-Rank Adaptation)

  • 描述:LoRA(低秩适配)通过在预训练模型的权重矩阵上添加低秩分解(low-rank decomposition)的更新矩阵来实现微调,只训练这些低秩矩阵的参数。
  • 工作原理:
    对于一个权重矩阵 W∈Rd×k,LoRA 假设权重更新可以表示为低秩形式:ΔW = A ⋅ B,其中 A∈ Rd×r,B∈Rr×k,r ≪ min⁡(d,k)。
    训练时冻结原始权重 W ,只更新 A 和 B 。
    在推理时,可以将 ΔW 合并到 W 中,无需额外计算开销。
  • 优点:
    高效:参数量极少(通常 rrr 很小,新增参数占总参数的 0.01%-1%)。
    推理无额外延迟:低秩更新可以合并到原始权重。
    易于迁移:LoRA 权重可以保存为小文件,方便在不同任务间切换。
  • 缺点:
    需要为每个任务训练独立的 LoRA 模块。
    对于某些复杂任务,可能需要较大的秩(rrr)才能达到理想性能。
  • 代表工作:
    LoRA(Hu et al., 2021):最早提出低秩适配的论文。
    QLoRA:结合量化和 LoRA,进一步降低微调的内存需求。
  • 应用场景:大模型的快速适配、个性化模型定制。

(3) Prefix Tuning

  • 描述:Prefix Tuning 通过在 Transformer 的输入或注意力层中添加可训练的“前缀”向量来引导模型的行为,而不修改模型的权重。
  • 工作原理:
    在 Transformer 的每一层注意力模块中,引入一组可训练的虚拟 token(称为前缀),这些 token 的嵌入向量是可学习的。
    前缀向量参与自注意力计算,影响模型的输出,但模型的原始参数保持冻结。
    前缀可以看作任务特定的“提示”(prompt),引导模型生成特定输出。
  • 优点:
    参数量极少:仅需训练前缀向量(通常占总参数的 0.1% 以下)。
    适合小数据集:前缀可以看作一种软提示,减少过拟合风险。
  • 缺点:
    性能可能不如全参数微调,尤其是在任务差异较大的场景。
    前缀长度需要手动调整,可能影响效果。
  • 代表工作:
    Prefix-Tuning(Li & Liang, 2021):最早提出前缀调优的方法。
    P-Tuning v2:改进版本,增强了前缀的表达能力。
  • 应用场景:自然语言生成任务、提示驱动的任务适配。

(4) Prompt Tuning

  • 描述:Prompt Tuning 是通过在输入序列中添加可训练的软提示(soft prompts)来微调模型,类似于手动设计的文本提示,但这些提示是连续的、可学习的向量。
  • 工作原理:
    在输入序列前添加一组可训练的嵌入向量(软提示),这些向量与输入 token 一起送入模型。
    模型参数冻结,只优化软提示的嵌入。
    软提示的长度和初始化方式对性能有较大影响。
  • 优点:
    参数极少:只需训练少量提示向量(通常占总参数的 0.01%-0.1%)。
    适合低资源场景:对小数据集友好。
  • 缺点:
    性能依赖于提示设计,可能不稳定。
    对于复杂任务,效果可能不如 LoRA 或适配器。
  • 代表工作:
    Prompt Tuning(Lester et al., 2021):提出软提示微调的概念。
    Black-Box Tuning:针对不可访问内部参数的模型(如 API 模型)设计。
  • 应用场景:低资源任务、API 模型适配。

(5) P-tuning

  • 描述:P-tuning 是一种通过优化连续提示(continuous prompts)来适配预训练模型的方法,结合了离散提示(discrete prompts)和软提示(soft prompts)的思想。与 Prompt Tuning 不同,P-tuning 使用一个小型神经网络(如 LSTM 或 MLP)来生成提示嵌入,从而增强提示的表达能力。
  • 工作原理:
    在输入序列中插入一组可训练的提示 token,这些 token 的嵌入由一个轻量级的提示生成器(prompt encoder)动态生成。
    提示生成器通常是一个小型神经网络(如双层 MLP 或 LSTM),其参数是可训练的,而预训练模型的参数保持冻结。
    P-tuning 允许提示嵌入根据任务上下文动态调整,相比静态的 Prompt Tuning 更具灵活性。
    在某些实现中,P-tuning 还会结合离散提示(如手动设计的文本提示)作为初始化,进一步提高性能。
  • 优点:
    参数效率高:提示生成器的参数量通常占总参数的 0.01%-0.1%。
    灵活性强:动态生成的提示能更好地适配复杂任务。
    对小数据集友好:结合离散提示的初始化可以减少过拟合风险。
  • 缺点:
    提示生成器的设计和超参数(如网络结构、提示长度)需要仔细调优。
    相比 LoRA 或 Adapter,性能可能略逊,尤其是在生成任务中。
    实现复杂度稍高,需要额外设计提示生成器。
  • 代表工作:
    P-tuning(Liu et al., 2021):提出使用提示生成器优化连续提示的方法。
    P-tuning v2:改进版本,增强了提示生成器的表达能力和任务适配性。
  • 应用场景:自然语言理解任务(如文本分类、关系抽取)、小数据集场景、结合离散提示的任务。

(6) Sparse Fine-Tuning(稀疏微调)

  • 描述:稀疏微调通过只更新模型中一小部分权重(通常基于某种选择策略)来实现参数效率。
  • 工作原理:
    使用启发式方法(如基于梯度或重要性分数)选择需要更新的参数子集。
    冻结其他参数,只训练选中的参数。
    一些方法结合了剪枝(pruning)和微调,动态调整参数选择。
  • 优点:
    灵活性高:可以根据任务需求调整稀疏程度。
    存储需求低:只需保存更新的参数。
  • 缺点:
    参数选择策略复杂,可能需要额外计算。
    性能可能不稳定,依赖于稀疏策略的质量。
  • 代表工作:
    BitFit:只微调模型的偏置(bias)参数。
    Diff Pruning:基于差异剪枝选择需要更新的参数。
  • 应用场景:资源受限环境、模型压缩。

(7) Hybrid Methods(混合方法)

  • 描述:一些方法结合了上述多种技术,以进一步提升效率或性能。
  • 工作原理:
    例如,结合 LoRA 和 Prompt Tuning,同时优化低秩更新和软提示。
    或者在适配器中引入稀疏性,减少参数量。
  • 代表工作:
    (IA)^3:通过学习可训练的缩放向量(scaling vectors)来调整注意力权重。
    MAM Adapter:结合多种适配器设计,动态调整结构。
  • 应用场景:复杂任务、需要权衡性能和效率的场景。

3. PEFT 方法的对比

方法 参数效率 推理延迟 性能(相对全参数微调) 适用场景
Adapter 轻微增加 接近 多任务、跨语言迁移
LoRA 极高 无增加 接近 大模型适配、个性化
Prefix Tuning 极高 无增加 稍逊 生成任务、低资源场景
Prompt Tuning 极高 无增加 稍逊 小数据集、API 模型
Sparse Fine-Tuning 无增加 依赖策略 模型压缩、资源受限环境
Hybrid Methods 因方法而异 因方法而异 接近或稍逊 复杂任务、特定优化需求



4. PEFT 的优势与挑战

优势:

  • 计算效率:大幅降低 GPU 内存和训练时间需求。
  • 存储效率:只需保存少量参数,适合多任务部署。
  • 模块化:支持任务间快速切换,易于扩展。
  • 泛化能力:冻结预训练参数有助于保留模型的通用知识。

挑战:

  • 性能权衡:某些方法在复杂任务上可能无法完全匹配全参数微调的性能。
  • 超参数敏感:如 LoRA 的秩、前缀长度等需要仔细调优。
  • 任务适配性:不同任务可能需要不同 PEFT 方法,通用性有待提升。
  • 实现复杂性:一些方法(如稀疏微调)需要复杂的参数选择策略。

5. 总结与建议

PEFT 是大模型 微调的重要技术方向,特别适合资源受限或多任务场景。选择合适的 PEFT 方法需要根据以下因素权衡:

  • 任务复杂度:简单任务(如文本分类)可用 Prompt Tuning,复杂任务(如生成)可能需要 LoRA 或 Adapter。
  • 资源限制:内存和存储受限时,优先选择 LoRA 或 Prompt Tuning。
  • 推理需求:对延迟敏感的场景,LoRA 更优(无额外推理开销)。
  • 数据集规模:小数据集适合 Prefix Tuning 或 Prompt Tuning,大数据集可尝试 Adapter 或 LoRA。

版权声明:本文为CSDN博主「彬彬侠」的原创文章,
遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013172930/article/details/147338558

最新文章