自监督预训练是在没有指令数据集或人类偏好的情况下,通过文本文档进行LMs的预训练和微调的一种机制。这个机制实际上很简单:将每个文档视为一系列标记,创建标记窗口作为输入,并使用下一个标记作为输出进行预测。
在Ludwig中,我们现在有能力以这种方式训练模型,但我们还没有实现窗口数据转换的功能,这使得它变得困难。因此,建议的功能是让用户能够无缝地在一组文档上进行预训练和微调。
理想情况下,该功能可以分为以下几点:
- 编写一个预处理函数,给定一个文档,为自监督训练创建输入和输出
- 将Ludwig配置系统扩展到包括一个转换部分,该部分可以包含上述函数
- 优化上述函数,使其能够在流水线/批处理/流式/缓冲模式下工作,以避免产生大量重复的数据
6条答案
按热度按时间qqrboqgw1#
类似于torch_geometric中的Dataset概念会很好,并且可以容纳类似的事情。
https://pytorch-geometric.readthedocs.io/en/latest/generated/torch_geometric.data.Dataset.html#torch_geometric.data.Dataset
从概念上讲,这将把转换部分移动为数据集的属性。然而,我理解基于yaml的工作流程更适合提出的添加。
jw5wzhpr2#
我来这里是为了更多地了解Ludwig,我可以开始工作了。我相信在您的指导下,我能成功地合并一个PR。我需要先被指派吗?
wko9yo5t3#
对不起,回答得有些慢。@arnavgarg1 已经开始进行预训练工作了,你应该同步一下并为它找到一个自包含的 PR(Pull Request,即代码提交请求)。非常感谢你提出帮助,但我的消息被忽略了。
igetnqfo4#
感谢您的回复。
@arnavgarg1,您能帮助我继续处理这个问题吗?
qlfbtfca5#
你好@JaynouOliver - 让我们找个时间同步一下。你加入Ludwig的slack了吗?
3okqufwl6#
是的,我已经加入了Slack并参加了比赛!我会给你发消息。