【发布时间】:2022-01-02 06:11:59
【问题描述】:
我正在尝试在 pytorch 中运行相同神经网络训练的多个实例,但使用不同的超参数。例如不同的学习率、优化器等。 我尝试创建一个 multiprocessing.Pool,但出现错误:
Runtime error: Unable to handle autograd's threading in combination with fork-based multiprocessing. See https://github.com/pytorch/pytorch/wiki/Autograd-and-Fork
下面是示例代码,让您了解我在做什么:
def run_one_instance(idx=0):
lr = choose_random([0.001, 0.01, 0.1, 1])
optimizer = choose_random(["SGD", "Adam"])
num_hidden_layers = choose_random([2,3,4,5])
model = create_model(num_hidden_layers, lr, optimizer)
model.train()
return model.evaluate()
def run_multiple_instances(num_instances=40):
pool_obj = multiprocessing.Pool()
result = pool_obj.map(run_one_instance, range(0, num_instances))
return result
那么我做错了什么吗?有没有其他方法可以并行运行多个神经网络(在 cpu 或 gpu 上)?
【问题讨论】:
标签: python parallel-processing pytorch multiprocessing