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

大模型微调方法总结:LoRA、Adapter、Prefix-tuning、P-tuning 与 Prompt-tuning

总结了大模型参数高效微调的五种主流方法。LoRA 利用低秩分解更新权重,保持预训练参数冻结,无推理延迟;Adapter 在 Transformer 层间插入小型网络模块,支持多任务切换;Prefix-tuning 和 P-tuning 通过优化连续提示向量适配任务,前者侧重生成,后者侧重理解;Prompt-tuning 直接拼接可学习嵌入向量,最为轻量。这些方法旨在降低显存占用和训练成本,同时保持模型性能。文章对比了各方法的参数量、延迟及适用场景,为技术选型提供参考。

数字游民发布于 2025/2/6更新于 2026/9/863 浏览
大模型微调方法总结:LoRA、Adapter、Prefix-tuning、P-tuning 与 Prompt-tuning

大模型微调方法总结

随着预训练语言模型(PLM)规模的不断扩大,全参数微调(Full Fine-Tuning)的成本变得极高。为了在特定任务上适配大模型同时降低计算资源消耗,参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)技术应运而生。本文总结了五种主流的 PEFT 方法:LoRA、Adapter、Prefix-tuning、P-tuning 和 Prompt-tuning。

1. LoRA (Low-Rank Adaptation)

论文: LoRA: Low-Rank Adaptation of Large Language Models (arXiv:2106.09685)

简介

自然语言处理的主流范式通常包括大规模预训练和针对特定任务的微调。然而,随着模型参数量达到百亿甚至千亿级别,重新训练所有参数在计算资源和存储上变得不可行。LoRA 基于一个关键发现:模型在任务适配过程中权重的改变量具有低秩特性(low intrinsic dimension)。

原理与方法

LoRA 的核心思想是冻结预训练模型的权重矩阵 $W_0$,并引入旁路分支来学习权重的更新量 $ riangle W$。假设更新量可以分解为两个低秩矩阵的乘积 $BA$,其中 $B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,且秩 $r \ll d$。

在训练过程中,只更新 $A$ 和 $B$ 的参数,而 $W_0$ 保持不变。前向传播时,输出为 $h = W_0x + BAx$。由于 $BA$ 初始化为零矩阵,训练初期对原始模型无影响。推理阶段,可以将 $BA$ 合并回 $W_0$,因此不会增加额外的推理延迟。

实现细节

  • 初始化: $A$ 使用随机高斯分布初始化,$B$ 使用零矩阵初始化。
  • 应用位置: 通常应用于 Transformer 中的 Query 和 Value 投影层。
  • 优势: 显存占用大幅降低,训练速度快,且能与其他 PEFT 方法结合。

2. Adapter

论文: Parameter-Efficient Transfer Learning for NLP (arXiv:1902.00751)

简介

Adapter 是一种较早提出的 PEFT 方法,通过在预训练模型的每一层或特定层之间插入小型网络模块来实现任务适配。这种方法避免了灾难性遗忘,允许在不修改主模型参数的情况下适应新任务。

架构设计

每个 Adapter 模块包含两个前馈子层:

  1. 降维层: 将输入维度 $d$ 投影到较小的中间维度 $m$(通常 $m \ll d$),通过非线性激活函数。
  2. 升维层: 将维度从 $m$ 还原回 $d$。

Adapter 的输出通过残差连接加到原始 Transformer 块的输出上。这种结构使得模型能够灵活地切换不同任务对应的 Adapter 模块。

改进方案:AdapterFusion

为了进一步提升多任务迁移能力,提出了 AdapterFusion。它将学习过程分为两个阶段:

  1. 知识提取: 训练独立的 Adapter 模块学习各下游任务的特定知识。
  2. 知识组合: 固定预训练参数和各 Adapter 参数,引入新的融合参数来学习如何组合多个 Adapter 的知识,从而解决任务间干扰问题。

尽管 Adapter 效果显著,但其在每一层都增加了额外参数,可能会略微增加推理时的内存访问开销。

3. Prefix-tuning

论文: Prefix-Tuning: Optimizing Continuous Prompts for Generation (arXiv:2101.00190)

简介

Prefix-tuning 主要用于生成任务。它借鉴了人类提示(Prompt)的概念,但在输入序列前添加了一组连续的、可学习的向量(称为前缀),而不是离散的文本 Token。

核心机制

  • 连续提示: 前缀由自由参数组成的向量序列构成,不对应任何真实词汇,这使得优化更加平滑。
  • 重参数化: 为了防止训练不稳定,作者对前缀参数进行了重参数化处理,将其映射到一个更小的空间进行优化,再扩展回原空间。
  • 适用范围: 适用于自回归模型(如 GPT-2)和编解码器模型(如 BART)。

优势

相比于离散 Prompt,连续前缀具有更强的表达能力,能够捕捉更复杂的任务特征,且只需存储前缀参数,无需更新主模型。

