Icone cl2 09

Instalación de Keras/Tensorflow-Theano en Windows

Autores: Francesco Pugliese & Matteo Testi

En este post, veremos cómo abordar el abrumador problema de la instalación de Windows en el marco de framework para Deep Learning “Keras” y tambien veremos el stack de backend “Tensorflow / Theano”.
La instalación parte descargando  paquete de Python 3. Elegimos la opcion Miniconda en el siguiente enlace: https://conda.io/miniconda.html   aparecerá la siguiente pantalla:

 

Seleccione Python 3.6 y la versión de Windows de 64 bits o 32 bits. Haga clic en el paquete descargado y ejecute la instalación dejando todo predeterminado. Al final de la instalación, acepte el reinicio de la máquina.

Después de reiniciar su PC, desde el cuadro de búsqueda de Windows, escriba cmd.exe y ejecute el prompt. A continuación, ejecute el script c:\Users\-utente-\Miniconda3\Scripts\activate.bat donde iniciará el prompt de Anaconda(replace-user- con el nombre de cuenta específico).

En este punto escriba: conda install numpy scipy mkl-service m2w64-toolchain para instalar:

  1. La libreria “numpy” de Python es muy útil para gestionar matrices y array en general.
  2. la libreria para el cálculo científico en python “scipy”.
  3. la libreria para “mkl-service” es para optomizar, las rutinas de vectores matemáticos para acelerar las funciones y aplicaciones matemáticas.
  4. la libreria “libpython” para Python 3 con código para Machine Learning y para desarrollar código eficiente.
  5. la biblioteca “m2w64-toolchain” que proporciona una versión compatible con GCC, por lo tanto, es muy recomendable.

Las librerias opcionales son:

  1. la libreria “nose” para el testing de los programas  Python.
  2. la libreria “nose-parameterized” para el testing paramétrico.
  3. la libreria “sphinx” para crear documentación elegante del programa en varios formatos (HTML, PDF, ePyub, etc.).
  4. la libreria “pydot-ng” es la interfaz al lenguaje de representación gráfica de Graphviz’s Dot.

Una vez hecho el set up de Pyton,descargue los controladores de Cuda desde el siguiente enlace:

https://developer.nvidia.com/cuda-downloads

 

Se abrirá la siguiente pantalla con distintas opciones del sistema operativo y las versiones requeridas:

 

 

 

Descargar la versión local (recomendada) del archivo instalado y proceda con la instalación de los driver Cuda, que son las librerias de programación pararela de la GPU Nvidia (Graphic Processing Unit) que esta presente en la tarjeta grafica. Si es necesario, también acepte la instalación del driver de la tarjeta de video si en el caso este no estuviera actualizado o no funcionara correctamente.

Después de haber terminado instalacion de los driver Cuda (y de los driver de la tarjeta de video), el siguiente paso es instalar Theano y la libreria de soporte “libgpuarray”, que es una libreria para manipular los tensores en la GPUcon el comando:

conda install theano pygpu

NOTA 1 Theano: para la instalación de Theano siempre se recomienda la instalación la versión anterior de Cuda. Esto se debe a que Theano no viene actualizado a menudo esto comporta que te puedes encontrar con  errores de compilación esto  sucede cuando has instalado una version  de Theano con la última versión de Cuda. Por ejemplo, en este momento la versión más estable de Theano es 0.9.0, por lo que recomendamos instalar Cuda 8.0 en lugar de Cuda 9.0. Existen tutoriales en intenet que te dicen que te dan consejos como funcionaria perfectamente Cuda 9 con Theano 0,9, segun mi opinion considero que son complicados y quitan tiempo. Es aconsejable tener una configuración estable de Cuda-Theano por esto les aconsejo elegir las versiones que les he recomendado.

Entonces, ahora es necesario  instalar Visual Studio que proporciona  el compilador  C ++ para Windows a Theano (de hecho, el CCG instalado anteriormente sólo se refiere al compilador de C). Para hacer esto se descarga Visual Studio Community en el siguiente enlace: https://www.visualstudio.com/it/downloads/ y despues tienes que seguir todos los pasos necesarios,  instalar sólo los componentes esenciales para el C++.

NOTA 2 Theano: Aparentemente después del próximo lanzamiento, Theano se retirará, explicado por el mismo Bengio en este post: link Las razones son tantas, creemos que se deben esencialmente a la competencia masiva de otros frameworks para Deep Learning (mxnet, tensorflow, deeplearning4j, gluon , por nombrar algunos) que vienen actualizados rapidamente. Como hemos demostrado, Theano sufre problemas constantes de actualización. Sin embargo, creemos que todavía es un hito para Deep Learning, Theano es el primero en introducir la diferenciación automática y la paralelización eficiente y transparente de las operaciones de la matriz GPU que han dado lugar a la difusion de las  deep neural networks en la GPU . Por lo tanto, creemos que es necesario darle un reconocimiento, a este excepcional framework, también tenemos reconocer, que todavía proporciona sus ventajas de versatilidad y velocidad cuando se utiliza como backend de Keras.

NOTA Visual Studio: también Visual Studio recientemente tiene problemas de compatibilidad con Theano. En particular, Visual Studio 2017 generará una excepción en la fase de importación de Theano, ya sea Cuda 9 que Cuda 8. Por lo tanto, recomendamos instalar una versión anterior estable como Visual Studio 2013

Una vez que haya instalado Visual Studio, es necesecario  completar el archivo  theanorc, de  la configuración de Theano,que se encuentra con Miniconda3 en la ruta de acceso: c: \ Users \ – user – \. Theanorc

Rellene  el .theanorc de la siguiente manera, suponiendo que haya instalado Cuda 8 y Visual Studio 2013:

[global]
device = gpu
floatX = float32

