第四章:大模型(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 伪代码)

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 技术。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