while 运行 huggingface gpt2-xl 模型嵌入索引超出范围

while running huggingface gpt2-xl model embedding index getting out of range

我正在尝试 运行 hugginface gpt2-xl model. I ran code from the quickstart 加载小型 gpt2 模型并通过以下代码生成文本的页面:

from transformers import GPT2LMHeadModel, GPT2Tokenizer
import torch

tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained('gpt2')

generated = tokenizer.encode("The Manhattan bridge")
context = torch.tensor([generated])
past = None

for i in range(100):
    print(i)
    output, past = model(context, past=past)
    token = torch.argmax(output[0, :])

    generated += [token.tolist()]
    context = token.unsqueeze(0)

sequence = tokenizer.decode(generated)

print(sequence)

这运行宁完美。然后我尝试运行gpt2-xl模型。 我更改了 tokenizermodel 加载代码,如下所示: 分词器 = GPT2Tokenizer.from_pretrained("gpt2-xl") 模型 = GPT2LMHeadModel.from_pretrained('gpt2-xl')

tokenizermodel 完美加载。但是我在以下行中收到错误消息:

output, past = model(context, past=past)

错误是:

RuntimeError: index out of range: Tried to access index 204483 out of table with 50256 rows. at /pytorch/aten/src/TH/generic/THTensorEvenMoreMath.cpp:418

看error好像embedding size不对。所以我写了以下行来专门获取 gpt2-xl:

的配置文件
config = GPT2Config.from_pretrained("gpt2-xl")

但是,这里vocab_size:50257 所以我通过以下方式明确更改了值:

config.vocab_size=204483

然后在打印了config之后,我可以看到上一行在配置中生效了。但是,我仍然遇到同样的错误。

这实际上是我报告的一个问题,他们修复了它。 https://github.com/huggingface/transformers/issues/2774