【发布时间】:2018-05-22 20:56:19
【问题描述】:
我想对神经网络上的参数进行网格搜索。我有两个 GPU,我想在第一个 GPU 上运行一个模型,在第二个 GPU 上运行另一个具有不同参数的模型。第一次尝试失败是这样的:
with tf.device('/gpu:0'):
model_1 = sequential()
model_1.add(embedding) // the embeddings are defined earlier in the code
model_1.add(LSTM(50))
model_1.add(Dense(5, activation = 'softmax'))
model_1.compile(loss = 'categorical_crossentropy', optimizer = 'adam')
model_1.fit(np.array(train_x), np.array(train_y), epochs = 15, batch_size = 15)
with tf.device('/gpu:1'):
model_2 = sequential()
model_2.add(embedding)
model_2.add(LSTM(100))
model_2.add(Dense(5, activation = 'softmax'))
model_2.compile(loss = 'categorical_crossentropy', optimizer = 'adam')
model_2.fit(np.array(train_x), np.array(train_y), epochs = 15, batch_size = 15)
编辑:我再次运行我的代码并没有收到错误。但是,这两个模型按顺序运行而不是并行运行。这里可以做多线程吗?那是我的下一次尝试。
网上有很多关于在 keras 上使用多个 GPU 的讨论,但是当涉及到同时运行多个模型时,讨论仅限于在单个 GPU 上运行多个模型。关于多 GPU 的讨论也仅限于数据并行化和设备并行化。我不相信我想这样做,因为我不想分解单个模型以在多个 gpus 上运行。是否可以在具有两个 GPU 的 keras 中同时运行两个单独的模型?
【问题讨论】:
标签: tensorflow keras