【问题标题】:pytorch parallelize for loop of Cross Validationpytorch 并行化交叉验证循环
【发布时间】:2019-09-20 04:14:29
【问题描述】:

我有一个安装了 tensorflow 和 pytorch 的 cuda9-docker,我正在对图像数据集进行交叉验证。目前我正在使用 for 循环进行交叉验证。类似的东西

for data_train, data_test in sklearn.kfold(5, all_data):
  train(data_train)
  test(data_test)

但是 for 循环耗时太长,下面的代码可以并行化 for 循环吗?也许已经有解决方案了。但这不是数据并行化。

from multiprocessing import Pool

def f(trainset, testset):
    train_result = train(trainset)
    test_result = test(testset)
    save_train_result()
    save_test_result()

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, sklearn.cvfold(5, all_data)))

我不确定多处理是否只会使 cpu 瘫痪或同时使 cpu 和 gpu 瘫痪?这可能比在我猜像https://discuss.pytorch.org/t/parallelize-simple-for-loop-for-single-gpu/33701 这样的模型中并行处理更容易 因为在我的情况下,不需要跨每个进程进行通信?

【问题讨论】:

    标签: pytorch gpu


    【解决方案1】:

    您将 try horovod 与 PyTorch 一起使用。

    ResNet50 示例在这里: https://github.com/horovod/horovod/blob/master/examples/pytorch/pytorch_imagenet_resnet50.py

    horovod 相关的更改应该很小且独立。

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 2016-09-30
      • 2019-11-16
      • 1970-01-01
      • 2020-07-08
      • 2022-12-04
      • 2015-10-25
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多