
引言近年来以 GPT-4、PaLM-2 等为代表的超大规模语言模型在众多 NLP 任务上刷新了性能上限。然而将这些千亿甚至万亿参数模型完整复制并梯度更新Full Fine-Tuning所产生的计算与存储成本令绝大多数团队望而却步。参数高效微调Parameter‑Efficient Fine‑Tuning, PEFT范式应运而生其核心主张是冻结预训练模型的主体权重仅优化极少量的新增或部分参数即可在多种下游任务上达到与全量微调相当的性能。在 PEFT 的方法谱系中Additive加法型微调策略通过“在模型结构上额外添加可训练组件”来注入任务知识既保持了基础模型通用能力的完整保留又实现了任务的快速适配与切换。本文聚焦 Additive 方法中诞生最早、影响最广泛的一支——Soft Prompt路线并以Prompt‑Tuning为典型代表深入解析其概念、原理、适用场景与实现方法帮助读者仅通过少量“虚拟提示词”即可高效撬动大模型的下游任务能力。关键字参数高效微调Additive PEFTSoft PromptPrompt-Tuning连续提示大模型适配虚拟令牌少样本迁移文章目录1. Additive 微调定义与分类2. Soft Prompt从离散到连续3. Prompt‑Tuning 核心机制4. Prompt‑Tuning 适用场景与局限性5. Prompt‑Tuning 实现示例1. Additive 微调定义与分类Additive 微调指的是在不修改原模型任何预训练权重的前提下显式地在网络的输入层或中间层插入新的可训练参数并通过下游任务的损失信号指导这些新增参数的更新。与 LoRA 等重参数化方法通过低秩矩阵间接修改权重增量不同Additive 方法在“结构层面做加法”具备天然的参数隔离与多任务复用优势每个任务可以独立保存一份轻量级参数包而骨干模型只需加载一次。在 Additive 方法论下主要包含三大类技术Soft Prompt 方法在输入嵌入序列或各层隐藏状态前方拼接可学习的连续向量典型代表有 Prompt‑Tuning、Prefix‑Tuning、P‑Tuning 等。Adapter 方法在 Transformer 子层之间插入小型瓶颈网络通常由降维-非线性-升维构成通过调整内部表示来适配任务。Scale Shift 方法如 LLaMA‑Adapter在注意力计算和前馈层的激活值上施加可学习的缩放与平移因子以极低成本注入任务信号。本文重点剖析 Soft Prompt 这一支因为它直接作用于模型的“输入端”实现极简且效果出人意料。2. Soft Prompt从离散到连续传统 Prompt Engineering 通过手工编写离散的文本前缀Hard Prompt如“将以下句子翻译成英文”来引导模型行为。这种方法存在两个固有痛点设计依赖经验且离散单词无法被梯度直接优化——哪怕只调换一个词也可能引起输出质量的剧烈波动。Soft Prompt连续提示/软提示的核心突破在于将离散提示词泛化为一组连续、可微调的嵌入向量。这些向量并不对应真实词汇但在嵌入空间中与词嵌入具有相同的维度。将它们拼接到输入序列嵌入之前模型在反向传播过程中可以直接对这些 Soft Prompt 向量求梯度并更新从而在连续空间中自动搜索出最优的“任务语义前缀”。理解 Soft Prompt 的关键维度有三表示连续性摆脱离散词表的束缚在平滑的嵌入空间中学习梯度优化稳定且高效。参数隔离性骨干模型完全冻结Soft Prompt 的梯度不会影响预训练知识杜绝灾难性遗忘。可插拔与可组合性每个下游任务只需保存一份数 KB 到数十 KB 的 Soft Prompt 文件运行时动态加载无需重新部署模型实例。从信息论角度看Soft Prompt 相当于在输入嵌入空间中开辟了少量“可学习的上下文变量”由下游任务自行决定读入什么“虚拟上下文”最有利于完成任务这种思路为后续一系列 Prompt 调优方法提供了理论基石。3. Prompt‑Tuning 核心机制Prompt‑Tuning由 Lester 等人在 2021 年的论文《The Power of Scale for Parameter‑Efficient Prompt Tuning》中提出是 Soft Prompt 路线的奠基之作。其做法极为简洁对于一个由 Transformer 解码器构成的语言模型将原始输入 token 序列X [ x 1 , . . . , x n ] X [x_1, ..., x_n]X[x1,...,xn]映射为嵌入矩阵E ∈ R n × d E \in \mathbb{R}^{n \times d}E∈Rn×d然后在E EE前方拼接m mm个可学习的嵌入向量P [ p 1 , . . . , p m ] ∈ R m × d P [p_1, ..., p_m] \in \mathbb{R}^{m \times d}P[p1,...,pm]∈Rm×d得到[ P ; E ] [P; E][P;E]送入冻结的模型前向计算。训练时仅对P PP计算梯度并更新。形式化地损失函数为L − log P θ ( y ∣ [ P ; E ] ) \mathcal{L} -\log P_{\theta}\big(y \mid [P; E]\big)L−logPθ(y∣[P;E])其中θ \thetaθ表示模型全部预训练参数冻结P PP为可训练的 Soft Prompt 参数。关键实验发现参数规模与虚拟tokens数量的关系当模型参数达到百亿级别时仅需 520 个虚拟 token 即可接近全量微调的性能而模型较小时如几亿参数往往需要更多的 Soft Prompt 或更强的初始化策略才能收敛。初始化策略随机初始化虽然可行但使用预训练模型词表中的某些 token 嵌入如任务相关词来初始化P PP通常能加速收敛并提升最终效果。现代实践中还可以使用任务描述文本的嵌入来初始化。与 Prefix‑Tuning 的对比Prefix‑Tuning 在每一层 Transformer的隐藏状态前方都插入可学习向量因此参数总量更大表现力更强但实现更复杂而 Prompt‑Tuning 仅在输入层添加向量更为轻量简洁在多任务服务化场景中优势明显。Prompt‑Tuning 的本质是通过学习一组合适的“虚拟上下文向量”来代替人工设计的提示词前缀这是一种以极低成本撬动大规模语言模型任务迁移能力的优雅方案。4. Prompt‑Tuning 适用场景与局限性Prompt‑Tuning 极小的参数量通常仅几十 KB赋予其在以下场景中的独特优势超大规模模型适配对于 10B 参数以上的模型Prompt‑Tuning 仅训练不到 0.01% 的参数便可在多数下游任务上媲美全量微调且单张消费级 GPU 即可完成训练。多任务快速服务化每个下游任务只需保存一个微小的 Soft Prompt 文件线上推理时按需加载无需为每个任务保留完整的模型实例大幅降低内存占用与服务成本。少样本与领域特化在医疗、法律等数据稀少且专业性强的场景中冻结主干可防止通用知识被覆盖仅让 Soft Prompt 去捕捉领域相关的上下文线索适合少样本或零样本迁移。隐私保护与联邦学习传输数 KB 的 Soft Prompt 远比传输完整模型安全、高效特别适合数据不出域的联邦学习场景各方仅共享 Prompt 参数即可实现协作。持续学习不同任务的 Soft Prompt 相互隔离新增任务不会干扰已部署任务的 Prompt 向量天然缓解灾难性遗忘。局限性模型规模依赖性强对于参数量低于十亿的模型Prompt‑Tuning 的表现往往不及 Prefix‑Tuning 或全量微调甚至不敌于人工设计的硬提示。复杂推理与生成任务当任务需要深度推理、多步逻辑或长文本一致性生成时仅靠少量 Soft Prompt 可能欠拟合此时需借助 P‑Tuning v2 或 Adapter 等方法提升容量。初始化敏感不恰当的随机初始化可能导致收敛缓慢或陷入局部最优需借助文本初始化或多次调参。在工程实践中建议先评估模型规模与任务复杂度若为超大规模模型如 20BPrompt‑Tuning 往往是最轻量且有效的一线方案。5. Prompt‑Tuning 实现示例借助 Hugging Face 的peft库只需数行代码即可完成 Prompt‑Tuning 的配置与训练。以下示例使用 GPT‑2 模型在 SST‑2 情感分类数据集上进行适配展示从模型加载到训练推理的完整流程。5.1 环境准备与配置importtorchfromtransformersimport(AutoModelForCausalLM,AutoTokenizer,Trainer,TrainingArguments,DataCollatorForLanguageModeling)frompeftimportPromptTuningConfig,PromptTuningInit,get_peft_model model_namegpt2tokenizerAutoTokenizer.from_pretrained(model_name)tokenizer.pad_tokentokenizer.eos_token# GPT-2 无 pad tokenmodelAutoModelForCausalLM.from_pretrained(model_name)peft_configPromptTuningConfig(task_typeCAUSAL_LM,# 任务类型prompt_tuning_initPromptTuningInit.TEXT,# 使用文本初始化 Soft Promptnum_virtual_tokens20,# 虚拟令牌数量prompt_tuning_init_textClassify if this review is positive or negative:,tokenizer_name_or_pathmodel_name,)peft_modelget_peft_model(model,peft_config)peft_model.print_trainable_parameters()# 输出示例: trainable params: xxxx || all params: 124439808 || trainable%: 0.00165.2 数据准备将 SST‑2 数据集中的文本与标签组合为语言模型格式前文拼接后接标签指示词例如 “positive” / “negative”进行自回归训练。fromdatasetsimportload_dataset raw_datasetsload_dataset(glue,sst2)deftokenize_function(examples):prompts[fsentence:{sent}\nlabel:forsentinexamples[sentence]]targets[ positiveiflabel1else negativeforlabelinexamples[label]]full_texts[ptforp,tinzip(prompts,targets)]returntokenizer(full_texts,truncationTrue,paddingmax_length,max_length128)tokenized_datasetsraw_datasets.map(tokenize_function,batchedTrue)tokenized_datasetstokenized_datasets.remove_columns([sentence,label,idx])5.3 训练与推理data_collatorDataCollatorForLanguageModeling(tokenizertokenizer,mlmFalse)training_argsTrainingArguments(output_dir./prompt_tuning_sst2,per_device_train_batch_size4,num_train_epochs3,logging_steps50,save_strategyno,learning_rate5e-4,report_tonone,)trainerTrainer(modelpeft_model,argstraining_args,train_datasettokenized_datasets[train],data_collatordata_collator,)trainer.train()推理时仅需输入待分类文本模型将基于训练好的 Soft Prompt 生成后续内容。peft_model.eval()test_sentThis movie is fantastic!inputstokenizer(fsentence:{test_sent}\nlabel:,return_tensorspt)withtorch.no_grad():outputspeft_model.generate(inputs.input_ids,max_new_tokens5)print(tokenizer.decode(outputs[0],skip_special_tokensTrue))# 预期输出部分包含 positive如果需要更轻量地保存和加载 Prompt 权重可直接保存peft_model的 adapter 部分。peft_model.save_pretrained(./prompt_tuning_weights)# 加载时frompeftimportPeftModel loadedPeftModel.from_pretrained(model,./prompt_tuning_weights)5.4 手动实现思路若想深入理解 Prompt‑Tuning 底层逻辑可手动在嵌入层拼接 Soft Prompt 参数并通过register_forward_pre_hook或直接改写forward方法实现。核心步骤为冻结骨干参数 → 创建nn.Parameter形状为(num_virtual_tokens, hidden_dim)→ 在输入嵌入前torch.cat→ 调整attention_mask对应前缀部分全部设为 1。该实现可帮助读者掌握 Soft Prompt 的数学本质但在工程中建议直接使用peft以避免细节错误。总结Prompt‑Tuning 作为 Additive PEFT 的里程碑方法用极简的“连续前缀”设计重新定义了高效适配的范式。它以数 KB 的参数量、完全隔离的任务携带能力和不亚于全量微调的性能在大模型时代展现出强大的生存力。尽管在模型规模较小或任务高度复杂时存在局限但 Prompt‑Tuning 与 Prefix‑Tuning、P‑Tuning v2 等后继方法共同构成的 Soft Prompt 技术家族至今仍是参数高效微调领域最活跃、最实用的分支之一。可以预见随着模型规模的进一步膨胀和轻量级服务化需求的日益增长这种“加微而不改重”的适配思想将会在更多实际落地场景中持续发光。