Torch avec accélération GPU

Exploitez le plein potentiel de Torch avec notre guide de démarrage pour application GPU.

Torch

Torch est un framework de Deep Learning offrant un support avancé des algorithmes d’apprentissage automatique . Sa structure open-source, sa grande simplicité d’utilisation et sa haute efficacité reposent sur LuaJIT, un langage de script aussi accessible que rapide, et sur une implémentation sous-jacente basée sur C et CUDA .

Torch inclut des bibliothèques d’optimisation et des modèles de réseaux neuronaux populaires et abordables, tout offrant un maximum de flexibilité afin de déployer des topologies complexes.

Torch s’exécute jusqu’à 70% plus vite grâce aux nouveaux GPU NVIDIA Pascal™, ce qui vous permet d’entraîner des réseaux de neurones en quelques heures, contre plusieurs jours auparavant.

Installation

Configuration requise

L’accélération GPU de Torch requiert la configuration suivante :

  • Ubuntu 14.x (ou tout type de système Linux 64 bits pour des déploiements à partir des fichiers source)
  • NVIDIA® CUDA® 7.5 ou plus (CUDA 8.0 ou plus requis avec les GPU Pascal)
  • cuDNN v5.0 ou plus

Vous devez également disposer d’un GPU NVIDIA compatible avec les capacités de calcul  3.0 ou plus. Les accélérateurs NVIDIA Tesla® P100 et M40 ont été spécifiquement conçus pour les workflows d’apprentissage automatique. Nous recommandons d’utiliser des accélérateurs P100 et M40 pour les serveurs et des solutions Titan X pour les stations de travail.

Instructions de téléchargement et d’installation

Torch est basé sur LuaRocks (un gestionnaire de pack pour Lua) et possède une structure modulaire. Une collection commune de modules Torch est distribuée sous licence BSD open-source via GitHub. Nous vous recommandons d’utiliser un pack Torch Debian pré-assemblé (sous Ubuntu 14.x).

VOUS TROUVEREZ CI-DESSOUS UNE SYNTHÈSE DE LA PROCÉDURE DE COMPILATION

1. Intégrez CUDA et vos dépôts pour l’apprentissage automatique.

Accédez aux packs d’apprentissage automatique de NVIDIA en téléchargeant puis en installant "cuda-repo-ubuntu1404" et "nvidia-machine-learning-repo". Exécutez les commandes suivantes pour accéder aux dépôts requis :

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

Vous accéderez ainsi aux dépôts NVIDIA contenant les packs Ubuntu pour CUDA et l’apprentissage automatique (cuda-toolkit-8-0, digits, caffe-nv, torch et libcudnn5).

2. Installez les packs Torch via apt-get.

Après avoir configuré l’accès aux dépôts NVIDIA, vous allez installer le pack Torch et ses dépendances :

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

Si vous possédez un autre système ou que vous souhaitez assembler Torch à partir des fichiers source, veuillez consulter l’aide-mémoire de Torch.

Entraînement de modèles

Après avoir installé Torch sur votre système, vous pouvez l’exécuter de la manière suivante :

5 > th 
 ______             __   |  Torch7                                          
/_  __/__  ________/ /   |  Scientific computing for Lua. 
 / / / _ \/ __/ __/ _ \  |  Type ? for help                                 
/_/  \___/_/  \__/_//_/  |  https://github.com/torch          
                         |  http://torch.ch                   
    
th>

Pour ce cas d’utilisation, nous allons recourir à ResNet. Pour de plus amples informations sur le module ResNet et les procédures de téléchargement et d’installation associées, veuillez vous rendre sur la page Facebook ResNet Training.

Dans la suite de ce guide, nous considérons que vous avez installé avec succès Torch et ResNet.

Pour procéder à l’entraînement des modèles, rendez-vous dans le répertoire du clone ResNet et exécutez :

main.lua

Par défaut, le script exécute ResNet-34 sur ImageNet avec un seul GPU et deux threads de chargement des données :

th main.lua -data [imagenet-folder with train and val folders]

Pour entraîner ResNet-50 sur quatre GPU et huit threads CPU :

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

Des modèles pré-entraînés et des ressources additionnelles sont disponibles sur la page ResNet Training.

Benchmarks

Cette section présente certains jeux de données relatifs à l’accélération GPU de Torch. Les benchmarks ci-après sont présentés par ordre croissant de nombre d’atomes. Le facteur de mérite s'exprime en nanosecondes par jour ("ns/day" ; plus la valeur est élevée, mieux c'est) et est enregistré à la fin du fichier de sortie "mdout". Nous vous recommandons de mettre en place des cas d’essai larges prenant en compte l’ensemble des étapes (et non les 1000 dernières étapes).

PERFORMANCES D’ENTRAÎNEMENT AVEC
ALEXTNET ET GOOGLENET

AlexNet, un système de réseaux de neurones convolutifs (CNN), a été développé pour classer des images dans plusieurs milliers de catégories différentes.

GoogLeNet est un tout nouveau modèle de Deep Learning qui s’appuie sur un modèle de réseau plus étendu et plus complexe afin de fournir une classification d'images de haute précision.

Performances NVIDIA Tesla P100 PCIe
Performances NVIDIA Tesla M40
Performances NVIDIA Tesla K80

Configuration système recommandée

Configuration matérielle

PC

Parameter
Specs

CPU Architecture

x86_64

System Memory

8-32GB

CPUs

1

GPU Model

NVIDIA®TITAN X

GPUs

1-2

Servers

Parameter
Specs

CPU Architecture

x86_64

System Memory

32 GB

CPUs/Nodes

1-2

GPU Model

Tesla® P100
Tesla® M40

GPUs/Node

1-4

Configuration logicielle

Software stack

Parameter
Version

OS

Ubuntu 14.04

GPU Driver

352.68 or newer

CUDA Toolkit

8.0 or newer

cuDNN Library

v5.0 or newer

Python

2.7

Déployez votre solution GPU personnalisée.