是否可以在两个不同系统上的两个不同GPU上训练单个Keras模型并将训练结合起来?

时间:2018-07-01 17:47:25

标签: tensorflow machine-learning keras deep-learning

我正在使用Google Colab训练我的模型。 但是速度仍然很低。 那么,有什么办法可以让我从两个不同的帐户进行培训,并在以后合并培训?

2 个答案:

答案 0 :(得分:0)

查找此问题Tensorflow Combining Two Models End to End

另一种可能是将两个训练好的模型合在一起。但是,您必须确保两个模型的数据都来自相同的分布。

答案 1 :(得分:0)

否,您不能在colab上使用2个帐户训练相同模​​型。 Google colab仅用于研究目的。不训练大规模生产模型。 Colab还每12小时断开一次内核连接。


您可以改为在单台计算机上使用多个GPU训练模型。当使用tensorflow作为后端时,Keras支持多GPU训练。但是不可能在两台不同的计算机/ VM上进行训练。反向传播期间梯度将如何流动?


虽然有解决方案,但没有端到端方法。您可以将模型分为两个不同的模型,第一个模型的输出将成为第二个模型的输入,第二个模型将产生最终输出。为此,您需要为每个模型设置不同的训练集。

以这个例子为例。 假设您正在构建一个人脸识别器,其中模型会拍摄原始相机图片并将该人脸识别为是/否。

您可以将它分成两个不同的网络,而不是训练这个庞大的网络,第一个网络的任务是修剪脸部并从图像中删除其他无用的东西,第二个从裁剪后的图像中识别出来。

这是非端到端模型,您可以在具有不同数据集的不同计算机上分别训练两个模型,然后最终将它们合并在一起。通常,它功能更强大且易于训练。