目录一、主流的 PEFT 方法分类一添加式微调Additive二重参数化微调Reparameterized三局部选择式微调Selective/Sparse四量化感知与融合式Quantization-aware / Hybrid二、Prefix-Tuning一核心思想二为什么叫“Prefix”而不是“Prompt”三、P-tuning一P-Tuning v1让提示“动”起来二P-Tuning v2向 Prefix-Tuning 靠拢四、Prompt-tuning一Prompt-Tuning最简版二Prompt-Tuning、P-Tuning v1 与 P-Tuning v2 对比参数高效微调PEFT方法主要可以归纳为几个核心流派添加式、重参数化、提示学习、局部选择式以及近年来兴起的融合式与量化感知方法。一、主流的 PEFT 方法分类一添加式微调Additive通过向模型插入新的、可训练的小模块来适配任务原模型参数冻结。Adapter在 Transformer 层间插入瓶颈结构降维-升维代表如 Houlsby Adapter、Parallel Adapter并行结构推理更友好Prefix-Tuning在每一层的 Key/Value 前拼接可学习的连续向量前缀引导注意力计算Prompt-Tuning (P-Tuning)P-Tuning 引入 LSTM 生成连续提示P-Tuning v2 则是将前缀应用到每一层效果更强是目前最接近全量微调的方法之一。二重参数化微调Reparameterized利用低秩分解等数学变换用极少的参数去近似权重更新量。LoRA最主流的方法通过低秩矩阵 BA 旁路更新权重 (WBA)推理时可合并零延迟LoRA 变体DoRA权重分解、AdaLoRA自适应秩、VeRA共享随机矩阵、PiSSA 等旨在提升精度或进一步压缩参数。三局部选择式微调Selective/Sparse只选择模型中的一小部分参数进行更新。BitFit仅训练模型中的偏置项bias极度轻量。其他变体选择性地更新注意力层或 FFN 层的特定参数子集。四量化感知与融合式Quantization-aware / Hybrid结合量化技术或混合多种策略以追求极致的显存效率。QLoRA在4-bit 量化的冻结模型上应用 LoRA使得在单张民用显卡上微调大模型成为可能。UniPELT将 Adapter、LoRA、Prefix-Tuning 等通过门控机制动态组合博采众长二、Prefix-TuningPrefix-tuning前缀微调 是 Li Liang 2021 提出的一种 PEFT 方法主要用于自然语言处理任务。一核心思想核心思想不改模型任何参数只在输入前拼接一段可学习的“虚拟token”通过训练这段前缀来适配下游任务。不训模型只训“提示词”关键洞察Transformer的每一层都会计算Key和ValueK W K ⋅ h , V W V ⋅ h KW_K\cdot h, \ VW_V\cdot hKWK​⋅h,VWV​⋅hPrefix-Tuning 的想法在每层的Key / Value前面拼接一段可学习的前缀向量K ′ [ P K ; K ] , V ′ [ P V ; V ] K [P_K;K], \ V[P_V;V]K′[PK​;K],V′[PV​;V]这样注意力计算时所有真实 token 都会“看到”这段前缀从而被它引导。简化版代码实现只修改注意力层的K / Vimporttorchimporttorch.nnasnnclassPrefixAttention(nn.Module):def__init__(self,d_model,nhead,prefix_len):super().__init__()self.d_modeld_model self.nheadnhead self.prefix_lenprefix_len# 每层自己的前缀 Key 和 Valueself.prefix_keynn.Parameter(torch.randn(prefix_len,d_model))self.prefix_valuenn.Parameter(torch.randn(prefix_len,d_model))self.W_qnn.Linear(d_model,d_model)self.W_knn.Linear(d_model,d_model)self.W_vnn.Linear(d_model,d_model)self.W_onn.Linear(d_model,d_model)defforward(self,x):B,n,dx.shape Qself.W_q(x)# [B, n, d]Kself.W_k(x)# [B, n, d]Vself.W_v(x)# [B, n, d]# 扩展前缀到 batch 维度P_Kself.prefix_key.unsqueeze(0).expand(B,-1,-1)# [B, l, d]P_Vself.prefix_value.unsqueeze(0).expand(B,-1,-1)# [B, l, d]# 拼接前缀Ktorch.cat([P_K,K],dim1)# [B, ln, d]Vtorch.cat([P_V,V],dim1)# [B, ln, d]# 注意力计算attntorch.softmax(Q K.transpose(-2,-1)/(d**0.5),dim-1)outattn Vreturnself.W_o(out)二为什么叫“Prefix”而不是“Prompt”核心区别Prompt离散的、人写的、只在输入层Prefix连续的、学出来的、每一层都有Prompting 与 Prefix-Tuning 对比维度Prompting提示工程Prefix-Tuning提示形式离散的文本 token连续的向量是否可学习否人工设计是梯度更新位置输入层每一层参数量0少量0.1%~1%是否需要改模型否否但需保存前缀Prefix-Tuning的主要优点参数效率高仅微调前缀部分的参数而冻结预训练模型的所有参数训练效率高由于前缀的参数量远小于整个模型的参数量训练过程更快迁移性强前缀可以被视为一种可迁移的提示可应用于多种任务。Prefix-Tuning的局限对于某些任务前缀长度的选择较为关键过短可能不足以引导模型完成任务而过长则会增加训练成本在一些特定任务上Prefix-tuning的表现可能不如全参数微调因为它只能影响输入特征而无法修改模型的内部参数。三、P-tuningP-tuning是一种参数高效的微调方法专注于通过优化连续的提示prompt向量来提高预训练语言模型在下游任务中的性能。P-Tuning和 Prefix-Tuning 一样冻结整个预训练模型只训练一小段可学习的连续向量soft prompt。一P-Tuning v1让提示“动”起来P-Tuning v1 的出发点是解决离散提示Discrete Prompt 的痛点人工设计的模板如 “The capital of Britain is [MASK]”对措辞极度敏感换一个词效果就可能大幅波动且离散 token 无法通过梯度直接优化。P-Tuning v1 的做法是把模板中的部分或全部 token 替换为可微的连续向量。具体来说P-Tuning v1 引入了几个关键设计Prompt Encoder使用一个 LSTMMLP 来生成这些虚拟 token 的嵌入而不是直接随机初始化这样模型可以学到虚拟 token 之间的依赖关系收敛更快P MLP ( LSTM ( P 0 ) ) P\text{MLP}(\text{LSTM}(P_0))PMLP(LSTM(P0​))灵活的插入位置连续提示不一定要放在开头可以插入到输入序列的中间比如 [前提][continuous tokens][假设][MASK] 这种形式Anchor Token在连续提示之间显式地插入一些离散的锚点词如标点 ?帮助模型更好地优化模板。二P-Tuning v2向 Prefix-Tuning 靠拢P-Tuning v1 虽然比离散提示好但在中小规模模型如 BERT上表现一般且难以处理序列标注这类任务。P-Tuning v2 做出了一个关键改动将连续提示注入到Transformer 的每一层而不仅仅是输入 embedding 层。P-Tuning v2 在思想上与 Prefix-Tuning 高度一致——都是在每一层的 Key/Value 前拼接可学习的向量。实际上在 HuggingFace 的 PEFT 库中P-Tuning v2 和 Prefix-Tuning 就是通过同一个 PrefixEncoder 方法实现的。P-Tuning v2 同时去掉了 v1 中复杂的 LSTM 编码器采用更简洁的 MLP 或直接优化并支持多任务学习。这些改进让它在从 300M 到 10B 的各种规模模型上性能都能接近全量微调解决了 Prompt-Tuning 在小模型上失效的问题。四、Prompt-tuningPrompt-Tuning 是最简版P-Tuning 是它的增强版P-Tuning v2 则进一步演化与 Prefix-Tuning 融合。一Prompt-Tuning最简版Prompt-tuning是一种专注于优化提示prompt来提升预训练语言模型在下游任务中性能的技术。它通过对提示部分进行训练而不修改模型参数从而实现对大规模语言模型的高效适应。Prompt-tuning能够以较少的参数调整获得接近甚至超过传统微调方法的性能尤其适用于大规模预训练模型如GPT-3、T5等。h 0 [ P ; Embed ( x ) ] h_0[P;\text{Embed}(x)]h0​[P;Embed(x)]其中P ∈ R l × d P \in \mathbb{R}^{l\times d}P∈Rl×d表示可学习软提示Prompt-Tuning只在输入层拼接后续层完全不变。二Prompt-Tuning、P-Tuning v1 与 P-Tuning v2 对比维度Prompt-TuningP-Tuning v1P-Tuning v2前缀位置只在输入层输入层每一层生成方式直接优化LSTM MLP直接优化 / MLP插入位置固定开头灵活插入每层 K/VAnchor Token无有无参数量极少少少适用规模大模型1B中小模型各种规模代表任务分类NLUNLU 序列标注与 Prefix 关系无关无关高度接近He et al., 2021 提出统一框架把所有 PEFT 方法看作“对 hidden state 的修改”h h base Δ h hh_{\text{base}}\Delta hhhbase​Δh各 PEFT 方法的 Δh 来源方法Δh 来源Prompt-Tuning输入层前缀P-Tuning v1LSTM 生成的输入前缀P-Tuning v2每层 K/V 前缀Prefix-Tuning每层 K/V 前缀Adapter瓶颈层LoRA权重低秩更新