转换器管道中的填充掩码使用

问题描述

我微调了一个 gpt2 语言模型,并使用以下代码行根据我的模型生成文本:

generator = pipeline('text-generation',tokenizer='gpt2',model='data/out') print(generator('从前',max_length=40)[0]['generated_text'])

现在我只想用概率来预测下一个单词。我知道我们可以通过使用“fill-mask”来做到这一点,但我不知道该怎么做。当我将“填充掩码”代替“文本生成”时,出现此错误

"无法识别的配置类 用于这种 AutoModel:AutoModelForMaskedLM。 模型类型应该是 BigBirdConfig、Wav2Vec2Config、ConvBertConfig、LayoutLMConfigdistilBertConfig、AlbertConfig、BartConfig、MBartConfig、CamembertConfig、XLMRobertaConfig、LongformerConfig、RobertaConfig、SqueezeBertConfig、BertConfig、MobileBertConfig、FlaubertConfig、Config、TapConfig、MPFunNetas、FunNetas 之一DebertaConfig、DebertaV2Config、IBertConfig。”。

generator = pipeline('fill-mask',model='data/out') // 这一行给了我上面提到的错误

请告诉我如何解决此问题。任何形式的帮助将不胜感激。 提前致谢。

为了更好的理解,整个代码

从变压器进口( GPT2Tokenizer, DataCollat​​orForLanguageModeling,文本数据集, GPT2LMHeadModel, 训练参数, 培训师, 管道)

train_path = 'parsed_data.txt' test_path = 'parsed_data.txt'

tokenizer = GPT2Tokenizer.from_pretrained("gpt2")

data_collat​​or = DataCollat​​orForLanguageModeling(tokenizer=tokenizer,mlm=False)

train_dataset = TextDataset(tokenizer=tokenizer,file_path=train_path,block_size=128) test_dataset = TextDataset(tokenizer=tokenizer,file_path=test_path,block_size=128)

model = GPT2LMHeadModel.from_pretrained('gpt2')

training_args = TrainingArguments(output_dir = 'data/out',overwrite_output_dir = True,per_device_train_batch_size = 32,per_device_eval_batch_size = 32,learning_rate = 5e-5,num_train_epochs = 3,)

trainer = Trainer(model = model,args = training_args,data_collat​​or=data_collat​​or,train_dataset = train_dataset,eval_dataset = test_dataset)

trainer.train()

trainer.save_model() generator = pipeline('fill-mask',model='data/out')

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)