RUCAIBox/TextBox

调用微调后的blenderbot_small-90M模型报错

Closed this issue · 8 comments

使用run_textbox.py --model=Blenderbot-Small --model_path=facebook/blenderbot_small-90M --dataset=dd 生成微调后的chekpoint文件夹,重命名为blenderbot_small-90M,然后调用该模型,报错

Exception: Error while initializing BPE: Token _</w> out of vocabulary

代码:
from transformers import AutoTokenizer, pipeline, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("~/blenderbot_small-90M")
model =AutoModelForSeq2SeqLM.from_pretrained("~/blenderbot_small-90M")
predict = pipeline("text2text-generation", model=model, tokenizer=tokenizer)
text = "hello"
pred = predict(text)
print(pred)

能否展示一下checkpoint文件夹下的具体内容?
此外不建议混合使用textbox和hugging face的pipeline,我们并未作为这样的测试。

image
image

checkpoint 文件夹下内容。
不使用pipeline的情况下,也是报相同的报错:

代码:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("/Users/yukaiwei/work/temp/blenderbot_small-90M")
model = AutoModelForSeq2SeqLM.from_pretrained("/Users/yukaiwei/work/temp/blenderbot_small-90M")

msg = "hello"

inputs = tokenizer(msg, return_tensors="pt")
outputs = model.generate(
**inputs,
max_length=1000
)

outputs = tokenizer.batch_decode(
outputs,
skip_special_tokens=True,
)

print(outputs)

头文件的AutoTokenizer和AutoModelForSeq2SeqLM替换为 BlenderbotSmallTokenizer, BlenderbotSmallForConditionalGeneration 之后可以执行推理了。但是现在的问题是推理出的内容异常。

代码:
from transformers import BlenderbotSmallTokenizer, BlenderbotSmallForConditionalGeneration

tokenizer = BlenderbotSmallTokenizer.from_pretrained("/Users/yukaiwei/work/temp/blenderbot_small-90M")
model = BlenderbotSmallForConditionalGeneration.from_pretrained("/Users/yukaiwei/work/temp/blenderbot_small-90M")
msg = "hello"
inputs = tokenizer(msg, return_tensors="pt")
outputs = model.generate(
**inputs,
max_length=30
)
outputs = tokenizer.batch_decode(
outputs,
skip_special_tokens=True,
)
print(outputs)

打印内容:
['𐬀 𐬀 𐬀 奎 奎 奎 cwcwcwbuccaneers buccaneers buccaneers 喊喊喊依依依incorrectly incorrectly incorrectly 依依editor editor editor 依依@@']

可以的话请使用textbox的命令行进行生成,因为checkpoint是由textbox生成的
blenderbot-small有一些特殊性,直接调用hugging face会产生问题

可以给一个textbox的对话生成命令行例子吗

能否说明你一下你的需求,理论上textbox支持end2end训练+生成,在dd上训练好的模型会直接在dd的测试集上进行生成,结果在generation.txt中

我想使用textBox生成新的对话模型后,使用新模型进行推理。不知道textBox是否支持单条数据推理。
eg: textbox modelPath --input xxx(对话内容/对话内容文件)
使用类似的命令输出推理结果。

你可以在把新的数据写在test.src中来进行推理