多个小型H5文件或一个巨大之间的最佳啤酒是什么?



我正在使用庞大的Sattelite数据,这些数据将我分为小瓷砖以喂养深度学习模型。我正在使用Pytorch,这意味着数据加载程序可以与多个线程一起使用。[设置:Python,Ubuntu 18.04]

我找不到任何答案,即在数据访问和存储方面最好的答案:

  1. 在一个巨大的HDF5文件中注册所有数据(超过20GO(
  2. 将其分为多个(超过16 000(小型HDF5文件(大约 1.4mo(。

多线程对一个文件多访问一个文件有任何问题吗?在另一种情况下,要有大量文件?

如果我是你,我会去找多个文件(但要读到最后(。

直观地,您至少可以将某些文件加载到内存中,以稍微加速该过程(如果是20GB,则不太可能这样做,而不是绝对应该使用的,因为RAM访问要快得多(。<<<<<<<<<<<<<<<<

您可以在第一个过去中缓存这些示例(内部自定义torch.utils.data.Dataset实例(并检索缓存的示例(例如,在list中或其他更高的内存效率数据结构具有更好的缓存位置(,而不是从磁盘上读取(类似的方法Tensorflow的tf.data.Dataset对象和它的cache方法(。

另一方面,这种方法更加麻烦,更难正确地实施,虽然,如果您是仅读取带有多个线程的文件,您应该没问题,并且在此操作上不应该有任何锁。

记住使用Pytorch的Profiler(torch.utils.bottleneck(来测量您的方法以查明确切的问题并验证解决方案。

相关内容

最新更新