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

Posted

技术标签:

【中文标题】在运行 huggingface gpt2-xl 模型嵌入索引超出范围时【英文标题】:while running huggingface gpt2-xl model embedding index getting out of range 【发布时间】:2020-05-24 01:57:05 【问题描述】:

我正在尝试运行hugginface gpt2-xl 模型。我从 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 加载代码,如下所示: tokenizer = GPT2Tokenizer.from_pretrained("gpt2-xl") model = 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

查看错误似乎嵌入大小不正确。所以我写了下面这行来专门获取gpt2-xl的配置文件:

config = GPT2Config.from_pretrained("gpt2-xl")

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

config.vocab_size=204483

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于在运行 huggingface gpt2-xl 模型嵌入索引超出范围时的主要内容,如果未能解决你的问题,请参考以下文章

使用 huggingface 库会报错:KeyError: 'logits'

Huggingface AutoTokenizer 无法从本地路径加载

dropout():参数“输入”(位置 1)必须是张量,而不是当使用带有 Huggingface 的 Bert 时的 str

Huggingface 转换器模型返回字符串而不是 logits

使用 Huggingface 变形金刚的聊天机器人

如何将 HuggingFace 的 Seq2seq 模型转换为 onnx 格式