Keras com back-end do TensorFlow sem GPU

Criei a versão gpu da imagem do dockerhttps://github.com/floydhub/dl-docker com keras versão 2.0.0 e tensorflow versão 0.12.1. Eu executei o tutorial mnisthttps://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py mas percebi que o keras não está usando GPU. Abaixo está a saída que eu tenho

root@b79b8a57fb1f:~/sharedfolder# python test.py
Using TensorFlow backend.
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-09-06 16:26:54.866833: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866855: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866863: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866870: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-09-06 16:26:54.866876: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

Alguém pode me informar se há algumas configurações que precisam ser feitas antes do keras usar a GPU? Sou muito novo em tudo isso; por isso, deixe-me saber se preciso fornecer mais informações.

Eu instalei os pré-requisitos, conforme mencionado nopágina

Instale o Docker seguindo o guia de instalação da sua plataforma:https://docs.docker.com/engine/installation/

Sou capaz de iniciar a imagem do docker

docker run -it -p 8888:8888 -p 6006:6006 -v /sharedfolder:/root/sharedfolder floydhub/dl-docker:cpu bash
Somente versão da GPU: instale os drivers Nvidia na sua máquina diretamente da Nvidia ou siga as instruçõesaqui. Observe que você não precisa instalar o CUDA ou o cuDNN. Eles estão incluídos no contêiner do Docker.

Eu sou capaz de executar o último passo

cv@cv-P15SM:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  375.66  Mon May  1 15:29:16 PDT 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
Somente versão da GPU: Instale a nvidia-docker:https://github.com/NVIDIA/nvidia-docker, seguindo as instruções aqui. Isso instalará uma substituição para a janela de encaixe CLI. Ele cuida da configuração do ambiente do driver host da Nvidia dentro dos contêineres do Docker e de algumas outras coisas.

Eu sou capaz de executar o passoaqui

# Test nvidia-smi
cv@cv-P15SM:~$ nvidia-docker run --rm nvidia/cuda nvidia-smi

Thu Sep  7 00:33:06 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 780M    Off  | 0000:01:00.0     N/A |                  N/A |
| N/A   55C    P0    N/A /  N/A |    310MiB /  4036MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
+-----------------------------------------------------------------------------+

Também sou capaz de executar o comando nvidia-docker para iniciar uma imagem suportada por gpu.

O que eu tentei

Eu tentei as seguintes sugestões abaixo

Verifique se você concluiu a etapa 9 deste tutorial (https://github.com/ignaciorlando/skinner/wiki/Keras-and-TensorFlow-installation ) Nota: Seus caminhos de arquivo podem ser completamente diferentes dentro da imagem da janela de encaixe, você precisará localizá-los de alguma forma.

Anexei as linhas sugeridas ao meu bashrc e verifiquei se o arquivo bashrc está atualizado.

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64' >> ~/.bashrc
echo 'export CUDA_HOME=/usr/local/cuda-8.0' >> ~/.bashrc

Para importar os seguintes comandos no meu arquivo python

import os os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152 os.environ["CUDA_VISIBLE_DEVICES"]="0"

Ambas as etapas, realizadas separadamente ou juntas, infelizmente não resolveram o problema. Keras ainda está sendo executado com a versão da CPU do tensorflow como back-end. No entanto, eu posso ter encontrado o possível problema. Eu verifiquei a versão do meu tensorflow através dos seguintes comandos e encontrei dois deles.

Esta é a versão da CPU

root@08b5fff06800:~# pip show tensorflow
Name: tensorflow
Version: 1.3.0
Summary: TensorFlow helps the tensors flow
Home-page: http://tensorflow.org/
Author: Google Inc.
Author-email: [email protected]
License: Apache 2.0
Location: /usr/local/lib/python2.7/dist-packages
Requires: tensorflow-tensorboard, six, protobuf, mock, numpy, backports.weakref, wheel

E esta é a versão da GPU

root@08b5fff06800:~# pip show tensorflow-gpu
Name: tensorflow-gpu
Version: 0.12.1
Summary: TensorFlow helps the tensors flow
Home-page: http://tensorflow.org/
Author: Google Inc.
Author-email: [email protected]
License: Apache 2.0
Location: /usr/local/lib/python2.7/dist-packages
Requires: mock, numpy, protobuf, wheel, six

Curiosamente, a saída mostra que keras está usando o tensorflow versão 1.3.0, que é a versão da CPU e não 0.12.1, a versão da GPU

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K

import tensorflow as tf
print('Tensorflow: ', tf.__version__)

Resultado

root@08b5fff06800:~/sharedfolder# python test.py
Using TensorFlow backend.
Tensorflow:  1.3.0

Acho que agora preciso descobrir como os keras usam a versão gpu do tensorflow.

questionAnswers(3)

yourAnswerToTheQuestion