小编Toa*_*ley的帖子

微调 GPT2 - 注意掩码和 pad token id 错误

我一直在尝试在 wikitext-2 数据集上微调 GPT2(只是为了帮助自己学习该过程),但我遇到了一条我以前从未见过的警告消息:

\n

“未设置注意掩码和填充令牌 ID。因此,您可能会观察到意外行为。请传递您的输入attention_mask以获得可靠的结果。\n设置pad_token_ideos_token_id:50256 以进行开放式生成。”

\n

这看起来很奇怪,因为我在实例化 tokenizer 时在代码中明确指定了 EOS 令牌:

\n
tokenizer = GPT2Tokenizer.from_pretrained(\'gpt2\', bos_token=\'<|startoftext|>\', eos_token=\'<|endoftext|>\', pad_token=\'<|pad|>\')\n
Run Code Online (Sandbox Code Playgroud)\n

训练在没有崩溃的情况下完成,我的损失在每个时期都有所改善,但是当我推断模型时,它输出绝对的乱码 - 有时只生成一个单词而没有其他任何东西。我认为我收到的警告消息与模型表现不佳之间存在联系。

\n

我从这里获得了训练、有效、测试数据(我使用了 .raw 文件) - https://blog.salesforceairesearch.com/the-wikitext-long-term-dependency-language-modeling-dataset/

\n

我在数据集的原始 txt 文件中手动添加了 <|startoftext|> 和 <|endoftext|> 。生成的训练数据类似于这两个示例(取自文本文件的中间):

\n
...\n<|startoftext|>\n= Perfect Dark ( 2010 video game ) = \n \n Perfect Dark is a remastered release of the first @-@ person shooter video game by the same name . Developed by 4J Studios …
Run Code Online (Sandbox Code Playgroud)

machine-learning tokenize training-data gpt-2 fine-tuning

7
推荐指数
1
解决办法
1万
查看次数