Posso rodar o modelo Keras na gpu?

125

Estou executando um modelo Keras, com um prazo de envio de 36 horas, se eu treinar meu modelo na cpu, levará aproximadamente 50 horas, existe uma maneira de executar Keras na gpu?

Estou usando o back-end do Tensorflow e executando-o no meu notebook Jupyter, sem o anaconda instalado.

Ryan
fonte
Eu encontrei o seguinte: medium.com/@kegui/… Parece que alguém pode ler perguntas altamente classificadas em um campo estreito aqui e, em seguida, fazer uma "resposta" completa no Medium e ganhar dinheiro com visualizações.
EngrStudent
Para AMD GPU. Veja este post. stackoverflow.com/a/60016869/6117565
bikram 02/02

Respostas:

175

Sim, você pode executar os modelos keras na GPU. Poucas coisas que você terá que verificar primeiro.

  1. seu sistema possui GPU (Nvidia. Como a AMD ainda não funciona)
  2. Você instalou a versão GPU do tensorflow
  3. Você instalou as instruções de instalação do CUDA
  4. Verifique se o tensorflow está em execução com a GPU, verifique se a GPU está funcionando

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

OU

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

saída será algo como isto:

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

Uma vez feito tudo isso, seu modelo será executado na GPU:

Para verificar se keras (> = 2.1.1) está usando GPU:

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

Muito bem sucedida.

Vikash Singh
fonte
terei que instalar o python 3.5 para esse direito? senão o tensorflow não funcionará?
Ryan
Não é necessário. TF trabalha com 2.7 e 3.5, ambos. Escolha a versão correta do TF, é isso.
precisa
tudo bem, doente ir com 2,7, questões Havig com a instalação de 3,5
Ryan
Eu recebo este erro -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
Ryan
12
K.tensorflow_backend._get_available_gpus()não funciona no TensorFlow 2.0.
Nbro 15/10/19
21

Certo. Suponho que você já instalou o TensorFlow para GPU.

Você precisa adicionar o seguinte bloco depois de importar o keras. Estou trabalhando em uma máquina com 56 núcleos e uma gpu.

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)

Obviamente, esse uso impõe limites máximos às minhas máquinas. Você pode diminuir os valores de consumo de CPU e GPU.

johncasey
fonte
Erromodule 'tensorflow' has no attribute 'ConfigProto'
Divyanshu Srivastava 16/07
Você está usando o tensorflow 2? Eu testei para tf 1.X.
johncasey 20/07
13

2.0 Resposta compatível : Embora a resposta acima mencionada explique detalhadamente como usar a GPU no modelo Keras, quero explicar como isso pode ser feito Tensorflow Version 2.0.

Para saber quantas GPUs estão disponíveis, podemos usar o código abaixo:

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

Para descobrir a quais dispositivos suas operações e tensores estão atribuídos, coloque tf.debugging.set_log_device_placement(True)como a primeira instrução do seu programa.

A ativação do registro de posicionamento do dispositivo causa a impressão de qualquer alocação ou operação do tensor. Por exemplo, executando o código abaixo:

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)

fornece a saída mostrada abaixo:

Executando o MatMul no dispositivo / trabalho: localhost / réplica: 0 / tarefa: 0 / dispositivo: GPU: 0 tf.Tensor ([[22. 28.] [49. 64.]], shape = (2, 2), dtype = float32)

Para mais informações, consulte este link

Suporte ao Tensorflow
fonte
1

Claro. se você estiver executando em back-end Tensorflow ou CNTk, seu código será executado em seus dispositivos de GPU por padrão.

Bandeiras Theano:

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

Kevin Jarvis
fonte
0

Veja se seu script está executando a GPU no Gerenciador de tarefas. Caso contrário, suspeite que sua versão do CUDA seja a correta para a versão do tensorflow que você está usando, como as outras respostas já sugeridas.

Além disso, é necessária uma biblioteca CUDA DNN apropriada para a versão CUDA para executar a GPU com fluxo tensor. Faça o download / extraia-o daqui e coloque a DLL (por exemplo, cudnn64_7.dll) na pasta bin CUDA (por exemplo, C: \ Arquivos de Programas \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.1 \ bin).

Tae-Sung Shin
fonte