方式一: Prompt-tuning
什么是Prompt-tuning?
Prompt-tuning通过修政输入文本的提示(Prompt)来引导模型生成符合特定任务或情境的输出,而无需对模型的全量参数进行微调。
这种方法利用了预训练语言模型 (PLM)在零样本或少样本学习中的强大能力,通过修改输入提示来激活模型内部的相关知识和能力。
一、Prompt-tuning:激活模型的「隐形指令」
*核心原理*:
通过修改输入文本的提示(Prompt)来引导预训练语言模型(PLM)生成特定任务的输出,而无需微调整个模型参数。其核心逻辑是将任务需求编码为可学习的连续向量(软提示),通过调整这些向量间接激活模型内部已有的知识,而非直接修改模型权重。
*1. 实施步骤*:
设计提示模板:
-
模板需包含任务描述(如「判断以下文本的情感倾向:」)、输入占位符(如
{text}
)和输出格式要求(如「答案:[positive/negative]」)。示例:
prompt_template = "分类任务:{text},请给出类别标签:"
*准备数据集:*
监督学习任务需包含输入文本与真实标签(如情感分类的正负样本);生成任务需定义预期输出格式(如摘要长度、风格)。
*1. 微调提示嵌入:*
在输入层添加可学习的提示向量(通常长度为 10-100 个 token),通过反向传播优化这些向量,最小化任务损失。
*2. 参数效率:*
*仅需微调提示嵌入(如 GPT-3 的提示参数仅占总参数的 0.1%),显著降低计算成本。*
*3. 关键优势*:
**黑盒适配:**适用于无法访问模型内部参数的场景(如 API 调用)。
*低资源友好:**在小样本任务中表现优于传统微调,尤其适合医疗、法律等标注数据稀缺的领域。*
*多任务共享:**不同任务可独立训练提示向量,无需重新训练整个模型。*
*4. 局限性*:
**模板敏感性:**提示的位置、长度或措辞可能显著影响性能(如分类任务中,提示放在句首或句尾效果不同)。
*复杂任务瓶颈:**对跨模态或逻辑推理任务(如数学证明)效果有限,需结合其他方法(如 LoRA)。*
方式二: Prefix-tuning
什么是Prefix-tuning?
Prefix-tuning是Prompt-tuning的一种变体,它通过在输入文本前添加一段可学习的“前缀”来指导模型完成任务。
**这个前缀与输入序列一起作为注意力机制的输入,从而影响模型对输入序列的理解和表示。**由于前缀是可学习的,它可以在微调过程中根据特定任务进行调整,使得模型能够更好地适应新的领域或任务。
二、Prefix-tuning: Transformer 层间的[隐形操控
核心原理:
作为 Prompt-tuning 的进阶版,Prefix-tuning 在Transformer 的每一层注意力模块的键(Key) 和值 (Value矩阵前插入可学习的前缀向量。这些前缀向量与输入序列共同参与注意力计算,从而引导模型关注任务相关特征。
实施步骤
1. 初始化前缀嵌入:
为每个 Transformer 层生成可学习的前缀矩阵(如长度为 20 的向量) ,通常使用任务描述文本通过预训O练模型编码初始化,以提升收敛速度,
2. 拼接输入与前缀:
将前缀向量与原始输入的词嵌入拼接,形成新的输入表示(如[prefix] + [input])训练模型:
3. 训练模型:
冻结基座模型参数,仅优化前缀向量。训练时,前缀向量通过反向传播调整,影响注意力权重分布。
4. 技术突破:
层间干预: 相比 Prompt-tuning 仅在输入层添加提示,Prefix-tuning 在每一层注入前缀,更精细地控制模型决策过程。
长文本适配: 通过调整前缀长度(如 50-100 token),可灵活处理文档级生成任务(如法律合同摘要)
5. 典型应用:
文本生成: 在摘要、翻译任务中,Prefix-tuning 通过隐式指令引导模型生成符合要求的输出,性能接近全量微调但参数量减少99%。
低资源学习: 在仅有 100 个样本的场景中,Prefix-tuning 的泛化能力显著优于传统微调,适用于罕见病诊断等领域。
方式三: LoRA
什么是LoRA?
LoRA (Low-Rank Adaptation)通过分解预训练模型中的部分权重矩阵为低秩矩阵,并仅微调这些低秩矩阵的少量参数来适应新任务。
三、LORA: 矩阵分解的参数瘦身术
核心原理:
通过将预训练模型的权重矩阵分解为低秩矩阵(如w = WO + BA) ,仅微调低矩阵A和B,从而以极小的计算成本实现模型适配。其核心逻辑是利用矩阵的低秩特性,减少可训练参数数量。
实施步骤
插入 LoRA 模块:
通常设置在 Transformer 的每一层注意力或前馈网络中插入可训练的低秩矩阵A(降维)和B(升维),1O秩 (rank) 为 4-64。
示例:
class LoRALayer(nn.Module): def __init__(self, in_features, out_features, rank=4): super().__init__() self.A = nn.Parameter(torch.randn(rank, in_features)) self.B = nn.Parameter(torch.randn(out_features, rank)) def forward(self, x): return self.B @ self.A @ x
2. 训练策略:
冻结基座模型参数,仅训练A和B。学习率通常设为 1e-4,优化器选择 AdamW 或 Lion。0
参数调整:
- 秩(lora rank): 秩越大,模型表达能力越强,但计算成本越高。简单任务可设为4-8,复杂任务o设为 32-64。
- 缩放系数 (lora_alpha): 通常设为的 2 倍(如 rank=8 时 alpha=16),确保训练稳定。
- Dropout (lora_dropout) : 设为 0.1-0.3 以防止过拟合。
3. 技术演进
LORA+: 通过为矩阵A和B设置不同的学习率 (如eta A=1e-3,eta B=5e-4)提升微调速度2 倍,尤其在医疗影像分析等复杂任务中效果显著在消费级显卡 (如 RTX3090) 上实现 70B 模型的高效微调。
*QLoRA:**结合量化技术(如 4-bit 权重),在消费级显卡(如 RTX 3090)上实现 70B 模型的高效微调。*
4. 应用场景:
多模态融合: 在医疗领域,LoRA 可将CT 影像特征与病历文本结合,提升诊断准确率(如胃肠神经内分泌肿瘤检出率从 62% 提升至 88%)
实时推理优化: 训练后的LORA 模块可与基座模型合并,生成轻量化模型(如 7B 模型压缩至1.48),支持移动端部署。
四、三种方法对比与选择建议
*选择策略*:
***资源受限场景:*优先选择 LoRA 或 Prefix-tuning,减少显存占用(如 70B 模型全量微调需 1600GB 显存,而 LoRA 仅需 20GB)。
*2. 任务类型:*
- **分类 / 信息抽取:**Prompt-tuning(快速适配)或 LoRA(提升精度)。
- **文本生成:**Prefix-tuning(层间控制)或 LoRA(多模态融合)。
*3. 数据规模****:*****
-
**小样本(<1000 例):**Prompt-tuning 或 Prefix-tuning。
-
**大样本(>10 万例):**LoRA(充分利用数据)。
五、工具推荐
LLaMA-Factory: 集成 LoRA、QLoRA 等技术,支持可视化训练与推理,兼容主流开源模型(如 LLaMA,Qwen).
Hugging Face PEFT: 提供 Prefix-tuning 和 LORA 的 API接口,支持快速实验
通过灵活选择上述方法,开发者可在保持模型性能的同时,显著降低微调成本,加速大模型在垂直领域的落地
如何学习大模型 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 的正确特征了。