跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

LLM 高效微调方法详解:Adapter、LoRA、Prompt 等六大主流方案对比

综述由AI生成LLM 微调的六种主流高效方法,包括 Adapter Tuning、Prefix Tuning、Prompt Tuning、P-tuning、P-tuning v2 及 LoRA。针对全量微调成本高、资源消耗大的问题,这些方法通过冻结预训练参数并仅训练少量新增参数,实现了接近全参数微调的效果。文章详细解析了各方法的原理、结构优势与局限性,并提供了不同场景下的技术选型建议,帮助开发者在资源受限条件下高效完成模型适配。

DevStack发布于 2025/2/6更新于 2026/6/320 浏览
LLM 高效微调方法详解:Adapter、LoRA、Prompt 等六大主流方案对比

LLM 高效微调方法详解:Adapter、LoRA、Prompt 等六大主流方案对比

由于大语言模型(LLM)参数量通常在亿级以上,少则数十亿,多则数千亿。当我们想在特定领域数据上微调模型时,如果选择 Full-Tuning(全量微调所有参数),不仅对硬件设备(GPU)要求极高,训练时间也往往难以接受。因此,我们可以选择一条捷径:不需要微调 LLM 的全量参数,而只需要新增少量的参数,通过固定原始模型参数,仅微调新增的少量参数,从而达到接近使用全参数 Full-Tuning 的效果。

本章主要讲述在 LLM 时代,当下主流的六种高效微调(Efficient Tuning)方法及其思路与优缺点对比。

1. Adapter Tuning (2019)

(1) 论文信息

来自 2019 年,论文《Parameter-Efficient Transfer Learning for NLP》。

摘要内容:微调大型预训练模型在自然语言处理中是一种有效的迁移学习机制。然而,在存在许多下游任务的情况下,微调显得参数效率低下:因为每个任务都需要一个全新的模型。作为替代方案,我们提出了带有适配器模块的迁移学习方法。适配器模块能够生成一个紧凑且可扩展的模型;它们仅为每个任务增加少量可训练参数,并且可以在不重新访问先前任务的情况下添加新任务。原始网络的参数保持不变,从而实现了高度的参数共享。

为了展示适配器的有效性,我们将最近提出的 BERT Transformer 模型迁移到了 26 个不同的文本分类任务中,包括 GLUE 基准测试。适配器在仅为每个任务增加少量参数的情况下,达到了接近最先进性能的水平。在 GLUE 基准测试中,我们在仅为每个任务增加 3.6% 参数的情况下,实现了与完整微调性能相差不到 0.4% 的结果。相比之下,微调则需要对每个任务的 100% 参数进行训练。

(2) 思路

  • 固定 Transformer 的全部参数。
  • 在 Transformer 的每一个 Block 里嵌入一些新初始化的 Adapter Network。
  • 其中 Adapter 由两层 MLP 组成,分别负责将 Transformer 的表征降维和升维。

(此处原图展示了 Adapter 在 Transformer 层中的插入位置)

(3) 优势

  • 只需要添加不到 5% 的可训练参数,即可以几乎达到全参数训练的效果。
  • 在训练过程中大大节省了训练时间,做到时间有效性。
  • 基本不降低模型在下游任务中的表现。

2. Prefix Tuning (2021)

(1) 论文信息

摘要内容:微调是实际上利用大型预训练语言模型执行下游任务的首选方法。然而,这种方法会修改所有语言模型的参数,因此必须为每个任务存储完整的副本。在本文中,我们提出了前缀微调(Prefix-tuning),这是一种针对自然语言生成任务的轻量级微调替代方案。该方法保持语言模型参数不变,但优化了一个小的、连续的任务特定向量(称为前缀)。前缀微调受到提示机制的启发,允许后续标记关注这个前缀,就像它们是'虚拟标记'一样。

我们将前缀微调应用于 GPT-2 进行表格到文本的生成,以及应用于 BART 进行文本摘要。我们发现,通过仅学习 0.1% 的参数,前缀微调在全数据设置下取得了与微调相当的性能,在低数据设置下超越了微调,并且更好地推广到了训练过程中未见过的主题示例。

