【问题标题】:What is the best beetween multiple small h5 files or one huge?多个小 h5 文件或一个大文件之间最好的选择是什么?
【发布时间】:2019-07-04 08:51:30
【问题描述】:

我正在处理大量的卫星数据,我将这些数据拆分为小图块以提供深度学习模型。我正在使用 pytorch,这意味着数据加载器可以使用多个线程。 [设置:python,Ubuntu 18.04]

我找不到任何关于以下数据访问和存储的最佳答案:

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

多线程访问一个文件有问题吗?在另一种情况下,拥有这么多文件会产生影响吗?

【问题讨论】:

    标签: multithreading bigdata h5py


    【解决方案1】:

    如果我是你,我会选择多个文件(但要读到最后)。

    直观地说,您可以将至少一些文件加载​​到内存中,从而稍微加快处理速度(如果是的话,您不太可能使用 20GB 这样做,因为 RAM 访问速度要快得多)。

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

    另一方面,这种方法更麻烦,更难正确实施, 但是如果您只读取具有多个线程的文件,您应该没问题,并且此操作不应该有任何锁定。

    记得使用 pytorch 的分析器 (torch.utils.bottleneck) 测量您的方法,以查明确切的问题并验证解决方案。

    【讨论】:

    • 感谢您的建议!我已经找了多个文件,我会看到瓶颈在哪里,关键点在哪里
    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2021-11-08
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2020-11-13
    相关资源
    最近更新 更多