1

我一直在谷歌搜索,但似乎无法找到multiprocessingPytorch-Lightning 中是否有可用的模块,就像 Pytorch 有一个torch.multiprocessing模块一样。

有谁知道 Pytorch-Lightning 是否有这个(或Joblib类似的)模块?我正在寻找一个 Pytorch-Lightning 模块,它允许我在多个 GPU 上并行化

提前谢谢了。

编辑:更具体地说,我正在寻找multiprocessingPytorch-Lightning 中的一个模块,它允许我在非神经网络计算上并行化多个 GPU,例如:

import numpy as np
import torch
from torch.multiprocessing import Pool

X = np.array([[1, 3, 2, 3], [2, 3, 5, 6], [1, 2, 3, 4]])
X = torch.DoubleTensor(X)

def X_power_func(j):
    X_power = X.cuda()**j
    return X_power

if __name__ == '__main__':
  with Pool(processes = 2) as p:   # Parallelizing over 2 GPUs
    results = p.map(X_power_func, range(4))

results
4

1 回答 1

1

是的,基本上您所要做的就是提供Trainer适当的参数gpus=N并指定后端:

# train on 8 GPUs (same machine (ie: node))
trainer = Trainer(gpus=8, distributed_backend='ddp')

# train on 32 GPUs (4 nodes)
trainer = Trainer(gpus=8, distributed_backend='ddp', num_nodes=4)

您可以在多 GPU 训练文档中了解更多信息。

编辑:

您实际寻找的是distributedmodule 而不是multiprocessing,torch.distributed.DistributedDataParallel通常建议在多个 GPU 上进行并行化。

于 2020-07-27T07:29:13.540 回答