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

125

Я использую модель Keras, с крайним сроком подачи 36 часов, если я обучу свою модель на процессоре, это займет около 50 часов, есть ли способ запустить Keras на gpu?

Я использую бэкэнд Tensorflow и запускаю его на своем ноутбуке Jupyter без установленной анаконды.

Райан
источник
Я нашел это: medium.com/@kegui/… Такое ощущение, что здесь можно просмотреть вопросы с высоким рейтингом в узком поле, а затем дать полный «ответ» на Medium и зарабатывать реальные деньги на просмотрах.
EngrStudent
Для графического процессора AMD. См. Этот пост. stackoverflow.com/a/60016869/6117565
bikram

Ответы:

175

Да, вы можете запускать модели keras на GPU. Сначала вам нужно будет проверить несколько вещей.

  1. в вашей системе есть графический процессор (Nvidia. AMD еще не работает)
  2. Вы установили версию tensorflow для графического процессора
  3. Вы установили инструкции по установке CUDA
  4. Убедитесь, что тензорный поток работает с графическим процессором, проверьте, работает ли графический процессор

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

ИЛИ

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

вывод будет примерно таким:

[
  name: "/cpu:0"device_type: "CPU",
  name: "/gpu:0"device_type: "GPU"
]

Как только все это будет сделано, ваша модель будет работать на GPU:

Чтобы проверить, использует ли keras (> = 2.1.1) графический процессор:

from keras import backend as K
K.tensorflow_backend._get_available_gpus()

Всего наилучшего.

Викаш Сингх
источник
мне нужно будет установить python 3.5 для этого правильно? иначе тензорный поток не будет работать?
Райан
Не обязательно. TF работает как с 2.7, так и с 3.5. Выбрал правильную версию TF вот и все.
Викаш Сингх
хорошо, плохо с 2.7, проблемы с установкой 3.5
Райан
Я получаю эту ошибку -Could not find any downloads that satisfy the requirement tensorflow in /usr/local/lib/python2.7/dist-packages Downloading/unpacking tensorflow Cleaning up... No distributions at all found for tensorflow in /usr/local/lib/python2.7/dist-packages Storing debug log for failure in /home/hyperworks/.pip/pip.log
Райан
12
K.tensorflow_backend._get_available_gpus()не работает в TensorFlow 2.0.
nbro
21

Конечно. Я предполагаю, что вы уже установили TensorFlow для GPU.

Вам нужно добавить следующий блок после импорта keras. Я работаю на машине с 56-ядерным процессором и графическим процессором.

import keras
import tensorflow as tf


config = tf.ConfigProto( device_count = {'GPU': 1 , 'CPU': 56} ) 
sess = tf.Session(config=config) 
keras.backend.set_session(sess)

Конечно, это использование приводит к максимальным ограничениям моих машин. Вы можете уменьшить значения потребления ЦП и ГП.

johncasey
источник
1
Ошибкаmodule 'tensorflow' has no attribute 'ConfigProto'
Дивяншу Шривастава
Вы используете тензорный поток 2? Тестировал на tf 1.X.
Johncasey
13

2.0 Совместимый ответ . Хотя вышеупомянутый ответ подробно объясняет, как использовать графический процессор в модели Keras, я хочу объяснить, как это можно сделать Tensorflow Version 2.0.

Чтобы узнать, сколько графических процессоров доступно, мы можем использовать следующий код:

print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

Чтобы узнать, каким устройствам назначены ваши операции и тензоры, укажите tf.debugging.set_log_device_placement(True)в качестве первого оператора вашей программы.

Включение ведения журнала размещения устройств приводит к распечатке любых выделений тензорных модулей или операций. Например, запустив приведенный ниже код:

tf.debugging.set_log_device_placement(True)

# Create some tensors
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)

print(c)

дает результат, показанный ниже:

Выполнение операции MatMul на устройстве / задании: localhost / replica: 0 / task: 0 / device: GPU: 0 tf.Tensor ([[22. 28.] [49. 64.]], shape = (2, 2), DTYPE = float32)

Для получения дополнительной информации перейдите по этой ссылке

Поддержка Tensorflow
источник
1

Конечно. если вы используете бэкенды Tensorflow или CNTk, ваш код по умолчанию будет работать на ваших устройствах с графическим процессором, но если бэкэнд Theano, вы можете использовать следующие

Флаги Theano:

"THEANO_FLAGS = device = gpu, floatX = float32 python my_keras_script.py"

Кевин Джарвис
источник
0

Посмотрите, работает ли ваш скрипт на GPU в диспетчере задач. Если нет, подозревайте, что ваша версия CUDA подходит для используемой вами версии tenorflow, как уже предлагали другие ответы.

Кроме того, для запуска графического процессора с тензорным потоком требуется соответствующая библиотека CUDA DNN для версии CUDA. Загрузите / извлеките его отсюда и поместите DLL (например, cudnn64_7.dll) в папку bin CUDA (например, C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin).

Тэ-Сун Шин
источник