Как запустить Keras на процессоре и графическом процессоре одновременно?

Я тренирую модель, состоящую из CNN и RNN с разными входами, выходные данные которых будут подаваться на FCN. Теперь вопрос:

Могу ли я параллельно запускать CNN на CPU и RNN на GPU?

как в Тензорфлоу:

with tf.device('/cpu:0'):
    CNN...
with tf.device('/gpu:0'):
    RNN...



Ответы (1)


Вы можете использовать именно тот код, который вы разместили.

Выберите устройство, определите слои, выберите другое устройство, определите другие слои:

Теперь лучшая производительность, вероятно, будет использовать противоположное:

with tf.device('/gpu:0'):
    CNNKerasLayers....
with tf.device('/cpu:0'):
    RNNKerasLayers....

Теперь я не уверен, как keras справится с этим (эффективно параллельно или нет), но, скорее всего, он просто позволит tensorflow решить эту проблему.

person Daniel Möller    schedule 29.05.2018
comment
Я не знаю, работает ли RNN быстрее на процессоре. У меня есть относительно простая RNN с 500 нейронами и примерно 27 миллионами точек данных. На GTX 1050 Ti требуется целая вечность, чтобы запустить даже 50 эпох. Опять же, CNN тоже довольно тяжелая. - person Loek; 29.05.2018
comment
RNN в графических процессорах совершенно плохи. Теперь CNN на графических процессорах — это здорово. Вы можете протестировать RNN в одиночку с CPU и GPU для подтверждения. (Существуют более новые версии RNN, такие как CuDNNGRU и CuDNNLSTM, которые могут быть быстрее на GPU). - person Daniel Möller; 29.05.2018
comment
Хм смешно. Хотел бы я знать это до того, как начал свои исследования. Спасибо хоть! - person Loek; 29.05.2018