在运行 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
模型。
我更改了tokenizer
和model
加载代码,如下所示:
tokenizer = GPT2Tokenizer.from_pretrained("gpt2-xl")
model = GPT2LMHeadModel.from_pretrained('gpt2-xl')
tokenizer
和 model
完美加载。但我在以下行出现错误:
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