【第四章:大模型(LLM)】10.微调方法与实战-(1)Prompt Tuning

第四章:大模型(LLM)

第十部分:微调方法与实战

第一节:Prompt Tuning


1. 背景与动机

大规模语言模型(LLM)在预训练过程中学习了通用语言知识和世界知识,但在具体下游任务(如情感分类、问答、摘要生成)中,直接使用模型往往表现不足。

传统方法如 全参数微调(Full Fine-tuning) 需要更新所有模型参数,代价昂贵且存储开销大。为此,人们提出了 参数高效微调(PEFT, Parameter-Efficient Fine-Tuning) 方法,其中 Prompt Tuning 是最早期、最具代表性的一种。


2. Prompt Tuning 的核心思想

  • 核心理念 :冻结大模型参数,只在输入端加入 可学习的提示向量(soft prompt) 来引导模型完成任务。

  • 与手工 Prompt 的区别

    • 手工 Prompt → 通过人类编写文本提示(例如:"请判断这句话的情感是积极还是消极")。

    • Prompt Tuning → 学习一组连续的向量(embedding),模型直接将其视作输入的一部分。


3. 方法原理

  1. 冻结 LLM 参数:保持预训练好的 Transformer 权重不变。

  2. 添加可训练的 Prompt 向量

    • 在输入序列前(或中间、后部)插入 m 个可学习的 embedding。

    • 这些 embedding 与词向量维度相同,初始化可随机或从词表中选取。

  3. 联合训练

    • 仅更新这 m 个 Prompt embedding 的参数,使用下游任务的监督信号进行优化。

    • 模型前向计算时,等价于 "输入 = prompt embedding + 原始输入 embedding"


4. Prompt Tuning 的特点

  • 优点

    • 极大减少需要训练的参数(通常 < 0.1%)。

    • 不改变原始模型结构,兼容性好。

    • 存储友好(不同任务只需保存一份 Prompt 向量)。

  • 缺点

    • 表达能力有限,尤其在小模型或复杂任务上,效果可能不如 LoRA、Adapter 等方法。

    • 对 Prompt 位置、长度等较为敏感。


5. 与相关方法对比

方法 参数开销 训练方式 适用场景
Full Fine-tuning 100% 更新所有参数 高资源场景,模型可控性强
Prompt Tuning <0.1% 学习软 Prompt embedding 少量参数更新,简单任务
Prefix Tuning ~0.1-1% 在每层输入 KV Cache 前添加可学习向量 更强表达能力
LoRA ~0.1-1% 低秩矩阵分解更新权重 复杂任务,兼容性强

6. 实战案例(PyTorch 伪代码)

python 复制代码
import torch
import torch.nn as nn

class PromptTuningWrapper(nn.Module):
    def __init__(self, base_model, prompt_length=20, hidden_size=4096):
        super().__init__()
        self.base_model = base_model
        # 可学习的 Prompt 向量
        self.prompt_embeddings = nn.Parameter(
            torch.randn(prompt_length, hidden_size)
        )

    def forward(self, input_ids, attention_mask=None):
        # 获取原始 embedding
        inputs_embeds = self.base_model.model.embed_tokens(input_ids)
        batch_size = inputs_embeds.size(0)

        # 将 prompt 拼接到输入前
        prompt = self.prompt_embeddings.unsqueeze(0).expand(batch_size, -1, -1)
        inputs_with_prompt = torch.cat([prompt, inputs_embeds], dim=1)

        # 调用原始模型
        return self.base_model(
            inputs_embeds=inputs_with_prompt,
            attention_mask=None  # 注意 mask 要适配
        )

7. 总结

Prompt Tuning 作为参数高效微调(PEFT)的先驱方法,为 LLM 在下游任务中的快速适配提供了轻量化解决方案。

它适合 资源受限、任务较简单 的场景,是研究与教学中的入门必学方法。

但在实际应用中,随着任务复杂度提升,往往需要结合 Prefix Tuning、LoRA、Adapter 等更强大的 PEFT 技术。

相关推荐
AI绘画哇哒哒12 小时前
【值得收藏】手把手教你用PyTorch构建Transformer英汉翻译系统,从训练到推理
人工智能·pytorch·ai·语言模型·程序员·大模型·transformer
CoderJia程序员甲13 小时前
GitHub 热榜项目 - 日榜(2025-09-04)
ai·开源·大模型·github·ai教程
爱喝白开水a13 小时前
从零开始学无监督学习:图像混合与标签平滑技术详解,收藏不走丢
人工智能·深度学习·学习·ai·大模型·编程·ai大模型
relis14 小时前
大语言模型推理的幕后英雄:深入解析Prompt Processing工作机制
人工智能·语言模型·prompt
zzywxc78714 小时前
深入探讨AI三大领域的核心技术、实践方法以及未来发展趋势,结合具体代码示例、流程图和Prompt工程实践,全面展示AI编程的强大能力。
人工智能·spring·机器学习·ios·prompt·流程图·ai编程
relis14 小时前
大语言模型推理揭秘:Prompt Processing阶段如何高效处理输入提示?
人工智能·语言模型·prompt
relis15 小时前
解密llama.cpp:从Prompt到Response的完整技术流程剖析
prompt·llama
JasonRobert15 小时前
Datawhale AI夏令营复盘[特殊字符]:我如何用一个Prompt,在Coze Space上“画”出一个商业级网页?
人工智能·prompt
悟乙己15 小时前
如何区分 Context Engineering 与 Prompt Engineering
android·java·prompt
喜欢吃豆17 小时前
LangGraph 深度解析(三):构建可观测、交互式 AI 智能体的流式架构权威指南
人工智能·python·算法·架构·大模型