多个 keras 模型并行 - 省时

数据挖掘 喀拉斯 张量流 计算机视觉 显卡 平行线
2022-02-18 04:22:03

我正在尝试并行加载两个不同的 keras 模型。我尝试使用功能 API 模型:

input1 = Input(inputShapeOfModel1)
input2 = Input(inputShapeOfModel2)

output1 = model1(input1)
output2 = model2(input2) 

parallelModel = Model([input1,input2], [output1,output2])

这有效,但实际上并没有并行运行。推理时间只是每个模型的单独推理时间的总和。

我的问题是这应该同时运行吗?我还尝试使用 gpu 内存选项将它们加载到不同的 py 文件中。我仍然没有并行性(每个模型的推理时间是 x1.5)

有没有办法让两个模型的推理时间接近单个模型的推理时间?是添加第二个 gpu 的唯一解决方案吗?

更新:在不同的脚本中,它们似乎能够并行运行,因此必须有一种方法可以在 python/keras 中高效运行。

1个回答

正如 Erik van de Ven 所建议的那样,听起来在不同的进程上运行每个模型应该提供所请求的并行性。

我想您可以fit在不同的进程中为每个模型运行该函数,
或者您甚至可以将它们加载到不同的 cpu 内核上:

with K.device('cpu0'):
    input1 = Input(inputShapeOfModel1)
    output1 = model1(input1)

with K.device('gpu0'):
    input2 = Input(inputShapeOfModel2)
    output2 = model2(input2)

model = Model([input1, input2], [output1, output2])

我还没有尝试过这些,所以我不确定什么会提供最好的结果