分享
LLM高效微调
输入“/”快速插入内容
LLM高效微调
Prefix-Tuning:
Prefix-Tuning 固定 PLM 的所有参数,只更新优化特定任务的 prefix
。
因此,在生产部署时,只需要存储一个大型 PLM 的副本和一个学习到的特定任务的 prefix, 每个下游任务只产生非常小的额外的计算和存储开销。
Full VS Emb-only
•
embedding-only表示只有在embedding层添加前缀token,而full 表示每一层都添加前缀token;
•
实验表明:
prefix-tuning
>
embedding-only
>
discrete prompting
Prifix VS Infix
•
prefix-tuning
表示可训练参数放在开头,
infix-tuning
表示可训练
token
放在中间位置
•
结果表明:
prefix-tuning
>
infix-tuning
54%
46%
Prompt-Tuning
prompt-tuning
可以认为是
prefix-tuning
的简化版。
固定整个预训练模型参数,只允许将每个下游任务的额外sse 个可更新的 tokens (不同于
prefix-tuning
, 这里的
tokens
是真实的文本) 前置到输入文本中,也没有使用额外的编码层或任务特定的输出层。
一系列对比实验,都在说明:随着预训练模型参数的增加,一切的问题都不是问题,最简单的设置也能达到极好的效果。
•
Prompt长度影响
:模型参数达到一定量级时,
Prompt
长度为1也能达到不错的效果,
Prompt
长度为20就能达到极好效果。
•
Prompt初始化方式影响
:
Random Uniform
方式明显弱于其他两种,但是当模型参数达到一定量级,这种差异也不复存在。
•
预训练的方式
:
LM Adaptation
的方式效果好,但是当模型达到一定规模,差异又几乎没有了。
•
微调步数影响
:模型参数较小时,步数越多,效果越好。同样随着模型参数达到一定规模,
zero shot
也能取得不错效果。
50%
50%
P-tuning
-
V1版本
💾
P-Tuning
的方法思路与Prefix-Tuning很相近,P-Tuning利用少量连续的embedding参数作为prompt
使GPT更好的应用于NLU任务,而Prefix-Tuning是针对NLG任务设计;同时,P-Tuning只在embedding层增加参数(使用MLP+LSTM初始化),而Prefix-Tuning在每一层都添加可训练参数(使用MLP初始化)。
P-Tuning
提出将
Prompt
转换为可以学习的
Embedding
层,只是考虑到直接对
Embedding
参数进行优化会存在这样两个挑战:
•
Discretenes
:对输入正常语料的
Embedding
层已经经过预训练,而如果直接对输入的
prompt embedding
进行随机初始化训练,容易陷入局部最优。
•
Association
:没法捕捉到
prompt embedding
之间的相关关系。作者提出使用
MLP+LSTM
的方式对
prompt
进行初始化处理