第四章:大模型(LLM)

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

第三节:P-tuning v2


1️⃣ 背景与动机

  • P-tuning(v1) 通过可学习的提示编码器(如 BiLSTM/MLP)生成连续的提示向量,已经比 Prompt Tuning 更强大。

  • 但在更大规模模型(如 GPT-2, GPT-3, BERT-large)上,P-tuning 仍存在:

    • 任务泛化能力不足。

    • 实现复杂(需要设计提示编码器)。

    • 对生成类任务支持有限。

P-tuning v2 被提出,目标是:

  • 统一 NLP 各类任务(分类、生成、抽取等)。

  • 等效替代全参数微调,在效果上接近甚至持平。

  • 同时保持 参数高效(只需微调少量参数)。


2️⃣ 核心思想

P-tuning v2 的核心是 Prefix Tuning + 可学习虚拟 token 的结合:

  1. 每一层 Transformer 的注意力层(Self-Attention),为 Key/Value 添加一组可学习的前缀向量。

  2. 与 Prompt Tuning 不同:

    • Prompt Tuning 只在输入 embedding 层添加提示。

    • P-tuning v2 在所有层注入提示信息,增强模型表达能力。

  3. 相比 P-tuning v1,去掉了复杂的 BiLSTM/MLP 编码器,采用更简洁的实现。


3️⃣ 方法原理

(1) 前缀化注意力机制

在第 l 层注意力中:

\text{Attn}(Q, K, V) = \text{Softmax}\left(\frac{Q [K;K_p]^T}{\sqrt{d}} \right)[V;V_p]

  • K_p, V_p:可学习的前缀向量(prefix embedding)。

  • 将它们拼接到原始 Key/Value 前,使模型在计算注意力时“预先关注”这些前缀信息。

(2) 多层注入
  • 在每一层的 Self-Attention 都加入前缀向量。

  • 前缀向量在不同层共享或独立可学习,灵活可调。


4️⃣ 与其他方法的比较

方法 注入位置 是否逐层 参数开销 效果
Prompt Tuning 输入 embedding 仅输入层 极小 效果有限
P-tuning v1 输入 embedding(编码器生成) 仅输入层 效果较好
Prefix Tuning KV Cache 每层 中等 效果好
P-tuning v2 KV Cache 每层 中等 接近全参数微调

5️⃣ 特点与优势

统一性:可处理分类、生成、抽取等各种任务。
高效性:仅需训练前缀向量(通常占模型参数的 0.1%~1%)。
效果强大:在 GLUE、SuperGLUE 等基准测试中,性能接近甚至超越全参数微调。
简洁实现:无需额外提示编码器,直接在 Transformer 内部注入参数。


6️⃣ PyTorch 伪代码

import torch
import torch.nn as nn

class PrefixLayer(nn.Module):
    def __init__(self, num_heads, prefix_len, dim):
        super().__init__()
        self.prefix_len = prefix_len
        self.num_heads = num_heads
        self.dim = dim

        # 可学习的前缀 Key/Value
        self.prefix_key = nn.Parameter(torch.randn(prefix_len, num_heads, dim))
        self.prefix_value = nn.Parameter(torch.randn(prefix_len, num_heads, dim))

    def forward(self, K, V):
        # 拼接前缀到原始 K/V
        K = torch.cat([self.prefix_key, K], dim=0)
        V = torch.cat([self.prefix_value, V], dim=0)
        return K, V

在实际实现中,需要在 Transformer 的每一层 Attention 前调用该模块。


7️⃣ 总结

  • P-tuning v1:提示编码器生成输入前缀 → 提升了表达能力,但实现复杂。

  • P-tuning v2:直接在每层 Attention 引入可学习前缀 → 简洁高效,效果媲美全参数微调。

  • 地位:P-tuning v2 被认为是 Prompt Tuning/Prefix Tuning 的统一框架,奠定了后续 LoRA、Adapter 等方法的基础。

Logo

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

更多推荐