Как использовать GPU для запуска модели Keras.Predict()

#python #tensorflow #keras #tensorflow2.0

#python #тензорный поток #keras #tensorflow2.0

Вопрос:

Используя демонстрацию Tensorflow CIFAR CNN, я убедился, что мой TF правильно использует мой графический процессор. TF использовал графический процессор для запуска model.fit(), и он использовал около 50% в HWiNFO64. Однако, если я затем добавлю эту ячейку в записную книжку, которая использует модель для прогнозирования метки изображений в тестовом наборе:

 import numpy as np
for img in test_images:
    prediction = model.predict(np.expand_dims(img, axis=0)) # Here
    print(class_names[np.argmax(prediction)])
  

Я вижу только 1% использования графического процессора (который используется Chrome и другими процессами). Есть ли у меня способ запустить model.predict() на графическом процессоре или есть какие-либо альтернативы, где я могу получить вывод модели для одного ввода?

Комментарии:

1. Он работает на графическом процессоре, проблема в том, что этот цикл for очень неэффективен, почему бы не выполнить один вызов predict, передающий все изображения в виде массива numpy?

2. Спасибо, я попробую. Однако есть ли еще способ сделать его более эффективным с помощью одного вызова?

3. Нет, не совсем, при одном вызове вы фактически используете 1% GPU

4. Хорошо, спасибо! Жаль, что я не могу отметить комментарий в качестве ответа: (

Ответ №1:

Ваш код выполняется на GPU, ошибочно думать, что использование GPU может сказать вам, выполняется ли код на GPU или нет.

Проблема в том, что выполнение одного predict вызова для каждого изображения очень неэффективно, так как на графическом процессоре практически невозможно выполнить параллелизм, если вы передаете целый массив изображений, это увеличит загрузку графического процессора, поскольку пакеты могут быть предоставлены графическому процессору, и каждое изображение обрабатывается параллельно.

Графические процессоры ускоряют только определенные рабочие нагрузки, поэтому ваш единственный выбор — использовать больше изображений в вашем вызове predict .