PEFT (Parameter-Efficient Fine-Tuning) 参数高效微调是一种针对大模型微调的技术,旨在减少微调过程中需要调整的参数量,同时保持或提高模型的性能。
以LORA、Adapter Tuning 和 Prompt Tuning 为主的PEFT方法总结如下
LORA
-
论文题目:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
-
论文链接:https://arxiv.org/pdf/2106.09685
-
发表时间:2021.10.16
含义
一种用于微调大型预训练语言模型(如GPT-3或BERT)的方法。核心思想是在模型的关键层中添加小型、低秩的矩阵来调整模型的行为,而不是直接改变整个模型的结构。
原理
低秩矩阵分解: LoRA通过将权重矩阵分解为两个较低秩的矩阵来减少参数量。具体来说,对于模型中的某个权重矩阵 W,LoRA将其表示为两个较小的矩阵 A 和 B,使得 W≈A×B。这样可以有效地减少需要更新的参数数量。
保持预训练权重不变: LoRA保留了预训练模型的原始权重,并在此基础上进行调整。通过添加低秩更新矩阵 ΔW=A×B 到原始权重矩阵 W,来得到新的权重矩阵 W′=W+ΔW。这种方法允许模型在保留预训练知识的同时,适应新的任务。
Adapter Tuning
-
论文题目:Parameter-Efficient Transfer Learning for NLP
-
论文链接:https://arxiv.org/pdf/1902.00751
-
发表时间:2019.6.13
含义
通过在预训练模型的基础上添加适配器层(adapters),来实现特定任务的微调。这种方法旨在保留预训练模型的原始权重,仅在需要适应新任务的地方进行小规模的参数调整。
原理
插入适配器层: 在预训练模型的特定位置(通常是在每个 Transformer 层的内部或后面)插入适配器层。
适配器层结构: 这些适配器层是一些小规模的神经网络,通常由一个下采样层(减少维度)、一个激活函数(如 ReLU)和一个上采样层(恢复维度)组成。
冻结预训练权重: 在微调过程中,预训练模型的原始权重保持不变,仅训练适配器层的权重。
高效微调: 由于适配器层的参数数量相对较少,微调过程变得更加高效。适配器层可以针对不同任务进行训练,而不影响预训练模型的核心结构。
Prompt Tuning
-
论文题目:The Power of Scale for Parameter-Efficient Prompt Tuning
-
论文链接:https://arxiv.org/pdf/2104.08691
-
发表时间:2021.9.2
含义
在预训练语言模型的输入中添加可学习的嵌入向量作为提示。其核心思想是通过引入任务特定的提示(prompts),而非对整个模型进行全参数更新,从而实现对模型的高效微调
原理
设计提示词: 输入提示(prompt)通常包含任务描述、示例或特定的输入格式。例如,对于情感分类任务,可以设计一个提示词:“这段文字的情感是:”。
优化提示词: Prompt Tuning 的优化对象是输入提示的词嵌入(embedding)。通过梯度下降等优化算法,调整提示词的词嵌入,使得模型在特定任务上的表现达到最优。
冻结预训练模型: 在 Prompt Tuning 中,预训练模型的权重保持不变,仅优化提示词的嵌入。
Prefix-Tuning
-
论文题目:Prefix-Tuning: Optimizing Continuous Prompts for Generation
-
论文链接:https://arxiv.org/pdf/2101.00190
-
发表时间:2021.1.1
含义
通过固定预训练模型的参数,仅在输入序列的前面添加一个可训练的前缀(prefix),从而在不改变模型参数的情况下实现特定任务的适应
原理
固定模型参数: 不对预训练语言模型(如 GPT-3、BERT 等)的参数进行微调
添加可训练前缀: 在输入序列的前面添加一个可训练的前缀向量。这个前缀向量的长度和维度可以根据具体任务进行调整
任务适应: 在实际应用中,前缀向量与输入序列一起输入到预训练模型中。由于前缀向量是可训练的,模型可以通过调整前缀向量来适应特定的任务,而无需改变模型本身的参数。
P-Tuning
-
论文题目:GPT Understands, Too
-
论文链接:https://arxiv.org/pdf/2103.10385v1
-
发表时间:2021.3.18
1722308001185)
含义
在模型输入中插入一些可训练的提示(prompts),这些提示是嵌入向量(embedding vectors),在训练过程中被优化
原理
固定模型参数: 和 Prefix-Tuning 类似,不改模型参数
插入可训练提示: 在输入序列的适当位置插入一些可训练的提示向量。
任务适应: 在训练过程中,这些提示向量与输入序列一起输入到预训练模型中
P-Tuning V2
-
论文题目:P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks
-
论文链接:https://arxiv.org/pdf/2110.07602v2
-
发表时间:2021.10.18
1722308001185)
含义
保留了 P-Tuning 的核心思想,即通过优化输入提示向量来引导预训练模型处理特定任务
原理
相比较于P-Tuning:
动态提示优化: 采用动态提示优化方法
多层提示插入: P-Tuning V2 不仅在输入序列的前面插入提示向量,还在模型的不同层次(如中间层)插入提示向量
BitFit
-
论文题目:BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models
-
论文链接:https://arxiv.org/abs/2106.10199
-
发表时间:2021.6.18
含义
通过仅微调模型的偏置参数来适应新的任务,从而减少了需要调整的参数量。
原理
-
原始 BERT 模型:包含多层 Transformer,每层有权重矩阵 W 和偏置 b。
-
BitFit 微调:保持所有权重矩阵 W 不变,只微调每层的偏置参数 b
DistilBERT
-
论文题目:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
-
论文链接:https://arxiv.org/abs/1910.01108
-
发表时间:2020.3.1
含义
使用知识蒸馏技术将大模型压缩成更小的模型,从而减少微调所需的计算资源和时间。
原理
知识蒸馏是一种模型压缩技术,通过训练一个较小的学生模型(student model)来模仿较大教师模型(teacher model)的行为。具体步骤如下:
-
教师模型:使用预训练的 BERT 模型作为教师模型。
-
学生模型:构建一个较小的 BERT 模型,即 DistilBERT。
-
训练过程:在训练过程中,学生模型通过模仿教师模型的输出来学习。损失函数不仅包括学生模型和教师模型输出之间的差异,还包括学生模型和真实标签之间的差异。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。