(2) 思路

固定预训练参数,为每一个任务额外添加一个或多个 embedding,且利用多层感知编码 prefix。不再像 Prompt Tuning 继续输入 LLM。

(此处原图展示了 Prefix 在序列前的插入结构)

(3) 结构

在 seq 前面加 idx 个虚拟 token,以此构造一个连续的 token,作为微调参数(结构一样是 transformer)。 固定 LLM 的参数。

由于发现直接加 prefix 层,模型不稳定,故在其后加了 MLP 层,用于 reparametrization 参数 $P_\theta$。 $$ P_\theta[i:] = \text{MLP}\theta(P'\theta[i,:]) $$ 原始 $P_\theta$ 维度为 $|P_{idx}| \times \text{dim}(h_i)$,$P'\theta$ 维度为 $|P{idx}| \times k$,经过 MLP 复原原始维度。

针对不同任务,有不同最优的 k 值,经过实验,作者建议:

  • Table-to-table 任务,k=512
  • Summarization 任务,k=800

(4) 优势

  • 在 Table2Text 任务上,只有 0.1% 参数量级的效果要优于微调。

(5) 缺点

  • 摘要任务上,prompt 的效果要略差于微调。

3. Prompt Tuning (2021)

(1) 论文信息

摘要:在这项工作中,我们探索了'提示微调'(prompt tuning),这是一种简单而有效的机制,用于学习'软提示'来条件化冻结的语言模型以执行特定的下游任务。与 GPT-3 使用的离散文本提示不同,软提示是通过反向传播学习的,并且可以根据任意数量的标记示例进行调整。我们的端到端学习方法在性能上大幅超越了 GPT-3 的少量样本学习。

更值得一提的是,通过使用 T5 模型进行模型大小的消融实验,我们展示了提示微调随着规模的增加变得更加具有竞争力:当模型参数超过数十亿时,我们的方法'缩小了差距'并达到了模型微调(即调整所有模型权重)的强大性能。这一发现尤为重要,因为大型模型的共享和部署成本高昂,而能够重用一个冻结的模型来执行多个下游任务可以减轻这一负担。

(2) 思路

固定预训练 LLM 的参数,为每一个任务额外添加一个或多个 embedding。之后拼接 query 正常输入 LLM,并只训练这些 embedding。

(此处原图展示了 Prompt Embedding 拼接输入的结构)

(3) 优势

  • 效果优于 GPT-3 的 few-shot learning。
  • 当模型参数量达 100 亿时,接近于全模型微调效果。

4. P-tuning (2021)

V2 版本:2023 更新

(1) 论文信息

摘要:使用自然语言模式对预训练语言模型进行提示已被证明在自然语言理解(NLU)任务中有效。然而,我们的初步研究表明,手动设计的离散提示往往导致性能不稳定——例如,仅改变提示中的一个单词就可能导致性能大幅下降。为此,我们提出了一种新颖的方法 P-Tuning,该方法在离散提示的基础上结合了可训练的连续提示嵌入。实验表明,P-Tuning 不仅通过最小化不同离散提示之间的差距来稳定训练过程,而且在一系列 NLU 任务(包括 LAMA 和 SuperGLUE)上显著提高了性能。P-Tuning 在完全监督和少量样本设置下,对冻结和微调的语言模型均普遍有效。

(2) 思路

固定 LLM 参数,用多层感知机和 LSTM 对 prompt 进行编码,编码后与其他向量进行拼接,正常输入 LLM。 注意,训练之后只保留 prompt 编码之后的向量,无需保留编码器。

(此处原图展示了 P-tuning 的编码结构)

(3) 结构

对于 prompt 模板,使用 MLP+LSTM 进行编码,替代原始的 input embedding。 对于原始的输入 input 和 target,则使用原始的 input embedding。

(4) 使用方式

离散和连续 template token 混合时,显示地插入一下 anchor(离散的 token)有助于 template 的优化。

(5) 优势

  • 能缓解离散 prompt 方法,导致的模型输出结果到达局部最优。

(6) 缺点

  • 查找的最优提示,可能是次优的。
  • 在小参数量模型中表现差(小参数模型如 Bert,330M),上了 10B 的模型效果才开始可以持平。
  • 序列标注等对推理和理解要求高的任务,prompt-tuning 效果会变差。

5. P-tuning v2 (2022)

(1) 论文信息

摘要:提示微调(Prompt Tuning),该方法仅对冻结的语言模型中的连续提示进行微调,极大地减少了训练时每个任务的存储和内存使用。然而,在 NLU(自然语言理解)的背景下,先前的工作表明,对于正常大小的预训练模型,提示微调的性能并不理想。我们还发现现有的提示微调方法无法处理复杂的序列标注任务,这表明其缺乏普适性。

我们提出了一个新颖的实验发现:经过适当优化的提示微调可以在广泛的模型规模和 NLU 任务中普遍有效。它在性能上与微调相当,但仅需要调整 0.1%-3% 的参数。我们的方法 P-Tuning v2 是 Deep Prompt Tuning(Li 和 Liang, 2021; Qin 和 Eisner, 2021)的一种实现,针对 NLU 进行了优化和适配。鉴于 P-Tuning v2 的普适性和简单性,我们相信它可以作为微调的替代方案,并为未来的研究提供一个强大的基线。

(2) 思路

  • 固定 LLM 参数。
  • 类似 Prefix-tuning。
  • 在 Deep FT 层:在 seq 前面加 n 个虚拟 token,以此构造一个连续的 token,作为微调参数(结构一样是 transformer)。
  • 在多种任务上下进行微调。
  • 完全变为生成模型,无需 verbalizer。

(此处原图展示了 P-tuning v2 的深层结构)

(3) 优势

  • 在小、大模型上,效果均优于 P-tuning。
  • 当参数量达 10B,效果相当于 FT。

6. LoRA (2021)

(1) 论文信息

摘要:自然语言处理的一个重要范式包括在通用领域数据上进行大规模预训练,并适应特定任务或领域。随着我们预训练更大的模型,全面微调(即重新训练所有模型参数)变得不太可行。以 GPT-3 175B 为例,部署独立的微调模型实例,每个实例都有 175B 参数,成本是极其昂贵的。我们提出了低秩适应(Low-Rank Adaptation,简称 LoRA),该方法冻结预训练模型的权重,并在 Transformer 架构的每一层中注入可训练的低秩分解矩阵,从而大大减少了下游任务的可训练参数数量。与使用 Adam 对 GPT-3 175B 进行微调相比,LoRA 可以将可训练参数数量减少 10,000 倍,GPU 内存需求减少 3 倍。尽管 LoRA 的可训练参数较少,训练吞吐量更高,并且与适配器不同,没有额外的推理延迟,但它在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上的模型质量上仍然与微调相当或更好。我们还对语言模型适应中的秩不足问题进行了实证调查,这揭示了 LoRA 的有效性。

(2) 思路

固定 LLM 参数,在每一个 self-attention 层中,加入一个 low-rank 的矩阵,即 $B \times A$。在微调时,只更新 $B \times A$ 的参数。

(此处原图展示了 LoRA 在 Attention 层的并行结构)

(3) 结构

在每一层 self-attention 中,添加新的参数 $\Delta W$。 $$ h = W_0x + \Delta W x = W_0x + BAx $$ 其中,预训练模型的原始参数为 $W_0 \in R^{d \times k}$。 LoRA 的新增参数为 $B \in R^{d \times r}$,$A \in R^{r \times k}$。 B 初始化为一个全 0 矩阵,A 是一个高斯随机初始化的矩阵。B 初始化为全 0 矩阵的目的是,在开始训练时,让 $B \times A$ 等于 0 矩阵,即参数从 0 开始。 其中 LoRA 的中间维度 $r$,远小于原始模型维度,即 $r \ll \min(d,k)$。

(4) 学习目标

原始的 LLM,一般也是 CLM (Causal Language Model/Conditional Language Model),学习目标为预测下一个 token。 加入 LoRA 后,学习目标保持一致,但在计算过程中加入了低秩矩阵的增量。

(5) 配置

  • 在多个部位 (Q/K/V/Output) 同时添加 $\Delta W$,会比只在单一部分上添加权重 $\Delta W$,效果要好。
  • 在 wikiSQL/MultiNLI 数据集上测试得出结论:小的 $\gamma$ 值,能达到较好的效果(一般为 4-8)。

(6) 优势

  • 用于低资源的场景。也就是硬件设备资源有限的情况下。
  • 更新参数量少。对于 175B 的 GPT 模型,使用该方法只需要额外更新 0.01% 的参数量。
  • 是全参数微调(FT)的一种替代方案。

(7) 缺点

  • 全参数微调(FT)效果要比 LoRA 稍微要好。

总结与选型建议

上述六种方法各有侧重,实际应用中需根据具体场景进行选择:

  1. 资源受限场景:若显存极度紧张,LoRA 和 Adapter 是首选,因为它们引入了极少的可训练参数且推理无延迟。
  2. 生成任务:Prefix Tuning 和 P-tuning v2 在文本生成和摘要任务上表现优异,适合需要长上下文生成的场景。
  3. 理解任务:P-tuning v2 在 NLU 任务上表现稳定,尤其是配合较大的模型规模时。
  4. 快速迭代:Prompt Tuning 实现最简单,适合快速验证想法,但在小模型上效果有限。
  5. 性能优先:若资源允许,Full-Tuning 仍是上限最高的方案,但 LoRA 已能逼近其 99% 以上的性能。

在实际工程中,LoRA 因其生态支持好(如 HuggingFace PEFT)、部署方便且效果显著,目前已成为工业界微调大模型的主流选择。

目录

  1. LLM 高效微调方法详解:Adapter、LoRA、Prompt 等六大主流方案对比
  2. 1. Adapter Tuning (2019)
  3. (1) 论文信息
  4. (2) 思路
  5. (3) 优势
  6. 2. Prefix Tuning (2021)
  7. (1) 论文信息
  8. (2) 思路
  9. (3) 结构
  10. (4) 优势
  11. (5) 缺点
  12. 3. Prompt Tuning (2021)
  13. (1) 论文信息
  14. (2) 思路
  15. (3) 优势
  16. 4. P-tuning (2021)
  17. (1) 论文信息
  18. (2) 思路
  19. (3) 结构
  20. (4) 使用方式
  21. (5) 优势
  22. (6) 缺点
  23. 5. P-tuning v2 (2022)
  24. (1) 论文信息
  25. (2) 思路
  26. (3) 优势
  27. 6. LoRA (2021)
  28. (1) 论文信息
  29. (2) 思路
  30. (3) 结构
  31. (4) 学习目标
  32. (5) 配置
  33. (6) 优势
  34. (7) 缺点
  35. 总结与选型建议
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • JavaScript 获取本周周一零点时间方法
  • AirSim 无人机仿真环境部署与配置指南
  • ComfyUI 提示词助手实战:通过自动化流程提升 AI 绘画效率
  • AirSim 无人机仿真实战:起飞与降落控制
  • ComfyUI 云服务器部署实战与优化指南
  • 前端实战:基于 Vue3 实现无限滚动、懒加载与瀑布流模块及优化策略
  • C++ 继承:面向对象代码复用的核心机制
  • 基于 UDP 的手机通话语音局域网传输与 AI 处理 Python 脚本
  • Stable Diffusion 潜空间扩散生成流程解析
  • STM32 项目 Git 版本管理实战指南
  • LLaMA 大模型 LoRA 微调实践与部署指南
  • 自然语言处理在社交媒体分析中的实战应用
  • 9 本大模型与人工智能入门经典书籍推荐
  • Linux 基础开发工具:Git 版本管理与 GDB/CGDB 调试技巧
  • LLaMA-Factory 低成本微调实战指南
  • FLUX.1-dev FP8 模型部署与低显存优化实战
  • AI 大模型产品经理转行指南:核心能力与实战路径
  • PyCharm Copilot 插件 Claude 模型不可用问题修复
  • 自然语言处理在法律领域的应用与实战
  • Java SpringBoot+Vue3+MyBatis 仓库管理系统设计与实现

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online