Torch acelerado por GPU

Empieza hoy mismo con esta Guía para aplicaciones preparadas para GPU.

Torch

Torch es un marco de deep learning con amplio soporte para algoritmos de aprendizaje automático. Es de código abierto, fácil de usar y eficiente gracias a un lenguaje de scripting rápido y sencillo, LuaJIT y una implementación subyacente de C/CUDA.

Torch ofrece bibliotecas de optimización y redes neuronales populares fáciles de usar que proporcionan el máximo de flexibilidad para compilar topologías de redes neuronales complejas.

También funciona hasta un 70 % más rápido en las últimas GPU NVIDIA Pascal™, de forma que puedes entrenar redes en horas en lugar de días.

Instalación

Requisitos del sistema

La versión de Torch acelerada por GPU tiene los siguientes requisitos:

  • Ubuntu 14.x (o cualquier versión de 64 bits de Linux, si prefieres compilar desde código fuente)
  • NVIDIA® CUDA® 7.5 o superior (es necesario CUDA 8.0 para las GPU Pascal)
  • cuDNN v5.0 o posteriores

También necesitarás capacidad de computación para GPU NVIDIA 3.0 o superior. NVIDIA Tesla® P100 y M40 están diseñadas para cargas de trabajo de aprendizaje automático. Recomendamos P100 y M40 para los servidores y TitanX para PC.

Instrucciones de descarga e instalación

Torch se basa en LuaRocks (un administrador de paquetes de Lua) y tiene estructura modular. En GitHub, se distribuye una colección habitual de módulos Torch bajo licencia de código abierto BSD. Recomendamos usar el paquete precompilado de Torch para Debian (solo Ubuntu 14.x).

A CONTINUACIÓN SE PRESENTA UN BREVE RESUMEN DEL PROCEDIMIENTO DE COMPILACIÓN

1. Agrega los repositorios CUDA y de aprendizaje automático a apt-get

Para obtener acceso a los paquetes de aprendizaje automático de NVIDIA, descarga e instala los paquetes cuda-repo-ubuntu1404 y nvidia-machine-learning-repo. Ejecuta los comandos siguientes para obtener acceso a los repositorios requeridos:

1 > CUDA_REPO_PKG=cuda-repo-ubuntu1404_7.5-18_amd64.deb && wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/$CUDA_REPO_PKG && sudo dpkg -i $CUDA_REPO_PKG 

2 > ML_REPO_PKG=nvidia-machine-learning-repo_4.0-2_amd64.deb && wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/$ML_REPO_PKG && sudo dpkg -i $ML_REPO_PKG 

3 > sudo app-get update

Esto proporciona acceso a los repositorios NVIDIA con paquetes Ubuntu para CUDA y ML, como cuda-toolkit-8-0, digits, caffe-nv, torch y libcudnn5.

2. Instala los paquetes Torch mediante apt-get

Ahora que has configurado el acceso a los repositorios de aprendizaje automático de NVIDIA, instala el paquete de Torch y sus dependencias:

4 > sudo app-get install libcudnn5 libcudnn5-dev torch7-nv

Si tienes un sistema diferente o si prefieres compilar Torch desde código fuente, consulta la Hoja de referencia de Torch.

Modelos de entrenamiento

Cuando hayas instalado Torch en el sistema, debería ejecutarse de la siguiente manera:

5 > th 
 ______             __   |  Torch7                                          
/_  __/__  ________/ /   |  Computación científica para Lua. 
 / / / _ \/ __/ __/ _ \  |  Escribe ? para obtener ayuda                                 
/_/  \___/_/  \__/_//_/  |  https://github.com/torch          
                         |  http://torch.ch                   
    
th>

Aquí, usaremos ResNet como ejemplo. Para consultar las instrucciones de descarga e instalación del módulo ResNet y del conjunto de datos de las imágenes de entrenamiento, visita la página Facebook ResNet Training.

Daremos por hecho que has instalado ambos correctamente.

Para ejecutar el entrenamiento, accede al directorio clon de ResNet y ejecuta:

main.lua

De forma predeterminada, el script ejecuta ResNet-34 en ImageNet con una GPU y dos subprocesos de data-loader:

th main.lua -data [carpeta-imagenet con carpetas train y val]

Para entrenar ResNet-50 en cuatro GPU y ocho subprocesos de CPU:

th main.lua -depth 50 -batchSize 256 -nGPU 4 -nThreads 8 -shareGradInput true -data [carpeta-imagenet]

En la página ResNet Training, hay disponibles recursos adicionales y modelos entrenados.

Pruebas de referencia

En esta sección se muestra la aceleración en la GPU con determinados conjuntos de datos. Las pruebas de referencia se enumeran por orden creciente de número de átomos. Al leer la salida, el factor de mérito es "ns/día" (cuanto más alto, mejor), situado al final de la salida en el archivo "mdout". Es mejor realizar la medición de todas las etapas (en lugar de los últimos 1000 pasos).

RENDIMIENTO DE ENTRENAMIENTO DE IMÁGENES
EN ALEXNET Y GOOGLENET

AlexNet, una red neuronal convolucional, fue desarrollada para clasificar 1,2 millones de imágenes en más de mil categorías diferentes

GoogLeNet es un modelo nuevo de deep learning que aprovecha las ventajas de una red más profunda y extensa para mejorar la precisión de la clasificación de imágenes.

Rendimiento de NVIDIA Tesla P100 PCIe
Rendimiento de NVIDIA Tesla M40
Rendimiento de NVIDIA Tesla K80

Configuraciones recomendadas del sistema

Configuración de hardware

PC

Parámetro
Especificaciones

Arquitectura de CPU

x86_64

Memoria del sistema

8-32 GB

CPU

1

Modelo de GPU

NVIDIA® TITAN X

GPU

1-2

Servidores

Parámetro
Especificaciones

Arquitectura de CPU

x86_64

Memoria del sistema

32 GB

CPUs/Nodos

1-2

Modelo de GPU

Tesla® P100
Tesla® M40

GPU/nodo

1-4

Configuración de software

Pila de software

Parámetro
Versión

SO

Ubuntu 14.04

Controlador de GPU

352.68 o posterior

Kit de herramientas de CUDA

8.0 o posteriores

Biblioteca cuDNN

v5.0 o posteriores

Python

2.7

Crea tu solución ideal de GPU hoy mismo.