问题一:在NLP炼丹基础设施的样本处理部分,核心思路是什么?
在NLP炼丹基础设施的样本处理部分,核心思路是什么?
参考回答:
核心思路是函数式、流式、组合式处理,通过batch进行多路融合,并且对datasets库保持兼容。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639424
问题二:为什么随机读取的数据集在某些实际应用场景中难以实现?
为什么随机读取的数据集在某些实际应用场景中难以实现?
参考回答:
是因为不是所有的数据源都支持通过行号快速读取数据。例如,MaxCompute(ODPS)就无法通过行号快速读取数据,但它提供了Tunnel接口支持从某个下标开始顺序读取数据。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639425
问题三:如何在数据加载框架中实现从两个ODPS表中分别读取正样本和负样本,并在batch内以1:1的方式混合?
如何在数据加载框架中实现从两个ODPS表中分别读取正样本和负样本,并在batch内以1:1的方式混合?
参考回答:
在数据加载框架中,可以通过以下代码实现:
positive = Threaded(Map(func, ODPS(access_id, access_key, project, positive_sample_table_name, read_once=False)))
negative = Threaded(Map(func, ODPS(access_id, access_key, project, negative_sample_table_name, read_once=False)))
combined = Combine([positive, negative], sample_weight=[1.0, 1.0])
这里,positive和negative分别是正样本和负样本的流式处理结果,Combine函数将它们以1:1的比例混合。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639426
问题四:返回的combined变量是什么类型,它可以如何使用?
返回的combined变量是什么类型,它可以如何使用?
参考回答:
返回的combined变量是一个普通的Python generator,可以直接从中获取数据。此外,还可以将其传入huggingface的datasets模块,进一步转换为IterableDataset,以便在transformers.Trainer类中使用参与训练。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/639427
问题五:如何通过huggingface的datasets模块使用combined变量?
如何通过huggingface的datasets模块使用combined变量?
参考回答:
可以通过以下代码将combined变量转换为IterableDataset,并在transformers.Trainer中使用:
import datasets
train_dataset = datasets.IterableDataset.from_generator(combined, gen_kwargs={"ranks": [0,1,2,3], "world_size": 4})
这里,gen_kwargs参数支持分布式训练的设置。
关于本问题的更多回答可点击原文查看: