平台是 pytorch ,数据集情况是单条很小,大概不到 1KB ( json+gzip 存到硬盘上),总数据大概 200 万条左右,存硬盘上体积很小,但是发现加载到 py 内存之后会变得非常大,垃圾电脑内存实在装不下。
目前的数据储存方式是,由于语料是存在文章里的,所以文件夹里大概有一万个文件,每个文件几个 MB ,每个文件里面包含若干条训练数据。
用自定义 dataloader 的话,如果开启随机读取,系统 IO 会爆炸,每次都需要读很多文件,然后从里面选取几条,剩下大部分的读取都是无效读取。。
后面换了一种方式是把数据集中到几个大文件中,然后 dataloader 选用顺序读取,这样每次就可以 load 很多到内存里不用频繁 IO ,但是缺点是只能顺序读取,读取又慢如狗,我这 ssd 也不知道 torch 为啥加载这么慢。。还有内存效率也很奇怪,硬盘上存的数据压缩后大概 200M ,加载到内存里进程内存就要超过 5-6 个 G ,每次多读两个文件的话直接爆炸。。
大佬们有啥读取数据的实现方式可以推荐下么,我去看了下 torchvision 的实现,似乎里面的数据集没有类似情况的
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.