我有多个模型,我想在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中进行这种并行化?

任何帮助都感激不尽 . 谢谢 .