我正在尝试为生成式问答任务微调gpt2。
基本上我的数据格式类似于:
上下文:Matt今天撞坏了他的车。问题:马特今天过得怎么样?答:坏我正在寻找huggingface文档,以找出如何在自定义数据集上微调GPT2,我确实找到了在此地址微调的说明:https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling
问题是他们没有提供任何关于如何准备数据以便模型可以从中学习的指导。他们提供了不同的可用数据集,但没有一个格式适合我的任务。
如果有更有经验的人能帮助我,我将非常感激。祝你今天愉快!
你现在的任务是模棱两可的,它可以是:
- 分类QnA(答案为分类)
- 通过提取的QnA(答案在文本中)
- 通过语言建模的QnA(答案可以是任何东西)
如果你所有的例子都有Answer: X
,其中X
是分类的(即总是"好", "坏",等等),你可以做分类。
在此设置中,您将拥有文本-标签对:
Context: Matt wrecked his car today.
Question: How was Matt's day?
标签
Bad
对于分类,您可能最好只是微调BERT样式模型(例如RoBERTTa)。
提取如果您的所有示例都有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也有非常强大的llm,还允许您微调模型(通过语言建模),因此您不需要自己运行任何代码。不确定对GPT-2这样的小型车型进行微调能获得多少里程。如果这个项目是为了学习,那么是的,绝对要继续微调GPT-2模型!但是,如果性能是关键,我强烈建议使用像https://cohere.com这样的解决方案,它将会开箱即用。
Finetune GPT ##2
我正在做一些类似于你的任务,我认为最好使用SQUAD格式来微调