首页 > 解决方案 > 为什么 GPT2Model 的某些权重没有初始化?

问题描述

我正在将 GPT2 预训练模型用于研究项目,当我使用以下代码加载预训练模型时,

from transformers.models.gpt2.modeling_gpt2 import GPT2Model
gpt2 = GPT2Model.from_pretrained('gpt2')

我收到以下警告消息:

GPT2Model 的一些权重没有从 gpt2 的模型检查点初始化,而是重新初始化:['h.0.attn.masked_bias', 'h.1.attn.masked_bias', 'h.2.attn.masked_bias', ' h.3.attn.masked_bias','h.4.attn.masked_bias','h.5.attn.masked_bias','h.6.attn.masked_bias','h.7.attn.masked_bias',' h.8.attn.masked_bias', 'h.9.attn.masked_bias', 'h.10.attn.masked_bias', 'h.11.attn.masked_bias'] 你应该在下游训练这个模型任务能够将其用于预测和推理。

据我了解,它表示上述层的权重不是从预训练模型初始化的。但是我们都知道注意力层('attn')在 GPT2 中非常重要,如果我们不能从预训练模型中获得它们的实际权重,那么使用预训练模型有什么意义呢?

如果有人能向我解释这个并告诉我如何解决这个问题,我真的很感激。

标签: pytorchhuggingface-transformersgpt-2

解决方案


添加了 masked_bias,但与原始实现相比,huggingface 社区提高了速度。由于原始权重已正确加载,因此不应对性能产生负面影响。查看此PR以获取更多信息。


推荐阅读