我使用T5-base为我的模型,当我做model.generate
时,它似乎正在生成一些合理的东西。但我的问题是怎么做到的?
这个模型的解码器部分需要一个开始令牌来开始解码,不是吗?它是如何知道第一个令牌应该是什么样子的呢?
或者我在应该包含令牌的地方做错了训练?
如果需要,这里是一个代码示例,我使用model.generate
。
编辑1
除了下面的答案,我发现有一个model.config.decoder_start_token_id
。这不一定是<bos>
。在T5/Flan-T5
的情况下,它最终是<pad>
。
这已经在generate
方法中完成了,该方法是在Huggingface Transformers的PyTorch部分中使用GenerationMixin
实现的。即使为生成提供了前缀,也会显式添加BOS(序列的开头)令牌。默认的生成算法是波束搜索。