[cuda]
root = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

[dnn]
enabled=False

[nvcc]
compiler_bindir = C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

[lib]
cnmem = 0

Analizemos un momento estos parámetros: la sección “device” de [global] sirve para decidir si se desea usar la CPU o la GPU, la sección “root” de [cuda] es necesaria para definir la ruta de las librerias de Cuda, mientras que “compiler_bindir” ” de [nvcc] sirve para definir la ruta del compilador C ++ de Visual Studio que es necesaria para compilar los programas de Theano. El parámetro CNMeM es una libreria (built-in de Theano) que le permite definir (a través de un valor entre 0 y 1) el modo en el cual el framework de Deep Learning puede manejar la memoria de la GPU, y es una manera para acelerar la computación de las redes neuronales deep en Theano. Por ejemplo, las tarjetas de video compartidas con la pantalla se aconseja ajustar alrededor de 0.8, mientras que para las tarjetas de video stand-alone, osea que estan dedicadas solo a Deep Learning, recomendamos un cnmem igual a 1.

Otro parámetro muy importante para acelerar el cálculo, especialmente con respecto a la convolución, es el parámetro “enabled” de [dnn] que permite habilitar o deshabilitar las librerias Nvidia CuDNN. Básicamente es una libreria que  optimiza las deep neural networks, lo que le permite acelerar el traning, las pruebas e incluso reducir el consumo de memoria. Para instalar CuDNN se necesita ir a este enlace: https://developer.nvidia.com/cudnn y hacer click en el boton download e iniciar la descarga( talvez es necesario registrarse como membership de Nvidia) deberia abrirse la siguiente pantalla

developer.nvidia.com
The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations …

 

 

NOTA cuDNN: también aquí, como en los casos anteriores, se recomienda no descargar la última versión de cuDNN, sino uno o dos precedentes, ya que Cuda 8 o Theano 0.9 no podran ser vistas, en este caso recomendamos versión cuDNN 6.0. Y con Theano 0.9 todavía puede tener una advertencia de que la versión cuDNN es muy reciente y podría causar problemas. También probamos problemas de incompatibilidad entre la última versión de cuDNN y TensorFlow.

Al descomprimir el archivo descargado, obtendrá 3 carpetas: bin, lib e include.  Lo que necesitas  hacer es copiar el contenido de las carpetas en las mismas carpetas dentro del directorio de Cuda, es decir, dentro de:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

Copie cudnn64_6.dll dentro de la bin del path Cuda, copie cudnn.h dentro include y luego copie cudnn.lib dentro lib.

Una vez que instalado cuDNN, proceda con la instalación de Keras a través de pip:

pip install keras

La declaración instalará todas las dependencias y también la última versión (actualmente Keras 2.0.9). Para configurar Theano como backend de Keras, entre a la carpeta: c: \ users \ -user – \. Keras y edite el archivo keras.json de la siguiente manera, o estableciendo “theano” en la entrada “backend”

{

“floatx”: “float32”,
“epsilon”: 1e-07,
“backend”: “theano”,
“image_data_format”: “channels_last”
}

Para probar que todo está bien, reinicie el prompt de anaconda y ejecute python. Dentro el prompt de Python escriba: import keras. Si todo esta en la dirección correcta, debería aparecer la siguiente pantalla:

 

Recuerdense del primer “warning” mencionado  sobre las cuDNN y comunicado por Theano mismo: si encuentra los problemas antes mencionados, efectuar el downgrade de las  cuDNN a la versión 5.1 según  como lo ha  recomendado por el mismo team. El lanzamiento de la versión estable de Theano 0.10 debería resolver todos estos problemas de compatibilidad.

De todos modos, encontramos que el entorno configurado con Keras y Theano de esta manera funciona perfectamente en una variedad de modelos que hemos entrenado y probado. Usamos Theano porque a menudo es más rápido que TensorFlow en algúnos training de Computer Vision.

Sin embargo, si desea utilizar TensorFlow como un backend, es necesario instalarlo. Para instalar tensorflow para la GPU, necesita el siguiente comando:

pip install –upgrade tensorflow-gpu

Este instalará la última versión (1.4.0) de Tensorflow-gpu. Para probarlo con Keras, reemplace “theano” con la cadena “tensorflow” en el archivo “keras.json”, reinicie el prompt de anaconda y haga nuevamente import keras.

NOTA TensorFlow: no esta admitido en plataformas de 32 bits, el procedimiento de instalación solo descargará en il wheel relativo al framework de 64 bits. También para descargar la versión de la CPU, solo necesitan especificar: pip install –upgrade tensorflow.

Si todo salió bien, esta vez deberia aparecer el  TensorFlow como backend de keras:

 

Otros paquetes útiles que recomendamos para trabajar con Keras son:

  1. scikit-image: Una libreria muy útil de image processing  en python, que permite, entre otras cosas, guardar matrices y tensores en una imagen JPEG u otros muchos formatos admitidos. Instalable con: conda install scikit-image.
  2. gensim: Una  libreria de word embeddings  que implementa, entre otras cosas, el algoritmo word2vec. Instalable con: conda install gensim.
  3. h5py: La  libreria como interfaz   conectada al formato de rescate HDF5 de Pythonic, necesario para guardar modelos  de entrenamientos en discos Keras. Instalado con pip install h5py.

A este punto, el entorno Keras / Tf-Th en Windows está listo para ser usado, y podran probar su código y sus modelos mediante el uso de la GPU.

Buen trabajo!

 

Nos vemos en el siguiente tutorial.

Un saludo de Deep Learning Italia.

Para información y aclaración, aquí están nuestros correos electrónicos:

Francesco Pugliese – f.pugliese@deeplearningitalia.com

Matteo Testi – m.testi@deeplearningitalia.com

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *