最近在研究大模型落地方案,看到目前大模型比较好的一种微调方式是P-tuning,借鉴学习内容,作此记录。
转载:
原文链接:大模型微调之P-tuning方法解析
Part1前言
Bert时代,我们常做预训练模型微调(Fine-tuning),即根据不同下游任务,引入各种辅助任务loss和垂直领域数据,将其添加到预训练模型中,以便让模型更加适配下游任务的方式。每个下游任务都存下整个预训练模型的副本,并且推理必须在单独的批次中执行。
那么能不能将所有自然语言处理的任务转换为语言模型任务?就是所有任务都可以被统一建模,任务描述与任务输入视为语言模型的历史上下文,而输出则为语言模型需要预测的未来信息。
因此,Prompt[1]新范式被提出,无需要fine-tune,让预训练模型直接适应下游任务。Prompt方式更加依赖先验,而 fine-tuning 更加依赖后验。
Part2 P-tuning
本文所提到的P-tuning有两个版本。
论文GPT Understands, Too[2]中的Prompt tuning,在本文行文过程中称为P-tuning v1,对应GitHub 代码:
https://github.com/THUDM/P-tuning
P-Tuning v2[3]在论文《P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》中提出,GitHub代码:
https://github.com/THUDM/P-tuning-v2
1.prefix-tuning
如果分析 P-tuning,那不得不提到prefix-tuning技术[4],相对于fine-tuning,在调节模型的过程中只优化一小段可学习的continuous task-specific vector(prefix)而不是整个模型