Tensorflow:在不同GPU上训练多个模型时,joblib Parallel不返回

时间:2019-04-09 10:08:39

标签: python tensorflow joblib

从本质上讲,我这样做:

devices = ['gpu_0', ..., 'gpu_N']
n_jobs = len(devices)
results = Parallel(n_jobs=n_jobs, verbose=5)(
    delayed(train_model)
    (device=device,
     stuff=...)
    for device, stuff in enumerate(zip(devices, stuffs))

train_model在依次调用时效果很好:

def train_model(device, stuff):
    graph=...
    with graph.as_default():
        with tf.device(device):
            ...
    session=...

Parallel调用时,我可以看到所有分配的设备均已正确训练所有模型,但是完成后,Parallel永不返回。键入nvidia-smi时,我发现实际上所有N作业仍分配给每个GPU(活动率为0%),因此我怀疑每个作业都被其他作业锁定了。有没有一种方法可以与Python的joblib同时启动几个培训?

0 个答案:

没有答案