Моя сеть Keras с multi_gpu_model использует только 1 графический процессор - PullRequest
1 голос
/ 28 апреля 2020

У меня проблема при попытке использовать Keras с тремя графическими процессорами.

Мой псевдокод выглядит следующим образом:

import keras
import keras.models as M
from keras.utils import multi_gpu_model 

i = M.Input(None,None,6) 
o1,o2,o3 = my_Network(i)

net = M.Model(inputs = i, outputs = [o1,o2,o3])
net = multi_gpu_model(net,gpus = 3) 

net.compile( ~~~~~ ) 
net.fit(~~~~~ ) 

Мой код обучает мою сеть, однако используется только один графический процессор.

Моя конфигурация следующая:

керас: 2.3.1

тензор потока: 2.1.0

Cuda: 10.0

windows: 10

GPU : Tesla 100 x 3 (VRAM: 32 ГБ x 3)

В чем ошибка?

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Я решил свою проблему с помощью кодов:

str = tf.distribute.MirroredStrategy(devices=["/gpu:0","/gpu:1", "/gpu:2"])
with str.scope():
    epsnet = M.Model(inputs = [img_in,img_lv],outputs = [out_d,out_s,out_l])
    epsnet = multi_gpu_model(epsnet,gpus=3)

Надеюсь, это вдохновит вас. Спасибо всем ответчикам.

0 голосов
/ 28 апреля 2020

При выполнении команды fit необходимо учитывать размер пакета. Вы не показываете это здесь, но вам нужно убедиться, что вы даете ему размер пакета, который делится на 3, чтобы распараллелить его между вашими 3 графическими процессорами. Например, если вы даете ему пакет размером 1, он не сможет распределить обучение по графическим процессорам.

Вы не предоставили много информации, но на основе выполнения multi_gpu_model , я не вижу ничего явно неправильного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...