Azure ML Studio con Ubuntu para Deep Learning

Enrique Blanco    3 julio, 2019

En anteriores posts dentro de este blog se ha mostrado cómo se puede hacer uso de Azure ML Studio para realizar algunos experimentos de Machine Learning. Montar un entorno para entrenar algoritmos bien conocidos de ML y entrenar modelos sencillos queda perfectamente explicado en los enlaces anteriores, pero el presente artículo buscamos profundizar un poco más.

Tras ver lo simple que resulta crear entornos de trabajo en Azure, decidimos sacar todo el partido de la computación en la nube para nuestros proyectos de Aprendizaje Profundo. Estos proyectos se caracterizan por requerir tiempos de entrenamiento extensos que pueden verse sustancialmente acortados si contamos con el hardware adecuado (como por ejemplo GPUs).


GPU es el acrónimo de Unidad de Procesamiento de Gráficos. Las GPUs
se usaban originalmente para representar imágenes, videos y animaciones 2D o 3D. Sin embargo su aplicación se ha extendido en los últimos años al Deep Learning. Una GPU realiza cálculos matemáticos de manera muy rápida y libera a la CPU para hacer otras cosas. Mientras que una CPU utiliza algunos núcleos centrados en el procesamiento secuencial en serie, una GPU tiene miles de núcleos más pequeños creados para múltiples tareas en paralelo.


Supongamos que necesitamos una instancia bastante potente para un proyecto de Deep Learning relacionado con el entrenamiento de un modelo generativo, de los cuales ya os hablamos en un artículo anterior. En este caso vamos a necesitar una máquina virtual con un Sistema Operativo Ubuntu y, con al menos, dos GPUs potentes para acelerar los cálculos.

Figura 1. NVIDIA® Tesla® M60 GPU accelerator. Fuente.

De toda la oferta de instancias ofrecidas, en concreto nos servía esta: Standard NV12 Promo con Linux Ubuntu 18.04. A continuación se puede encontrar un resumen de las principales características de la máquina.

Cores 12 (E5-2690v3)
GPU 2 x M60 GPU (1/2 Physical Card)
Memory 112 GB
Disk 380 GB SSD

Setup del entorno

Una vez que se ha creado la máquina virtual, para comenzar con el setup de la instancia, ejecutamos los siguientes comandos en un terminal:

sudo apt update
sudo ubuntu-drivers
sudo ubuntu-drivers autoinstall
sudo reboot

Si funciona bien, instalará muchos paquetes deb, como nvidia-driver-390, etc. Luego se debe reiniciar la máquina. Si se reinicia con éxito, abra una terminal y use el comando nvidia-smi. Si le muestra correctamente el estado de la GPU de NVIDIA como se muestra a continuación, entonces ya está correctamente instalado

Figura 2. Captura del estado de las dos GPUs Tesla M60 asignadas a NV12 Promo.

Asegúrate de que nvidia está deshabilitada

Si genera una máquina preinstalada en Ubuntu, el controlador nvidia ya está instalado, pero su activación no está garantizada de forma predeterminada. Esto se resuelve mediante los siguientes comandos:

sudo prime-select nvidia
sudo reboot

Después de eso, con nvidia-smi se podrá consultar el estado de las GPUs.

Procedemos a instalar CUDNN y CUDA Toolkit

Recomendamos primero instalar Anaconda, que para Linux se realiza de la siguiente manera.

wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh
bash Anaconda3-5.2.0-Linux-x86_64.sh

Anaconda añadirá automáticamente las rutas al fichero .bashrc (en el fichero de arranque) si escribes “yes” justo en ese punto de la instalación. En caso de no funcionar, se pueden añadir manualmente editando el fichero:

gedit ~/.bashrc

Y luego añadimos la ruta:

export PATH="/home/$USER/anaconda3/bin:$PATH"

Creamos un entorno virtual haciendo uso de Anaconda para poder trabajar sobre él con el siguiente comando:

conda create -n myenv python=3.6 anaconda

Activamos el entorno myenv:

source activate myenv

Y ahora ejecutamos lo siguiente :

conda install \
cudatoolkit==9.0 \
cudnn=7.1.2 \
h5py

Instalación de NVIDIA Collective Communications Library (NCCL)

Por último, hay que instalar NCCL para poder hacer que las GPUs de nuestra máquina trabajen de manera compartida. Seguimos las instrucciones indicadas en el siguiente enlace. Para ello, es imprescindible crearse una cuenta en NVIDIA con el fin de poder descargar los recursos necesarios.

Elegimos la versión de NVIDIA Collective Communications Library (NCCL) Download Page adecuada a nuestra instancia. En nuestro caso se eligió NCCL v2.4.7, for CUDA 9.0, May 15, 2019, Local installer for Ubuntu 16.04. No se han encontrado incompatibilidades con Ubuntu 18.04.

Figura 3. Instaladores necesarios para NVIDIA Collective Communications Library.

Tras todos estos pasos, ya tendríamos una potente instancia con Ubuntu sobre la que se podrían definir, entrenar y testear los modelos de Deep Learning que queramos, no sin antes instalar la librería de Aprendizaje Profundo que más nos convenga.

Para mantenerte al día con LUCA visita nuestra página web,  suscríbete a LUCA Data Speaks o síguenos en TwitterLinkedIn YouTube.

Deja un comentario

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