PEFT 文档
软提示
并获得增强的文档体验
开始使用
软提示
训练大型预训练语言模型非常耗时且计算密集。随着模型尺寸持续增长,人们对更高效的训练方法(如提示学习)越来越感兴趣。提示学习通过包含描述任务甚至演示任务示例的文本提示,为一个特定的下游任务预训练一个冻结的预训练模型。通过提示学习,您可以避免为每个下游任务完全训练一个单独的模型,而是使用相同的冻结预训练模型。这样做更容易,因为您可以将同一模型用于多个不同的任务,并且训练和存储一小组提示参数比训练模型的所有参数效率更高。
提示学习方法分为两类:
- 硬提示是手动制作的文本提示,带有离散的输入 tokens;缺点是创建好的提示需要付出很多努力
- 软提示是可学习的张量,与输入嵌入连接,可以针对数据集进行优化;缺点是它们不是人类可读的,因为您没有将这些“虚拟 tokens”与真实单词的嵌入进行匹配
本概念指南简要概述了 🤗 PEFT 中包含的软提示方法:prompt tuning、prefix tuning、P-tuning 和 multitask prompt tuning。
Prompt tuning

Prompt tuning 是为 T5 模型上的文本分类任务开发的,所有下游任务都被转换为文本生成任务。例如,序列分类通常为文本序列分配单个类别标签。通过将其转换为文本生成任务,构成类别标签的 tokens 被生成。Prompt 作为一系列 tokens 添加到输入中。通常,模型参数是固定的,这意味着 prompt tokens 也由模型参数固定。
prompt tuning 背后的关键思想是 prompt tokens 具有自己的参数,这些参数是独立更新的。这意味着您可以保持预训练模型的参数冻结,而仅更新 prompt token 嵌入的梯度。结果与训练整个模型的传统方法相当,并且 prompt tuning 性能随着模型尺寸的增加而扩展。
请查看 Prompt tuning for causal language modeling,获取有关如何使用 prompt tuning 训练模型的逐步指南。
Prefix tuning

Prefix tuning 是为 GPT 模型上的自然语言生成 (NLG) 任务设计的。它与 prompt tuning 非常相似;prefix tuning 也将一系列特定于任务的向量添加到输入的前面,这些向量可以被训练和更新,同时保持预训练模型其余参数的冻结。
主要区别在于,前缀参数被插入到所有的模型层中,而 prompt tuning 仅将 prompt 参数添加到模型输入嵌入中。前缀参数也由单独的前馈网络 (FFN) 优化,而不是直接在软提示上训练,因为它会导致不稳定并降低性能。FFN 在更新软提示后被丢弃。
结果,作者发现,尽管参数减少了 1000 倍,但 prefix tuning 的性能与完全微调模型相当,并且在低数据设置中表现更好。
请查看 Prefix tuning for conditional generation,获取有关如何使用 prefix tuning 训练模型的逐步指南。
P-tuning

P-tuning 是为自然语言理解 (NLU) 任务和所有语言模型设计的。它是软提示方法的另一种变体;P-tuning 还添加了一个可训练的嵌入张量,可以对其进行优化以找到更好的提示,并且它使用 prompt 编码器(双向长短期记忆网络或 LSTM)来优化 prompt 参数。不过,与 prefix tuning 不同的是
- prompt tokens 可以插入到输入序列中的任何位置,并且不限于仅在开头
- prompt tokens 仅添加到输入中,而不是将它们添加到模型的每一层
- 引入锚 tokens 可以提高性能,因为它们指示输入序列中组件的特征
结果表明,P-tuning 比手动制作提示更有效,并且使类似 GPT 的模型能够在 NLU 任务上与类似 BERT 的模型竞争。
请查看 P-tuning for sequence classification,获取有关如何使用 P-tuning 训练模型的逐步指南。
多任务 Prompt Tuning

多任务 Prompt Tuning (MPT) 从数据中学习一个用于多种任务类型的单一 prompt,该 prompt 可以为不同的目标任务共享。其他现有方法为每个任务学习一个单独的软提示,这些软提示需要被检索或聚合以适应目标任务。MPT 包括两个阶段
- 源训练 - 对于每个任务,其软提示被分解为特定于任务的向量。特定于任务的向量相乘在一起形成另一个矩阵 W,并且在 W 和共享提示矩阵 P 之间使用 Hadamard 积来生成特定于任务的提示矩阵。特定于任务的提示被提炼成一个在所有任务之间共享的单一提示矩阵。此提示通过多任务训练进行训练。
- 目标适应 - 为了使单一提示适应目标任务,初始化一个目标提示,并将其表示为共享提示矩阵和特定于任务的低秩提示矩阵的 Hadamard 积。

上下文感知 Prompt Tuning (CPT)

上下文感知 Prompt Tuning (CPT) 旨在通过仅优化上下文嵌入来增强少样本分类。这种方法结合了上下文学习 (ICL)、Prompt Tuning (PT) 和对抗优化的思想,专注于使模型适应既参数高效又有效。在 CPT 中,仅优化特定的上下文 token 嵌入,而模型的其余部分保持冻结。为了防止过拟合和保持稳定性,CPT 使用受控扰动来限制上下文嵌入在定义范围内的允许更改。此外,为了解决近因偏差现象(即上下文中靠近末尾的示例往往优先于较早的示例),CPT 应用衰减损失因子。
请查看 Example,获取有关如何使用 CPT 训练模型的逐步指南。
< > 在 GitHub 上更新