4. P-tuning

论文: GPT Understands, Too (arXiv:2103.10385)

简介

P-tuning 主要针对理解类任务(NLU),特别是针对 BERT 等双向模型。它结合了 Prompt-tuning 的思想,但引入了更复杂的编码结构。

关键改进

  1. LSTM 编码: 考虑到预训练 Embedding 的离散性以及 Prompt 之间的关联性,P-tuning 使用 LSTM 对可学习的 Prompt 向量进行编码,增强了上下文表示能力。
  2. Anchor 机制: 在输入中引入锚点(如问号),帮助模型更好地理解任务边界,例如在 RTE 任务中加入 ? 符号。

效果

实验表明,P-tuning 在全数据集上的表现超越了传统的精调方法,证明了连续提示在理解任务中的有效性。

5. Prompt-tuning

简介

Prompt-tuning 是最轻量级的微调方法之一。它不引入额外的网络层,而是直接定义一组可学习的嵌入向量作为 Prompt,拼接到输入数据上。预训练模型参数完全冻结。

特点

  • 无额外层: 相比 P-tuning,Prompt-tuning 没有 LSTM 等编码结构,参数量更少。
  • 模型缩放效应: 研究表明,随着模型体积增大,Prompt-tuning 的效果逐渐提升,最终能追平全参数微调的效果。
  • Prompt Ensembling: 可以在一个 Batch 中同时训练同一任务的不同 Prompt 变体,类似于模型集成,但成本更低。

各方法对比与选型建议

方法参数量推理延迟适用场景备注
LoRA极低无增加通用微调,生成/理解目前最流行,支持多任务切换
Adapter低轻微增加多任务,跨语言模块化强,但推理需加载多个模块
Prefix-tuning低无增加生成任务连续向量优化,适合长文本生成
P-tuning低无增加理解任务 (NLU)引入 LSTM 编码,适合分类/抽取
Prompt-tuning极低无增加简单任务,小样本最轻量,依赖模型规模

选型指南

  1. 资源受限: 如果显存非常紧张,首选 Prompt-tuning 或 LoRA。
  2. 生成任务: 优先选择 Prefix-tuning 或 LoRA。
  3. 理解任务: P-tuning 在分类和抽取任务上表现优异。
  4. 多任务部署: LoRA 和 Adapter 更适合动态切换不同任务适配器。
  5. 性能要求: 若追求极致性能且资源允许,LoRA 通常是性价比最高的选择。

总结

大模型微调技术的核心在于平衡性能与效率。LoRA 凭借其低秩特性和无推理延迟的优势,已成为当前工业界的首选方案。Adapter 提供了灵活的模块化扩展,而 Prefix/Prompt/P-tuning 则展示了通过优化输入空间而非权重空间来适配任务的潜力。开发者应根据具体任务类型、硬件资源和性能需求选择合适的微调策略。

目录

  1. 大模型微调方法总结
  2. 1. LoRA (Low-Rank Adaptation)
  3. 简介
  4. 原理与方法
  5. 实现细节
  6. 2. Adapter
  7. 简介
  8. 架构设计
  9. 改进方案:AdapterFusion
  10. 3. Prefix-tuning
  11. 简介
  12. 核心机制
  13. 优势
  14. 4. P-tuning
  15. 简介
  16. 关键改进
  17. 效果
  18. 5. Prompt-tuning
  19. 简介
  20. 特点
  21. 各方法对比与选型建议
  22. 选型指南
  23. 总结

更多推荐文章

查看全部
  • OpenClaw Session 机制详解:重置、压缩、剪枝与记忆管理
  • 宇树 G1 机器人二次开发:基于 FAST_LIO 的建图与配置实战
  • Spring Boot 消息队列与异步通信
  • Z 字形变换与外观数列算法解析
  • LeetCode 顺序表练习:移除元素、删除重复项与合并有序数组
  • log4js 库二次封装
  • 鸿蒙金融理财全栈:生态合作与数据变现架构设计
  • Llama3 快速部署方案:基于 Groq 的高性能推理实践
  • Android Framework 核心原理与源码解析指南
  • 多模态 AI 应用:图文音视频一体化开发实战
  • 链表细节与 Java LinkedList 实战
  • BinarySort 二叉排序算法实现
  • Windows 11 使用 llama.cpp 运行 Qwen3.5 量化模型测试
  • Clawdbot(Moltbot) 飞书机器人配置教程
  • 计算机技能如何助力职业拓展与转型
  • 操作系统智能助手 OS Copilot 新功能测评
  • 在 Cursor 中使用 MCP 服务实现自动化开发
  • 基于无监督学习与凸优化的无人机中继网络协同部署仿真
  • Stack-Chan 机器人快速入门指南
  • OpenClaw 本地部署与 QQ 机器人接入教程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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