Keras con el backend TensorFlow sin GPU

Construí la versión de gpu de la imagen del acopladorhttps://github.com/floydhub/dl-docker con keras versión 2.0.0 y tensorflow versión 0.12.1. Luego ejecuté el tutorial mnisthttps://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py pero me di cuenta de que keras no está usando GPU. A continuación se muestra la salida que tengo

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.

¿Alguien puede decirme si hay algunas configuraciones que deben realizarse antes de que Keras use la GPU? Soy muy nuevo en todo esto, así que avíseme si necesito proporcionar más información.

He instalado los requisitos previos como se menciona en elpágina

Instale Docker siguiendo la guía de instalación para su plataforma:https://docs.docker.com/engine/installation/

Puedo iniciar la imagen del acoplador

docker run -it -p 8888:8888 -p 6006:6006 -v /sharedfolder:/root/sharedfolder floydhub/dl-docker:cpu bash
Solo versión GPU: instale los controladores de Nvidia en su máquina directamente desde Nvidia o siga las instruccionesaquí. Tenga en cuenta que no tiene que instalar CUDA o cuDNN. Estos están incluidos en el contenedor Docker.

Soy capaz de ejecutar el último paso.

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)
Solo versión GPU: Instale nvidia-docker:https://github.com/NVIDIA/nvidia-docker, siguiendo las instrucciones aquí. Esto instalará un reemplazo para la CLI de Docker. Se encarga de configurar el entorno del controlador del host Nvidia dentro de los contenedores Docker y algunas otras cosas.

Soy capaz de correr el pasoaquí

# 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                                         |
+-----------------------------------------------------------------------------+

También puedo ejecutar el comando nvidia-docker para iniciar una imagen compatible con gpu.

Lo que he intentado

He probado las siguientes sugerencias a continuación

Compruebe si ha completado el paso 9 de este tutorial (https://github.com/ignaciorlando/skinner/wiki/Keras-and-TensorFlow-installation ) Nota: las rutas de sus archivos pueden ser completamente diferentes dentro de la imagen de la ventana acoplable, tendrá que ubicarlas de alguna manera.

Agregué las líneas sugeridas a mi bashrc y verifiqué que el archivo bashrc esté actualizado.

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 los siguientes comandos en mi archivo python

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

Desafortunadamente, ambos pasos, realizados por separado o juntos, no resolvieron el problema. Keras todavía se está ejecutando con la versión de CPU de tensorflow como back-end. Sin embargo, podría haber encontrado el posible problema. Verifiqué la versión de mi tensorflow a través de los siguientes comandos y encontré dos de ellos.

Esta es la versión de la 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

Y esta es la versión de 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, el resultado muestra que Keras está utilizando la versión 1.3.0 de tensorflow, que es la versión de la CPU y no 0.12.1, la versión de la 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__)

Salida

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

Supongo que ahora necesito descubrir cómo hacer que los keras usen la versión de gpu de tensorflow.

Respuestas a la pregunta(3)

Su respuesta a la pregunta