禁止 HuggingFace 日志记录警告:“将 `pad_token_id` 设置为 `eos_token_id`:{eos_token_id} 以进行开放式生成。”

Ryl*_*fer 34 huggingface-transformers huggingface-tokenizers

在 HuggingFace 中,每次调用pipeline()对象时,我都会收到警告:

`"Setting `pad_token_id` to `eos_token_id`:{eos_token_id} for open-end generation."
Run Code Online (Sandbox Code Playgroud)

如何在不抑制所有日志记录警告的情况下抑制此警告?我想要其他警告,但我不想要这个。

小智 52

该警告针对 HuggingFace 完成的任何文本生成任务。此处对此进行了解释,您可以在此处查看代码。您可以通过手动将 设为pad_token_id来避免该警告eos_token_id

那就是当你打电话的时候

model.generate(**encoded_input)
Run Code Online (Sandbox Code Playgroud)

只需将其更改为

model.generate(**encoded_input, pad_token_id=tokenizer.eos_token_id)
Run Code Online (Sandbox Code Playgroud)

这样就可以消除错误。但是,我还没有找到直接从管道接口进行设置的方法。我猜您可以将一些参数传递给 ArgumentHandler。但我没试过。


chi*_*lub 11

对于文本生成管道,您需要pad_token_id在调用中设置generator以抑制警告:

from transformers import pipeline

generator = pipeline('text-generation', model='gpt2')
sample = generator('test test', pad_token_id=generator.tokenizer.eos_token_id)
Run Code Online (Sandbox Code Playgroud)