多个小 h5 文件或一个大文件之间最好的是什么?
What is the best beetween multiple small h5 files or one huge?
我正在处理巨大的卫星数据,我正在将这些数据分成小块以提供给深度学习模型。我正在使用 pytorch,这意味着数据加载器可以使用多线程。
[设置:python、Ubuntu 18.04]
我找不到在数据访问和存储方面最好的答案:
- 将所有数据注册到一个巨大的 HDF5 文件中(超过 20Go)
- 将其拆分为多个(超过 16 000 个)小 HDF5 文件(大约
1.4Mo).
是否存在多线程多次访问一个文件的问题?在另一种情况下,拥有那么多文件会产生影响吗?
如果我是你,我会选择多个文件(但要读到最后)。
凭直觉,您至少可以将一些文件加载到内存中,从而稍微加快进程(如果可以的话,您不太可能使用 20GB 的内存来执行此操作,因为 RAM 访问速度要快得多) .
您可以在第一次过去时缓存这些示例(在自定义 torch.utils.data.Dataset
实例中)并检索缓存的示例(比如在 list
或其他更多 memory-efficient 数据结构中具有更好的 cache-locality 最好)而不是从磁盘读取(类似于 Tensorflow 的 tf.data.Dataset
对象中的方法,它是 cache
方法)。
另一方面,这种方法更麻烦,更难正确实施,
不过,如果您 仅读取 具有多个线程的文件,您应该没问题,并且此操作不应该有任何锁定。
记得用 pytorch 的分析器 (torch.utils.bottleneck
) 来衡量你的方法,以查明确切的问题并验证解决方案。
我正在处理巨大的卫星数据,我正在将这些数据分成小块以提供给深度学习模型。我正在使用 pytorch,这意味着数据加载器可以使用多线程。 [设置:python、Ubuntu 18.04]
我找不到在数据访问和存储方面最好的答案:
- 将所有数据注册到一个巨大的 HDF5 文件中(超过 20Go)
- 将其拆分为多个(超过 16 000 个)小 HDF5 文件(大约 1.4Mo).
是否存在多线程多次访问一个文件的问题?在另一种情况下,拥有那么多文件会产生影响吗?
如果我是你,我会选择多个文件(但要读到最后)。
凭直觉,您至少可以将一些文件加载到内存中,从而稍微加快进程(如果可以的话,您不太可能使用 20GB 的内存来执行此操作,因为 RAM 访问速度要快得多) .
您可以在第一次过去时缓存这些示例(在自定义 torch.utils.data.Dataset
实例中)并检索缓存的示例(比如在 list
或其他更多 memory-efficient 数据结构中具有更好的 cache-locality 最好)而不是从磁盘读取(类似于 Tensorflow 的 tf.data.Dataset
对象中的方法,它是 cache
方法)。
另一方面,这种方法更麻烦,更难正确实施, 不过,如果您 仅读取 具有多个线程的文件,您应该没问题,并且此操作不应该有任何锁定。
记得用 pytorch 的分析器 (torch.utils.bottleneck
) 来衡量你的方法,以查明确切的问题并验证解决方案。