Я использую Keras с тензорным потоком в качестве backend. У меня есть одна скомпилированная/обучаемая модель.Keras + Tensorflow: предсказание о множественном gpus
Мой цикл прогнозирования медленный, поэтому я хотел бы найти способ распараллеливать вызовы predict_proba
, чтобы ускорить процесс. Я хотел бы взять список партий (данных), а затем за доступный gpu, запустите model.predict_proba()
над подмножеством этих партий.
По существу:
data = [ batch_0, batch_1, ... , batch_N ]
on gpu_0 => return predict_proba(batch_0)
on gpu_1 => return predict_proba(batch_1)
...
on gpu_N => return predict_proba(batch_N)
Я знаю, что это возможно в чистом Tensorflow назначить вуп данного графического процессора (https://www.tensorflow.org/tutorials/using_gpu). Тем не менее, я не знаю, как это переводится в мою ситуацию, так как я построил/скомпилировал/обучил свою модель с помощью api Keras.
Я думал, что, возможно, мне просто нужно было использовать многопроцессорный модуль python и запустить процесс на gpu, который будет запускать predict_proba(batch_n)
. Я знаю, что это теоретически возможно с учетом другой моей должности: Keras + Tensorflow and Multiprocessing in Python. Однако это все еще оставляет мне дилемму не знать, как на самом деле «выбрать» gpu для управления процессом.
Мой вопрос сводится к следующему: как распараллеливать предсказание для одной модели в Keras через несколько gpus при использовании Tensorflow как бэкэда Keras?
Кроме того, мне любопытно, если аналогичное распараллеливание для прогнозирования возможно только с одним gpu.
Описание высокого уровня или пример кода были бы очень признательны!
Спасибо!
После обучения и сохранения модели в качестве json, когда перезагрузите модель из json и предсказания, она потерпела неудачу, поскольку не знает tf, как ее исправить или что является лучшим решением? – bygreencn
Да, это известная проблема с этим кодом. Когда вы запускаете эту функцию, вы меняете график. Таким образом, вам нужно сохранить только одну ветвь, чтобы потом загрузить ее для предсказания на одном gpu – Temak
, чтобы эта функция заставляла мои эпохи идти от 40 секунд до 1000 секунд ... – AdAbsurdum