MXNet avec accélération GPU

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

MXNet

MXNet est un framework de Deep Learning open-source qui vous permet de définir, entraîner et déployer des réseaux de neurones profonds sur une grande variété d’appareils, des infrastructures dans le Cloud aux dispositifs mobiles. Sa grande évolutivité vous permet d’entraîner des modèles avec un maximum de rapidité tout en bénéficiant d’un modèle de programmation polyvalent et de langages multiples.

MXNet vous permet de combiner des systèmes de programmation symboliques et impératifs pour renforcer votre efficacité et votre productivité. Le framework est basé sur un planificateur dynamique de dépendances qui parallélise automatiquement et en temps réel les opérations symboliques et impératives. La surcouche d’optimisation graphique accélère les exécutions symboliques et renforce l’efficacité de la mémoire.

La bibliothèque MXNet est portable et légère. Accélérée par les processeurs graphiques à architecture Pascal, vous pouvez l’utiliser avec des configurations multi-GPU et sur plusieurs nœuds pour entraîner vos modèles plus rapidement.

Installation

Configuration requise

Vous pouvez utiliser MXNet sur les systèmes d’exploitation Ubuntu/Debian, Amazon Linux, OS X et Windows. MXNet est exécutable sur Docker et dans le Cloud avec des services comme AWS. Vous pouvez également exécuter MXNet sur des terminaux Embedded comme les Raspberry Pi (avec Raspbian). MXNet supporte actuellement les langages de programmation Python, R, Julia et Scala.

Ces instructions s’adressent aux utilisateurs Ubuntu/Debian. 
L’accélération GPU de MXNet requiert la configuration suivante :

1. Système d'exploitation Linux 64 bits

2. Python 2.x / 3.x

3. NVIDIA CUDA® 7.0 ou plus (CUDA 8.0 requis pour les GPU à architecture Pascal)

4. NVIDIA cuDNN v4.0 (version minimale) or v5.1 (version recommandée)

 

Vous devez également disposer d’un GPU NVIDIA compatible avec les capacités de calcul  3.0 ou plus.

Instructions de téléchargement et d’installation

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

1. Installez CUDA.

Pour utiliser MXNet avec des GPU NVIDIA, vous devez commencer par installer le  Kit d’outils NVIDIA CUDA.

2. Installez cuDNN.

Une fois que vous avez installé le Kit d’outils NVIDIA CUDA, veuillez télécharger la  bibliothèque cuDNN v5.1  pour Linux (vous devez au préalable vous enregistrer au  programme de développement pour le calcul accéléré). 
Une fois la bibliothèque téléchargée, veuillez décompresser les fichiers avant de les copier dans le répertoire du Kit d’outils CUDA (chemin d’accès standard : /usr/local/cuda/).

3. Installez les dépendances.

$ sudo apt-get update
$ sudo apt-get install -y git build-essential libatlas-base-dev \
libopencv-dev graphviz python-pip
$ sudo pip install setuptools numpy --upgrade
$ sudo pip install graphviz jupyter 
$ sudo pip install requests # for examples, e.g., mnist, cifar

4. Installez MXNet.

Clonez le dépôt du code source MXNet sur votre ordinateur, exécutez le script d’installation et actualisez les variables d’environnement. Outre la compilation de MXNet, vous devez installer le module python MXNet et inclure le chemin d’accès approprié.

$ git clone https://github.com/dmlc/mxnet.git --recursive
$ cd mxnet
$ cp make/config.mk .
$ echo "USE_CUDA=1" >> config.mk # to enable CUDA
$ echo "USE_CUDA_PATH=/usr/local/cuda" >> config.mk
$ echo "USE_CUDNN=1" >> config.mk
$ make –j $(nproc)
$ cd python; sudo python setup.py install; cd .. # to install MXNet python module
$ export MXNET_HOME=$(pwd)
$ echo "export PYTHONPATH=$MXNET_HOME/python:$PYTHONPATH" >> ~/.bashrc
$ source ~/.bashrc

5. Testez votre installation.

Assurez-vous d’avoir installé MXNet avec succès.

$ python 
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Saisissez "help", "copyright", "credits" ou "license" pour plus d’informations.
>>> import mxnet as mx
>>> a = mx.nd.ones((2, 3), mx.cpu())
>>> print ((a * 2).asnumpy())
[[ 2. 2. 2.]
[ 2. 2. 2.]]
>>> a = mx.nd.ones((2, 3), mx.gpu())
>>> print ((a * 2).asnumpy())
[[ 2. 2. 2.]
[ 2. 2. 2.]]

Si aucune d’erreur d’importation ne survient, c’est que votre installation de MXNet est prête pour python.

Entraînement de modèles

Après avoir installé MXNet avec succès, vous allez pouvoir effectuer des tests d’entraînement avec des configurations à un ou plusieurs GPU.

MODÈLE MNIST

Exemples de classification d’images :

cd example/image-classification

Pour entraîner une perception multicouches avec le jeu de données mnist et le GPU 0 :

$ python train_mnist.py --network mlp --gpus 0

MODÈLE CIFAR10

Pour entraîner un modèle ResNet à 110 couches avec le jeu de données CIFAR10 (taille de batch : 128) et les GPU 0 + 1 :

$ python train_cifar10.py --network resnet --num-layers 110 \ --batch-size 128 --gpus 0,1

INCEPTION V3

Pour exécuter le benchmark sur des réseaux ImageNet, veuillez appliquer "--benchmark 1" en tant qu’argument pour "train_imagenet.py:".

$ cd example/image-classification # if you are at MXNET_HOME

$ python train_imagenet.py --benchmark 1 --gpus 0,1 --network inception-v3 \ --batch-size 64 --image-shape 3,299,299 --num-epochs 10 --kv-store device

Benchmarks

PERFORMANCES DE MXNET SUR UN SYSTÈME MULTI-GPU

Performances d’entraînement CIFAR10 avec Tesla P100
Performances d’entraînement Inception v3 avec Tesla P100
Performances d’entraînement MNIST avec Tesla P100

Configuration système recommandée

Configuration matérielle

PC

Parameter
Specs

CPU Architecture

x86_64

System Memory

8-32GB

CPUs

2 CPU sockets (8+
cores, 2+ GHz ?)

GPU Model

NVIDIA®TITAN

GPUs

1-4

Servers

Parameter
Specs

CPU Architecture

x86_64

System Memory

32 GB+

CPUs/Nodes

2 (8+ cores, 2+ GHz)

GPU Model

Tesla®P100

GPUs/Node

1-4

Configuration logicielle

Software stack

Parameter
Version

OS

CentOS 6.2

GPU Driver

375.35 or newer

CUDA Toolkit

8.0 or newer

cuDNN Library

v5.0 or newer

cuDNN

2016.0.47

Déployez votre solution GPU personnalisée.