并行化tensorflow中的循环以并行训练多个模型

时间:2018-05-16 02:31:30

标签: python tensorflow keras pytorch

我想要在tensorflow中并行训练多个模型。这些模型目前在for循环中。当我尝试训练模型时,训练顺序而不是并行发生。我的问题类似于问here(但没有人回答这个问题)。但是,我正在训练模型而不仅仅是做推理。关于该问题的评论之一是“使其更快的方法是在单个TensorFlow运行时使用单个进程.TensorFlow未针对多个运行时共享GPU的情况进行优化”。

根据上面的评论,我注意到如果我只制作一个大型模型(例如,即使是单个模型的参数总数比循环中的多个模型组合的更多),它执行得更快(例如,0.19)这个大型模型的秒/步)。这与for循环训练四种不同的模型形成对比(整个for循环需要大约0.55秒/步 - 几乎是大模型的4倍)。任何人都可以告诉我如何并行化这个for循环,以便for循环的所有迭代并行执行(即,整个循环几乎0.19秒/步而不是0.55秒/步)?我的所有模型都能够适应GPU内存。

PS:由于我的工作性质,我无法使用tf.while_loop,因为它需要在while_loop中定义损失函数。有没有其他方法可以在GPU上进行这种for循环的并行化(例如,可能使用threading)?我也没有在tensorflow中使用“per_process_gpu_memory_fraction”,因为上面的另一个问题表明它使事情变得缓慢。

另外,是否可以在keras或pytorch中进行这种并行化?

任何帮助将不胜感激。感谢。

0 个答案:

没有答案
相关问题