Paddle 多卡训练怎么处理单个超大文件,使用IterableDataset?

dced5bon  于 2023-02-04  发布在  其他
关注(0)|答案(3)|浏览(201)

有一个很大的文本文件,不能全部加载到内润例。
现在有一个建简单的实现方式, 根据local__rank取对应的行。
请问有更好的方法吗?

class SplitedIterableDataset(IterableDataset):
    def __init__(self, ):
        self.files = ['../train_t5/300-400.txt', '300-400.txt']
        self.local_rank = dist.get_rank()
        self.word_size = dist.get_world_size()

    def __iter__(self):
        for file in self.files:
            f = open(file)
            for idx, line in enumerate(f):
                if (idx - self.local_rank) % self.word_size == 0:
                    # with open('rank_{}'.format(self.local_rank), 'a+') as f:
                    #     f.write(line)
                    try:
                        yield json.loads(line)
                    except:
                        continue
weylhg0b

weylhg0b1#

您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看 官网API文档常见问题历史IssueAI社区 来寻求解答。祝您生活愉快~

Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the APIFAQGithub Issue and AI community to get the answer.Have a nice day!

pbgvytdp

pbgvytdp2#

没有其他更好的方式了,这种方式是可行的~

gt0wga4j

gt0wga4j3#

@imxly2 请问关于iterabledataset您还有什么建议吗?

相关问题