我正在尝试微调 gpt2 以实现生成式问答任务。
基本上我的数据格式类似于:
背景:马特今天撞坏了他的车。 问:马特这一天过得怎么样? 答案:不好
我正在查看 Huggingface 文档,以了解如何在自定义数据集上微调 GPT2,并且我确实在此地址找到了有关微调的说明: https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling
问题在于,他们没有提供任何关于如何准备数据以便模型可以从中学习的指导。他们提供了可用的不同数据集,但没有一个格式适合我的任务。
如果有更多经验的人可以帮助我,我将非常感激。
祝你有美好的一天!
您现在的任务不明确,可能是以下任何一个:
如果所有示例都有
Answer: X
,其中 X
是分类的(即始终“好”、“坏”等...),则可以进行分类。
在此设置中,您将拥有文本标签对:
文字
Context: Matt wrecked his car today.
Question: How was Matt's day?
标签
Bad
对于分类,您可能最好只微调 BERT 风格的模型(例如 RoBERTa)。
如果所有示例都有
Answer: X
,其中 X
是文本中的一个单词(或连续单词)(例如),那么最好使用 BERT 进行 SQuAD 式微调风格的模型。在此设置中,您的输入(基本上)是 text, start_pos, end_pos
三元组:
文字
Context: In early 2012, NFL Commissioner Roger Goodell stated that the league planned to make the 50th Super Bowl "spectacular" and that it would be "an important game for us as a league".
Question: Who was the NFL Commissioner in early 2012?
起始位置、结束位置
6, 8
注意:令牌课程位置的开始/结束位置值,因此这些值将取决于您如何对输入进行令牌化
在此设置中,您最好使用 BERT 风格的模型。事实上,huggingface hub 上已经有了在 SQuAD(和类似数据集) 上训练的模型。他们应该已经擅长这些开箱即用的任务(但您始终可以在此基础上进行微调)。
如果你所有的例子都有
Answer: X
,其中X
基本上可以是任何东西(它不需要包含在文本中,并且不是分类的),那么你需要进行语言建模。
在此设置中,您必须使用 GPT 样式模型,并且您的输入将是整个文本:
Context: Matt wrecked his car today.
Question: How was Matt's day?
Answer: Bad
不需要标签,因为文本本身就是标签(我们要求模型为每个单词预测下一个单词)。像 GPT-3 这样的大型模型应该擅长这些任务,无需任何微调(如果你给它正确的提示+示例),但当然,这些是在 API 后面访问的。 https://cohere.com 还拥有非常强大的法学硕士,还允许您微调模型(通过语言建模),因此您不需要自己运行任何代码。不确定通过微调 GPT-2 这样的较小模型可以获得多少里程。如果这个项目是为了学习,那么是的,一定要继续微调 GPT-2 模型!但如果性能是关键,我强烈建议使用像 https://cohere.com 这样的解决方案,它开箱即用。
我正在做与你的任务类似的事情,我认为使用 SQUAD 格式进行微调更好