THUDM / P-tuning

A novel method to tune language models. Codes and datasets for paper ``GPT understands, too''.
MIT License
923 stars 111 forks source link

lstm的enbedding_dim与预训练模型的embedding_dim不一致的报错? #37

Closed SCU-JJkinging closed 2 years ago

SCU-JJkinging commented 2 years ago

image 直接把项目git到本地跑,只把预训练模型换成了bert-base-cased,就报这个错,请问是什么原因呢?

image 这两个维度不一致怎么复制呢?报错就是这一步操作

Xiao9905 commented 2 years ago

Hi @SCU-JJkinging ,

是维度不一致的问题。原始实验是用的albert-xxlarge-v2,hidden size应该是1024;bert-base-cased是768。由于P-tuning的做法是把prompt位置的input embedding换成external trainable embedding,所以需要保持维度一致。

SCU-JJkinging commented 2 years ago

您好,请问如果用albert-xxlarge-v2的话,是需要把 prompt 的 embedding dim 也设置和albert一样吗?即1024

Xiao9905 commented 2 years ago

@SCU-JJkinging ,

是的。我们的代码应当是默认使用的1024。

SCU-JJkinging commented 2 years ago

好的感谢! image 但是您代码中默认使用的好像是128

SCU-JJkinging commented 2 years ago

还有个问题就是:我发现在分别使用用bert-base-cased 和albert-xxlarge-v2时,在RTE任务上的 acc 相差较大,能达到20%。所以我感觉预训练模型的选择很重要,是与预训练时使用的语料有关系吗?那这种效果的好坏岂不是主要取决于预训练模型的“好坏”呢?谢谢!

Xiao9905 commented 2 years ago

@SCU-JJkinging ,

  1. 这是因为albert-xxlarge-v2使用了Factorized embedding parameterization的技术,将一个1024的embedding分解为128的向量乘上一个128 * 1024的矩阵进行重参数化压缩参数量
  2. 这是显然的。决定任务性能的主要是预训练模型的质量,albert本来就是bert的一个升级版本;另外,不同预训练模型需要不同的超参数进行微调,直接使用我们在albert-xxlarge-v2上的最优超参,一般情况下无法在其他模型上得到最优结果
SCU-JJkinging commented 2 years ago

好的,感谢您的解答!