我正在使用AutoModelForCausalLM
和AutoTokenizer
来生成DialoGPT
的文本输出。
不知何故,即使使用huggingface提供的示例,我仍然会收到以下警告:
正在使用仅解码器架构,但检测到右填充!为了获得正确的生成结果,请在初始化标记器时设置
padding_side='left'
。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
# Let's chat for 5 lines
for step in range(5):
# encode the new user input, add the eos_token and return a tensor in Pytorch
new_user_input_ids = tokenizer.encode(input(">> User:") + tokenizer.eos_token, return_tensors='pt')
# append the new user input tokens to the chat history
bot_input_ids = torch.cat([chat_history_ids, new_user_input_ids], dim=-1) if step > 0 else new_user_input_ids
# generated a response while limiting the total chat history to 1000 tokens,
chat_history_ids = model.generate(bot_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id)
# pretty print last ouput tokens from bot
print("DialoGPT: {}".format(tokenizer.decode(chat_history_ids[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)))
我尝试将padding_side='left'添加到分词器中,但这并没有改变任何东西。 显然(从一些阅读中)DialoGPT希望填充在右侧? 我无法弄清楚这个问题,在我尝试谷歌搜索时也没有多少结果。
我能够通过以下方式抑制警告:
from transformers.utils import logging
logging.set_verbosity_info()
但这似乎不是最好的答案?