MXNet с ускорением на GPU

Ознакомьтесь с Руководством для быстрого запуска и начните работу.

MXNet

MXNet – фреймворк глубокого обучения с открытым исходным кодом , который позволяет проектировать, обучать и развертывать глубокие нейронные сети на широком спектре устройств, начиная от облака и заканчивая мобильной платформой. Он обладает высокой масштабируемостью, что позволяет быстро обучать нейросети, и поддерживает гибкую модель программирования и несколько языков.

MXNet позволяет сочетать символические и императивные языки программирования, для максимизации эффективности и производительности. Он построен на динамическом обработчике зависимостей, который автоматически распараллеливает как символические, так и императивные операции. Уровень оптимизации графа дополнительно обеспечивает быстрое выполнение декларативных операций и эффективное использование памяти.

Библиотека MXNet портативна и легковесна. Фреймворк поддерживает ускорение на графических процессорах с архитектурой NVIDIA Pascal и масштабируется на нескольких GPU, позволяя тренировать нейронные сети быстрее.

Установка

Системные требования

Вы можете запустить MXNet на ОС Ubuntu/Debian, Amazon Linux, OS X и Windows. MXNet можно запустить в Docker и облаке, например, AWS. MXNet также работает на встраиваемых устройствах, например, Raspberry Pi. MXNet в настоящее время поддерживает языки программирования Python, R, Julia и Scalas.

Приведенные инструкции предназначены для пользователей Ubuntu/Debian. 
Системные требования для MXNet с поддержкой ускорения на GPU:

1. 64-битная ОС Linux

2. Python 2.x / 3.x

3. NVIDIA CUDA® 7.0 или более новая версия (для графических процессоров с архитектурой Pascal требуется CUDA 8.0)

4. NVIDIA cuDNN v4.0 (минимум) или v5.1 (рекомендуется)

 

Вам потребуется NVIDIA GPU с вычислительной возможностью не ниже  3.0.

Инструкции по загрузке и установке

КРАТКОЕ ОПИСАНИЕ ПРОЦЕССА КОМПИЛЯЦИИ

1. Установите CUDA

Для использования MXNet на NVIDIA GPU первым делом установите  CUDA Toolkit.

2. Установите cuDNN

После установки CUDA Toolkit скачайте  библиотеку cuDNN v5.1  для Linux (обратите внимание, что вам потребуется зарегистрироваться в программе  Accelerated Computing Developer Program). 
После скачивания библиотеки разархивируйте файлы и скопируйте их в директорию CUDA Toolkit (/usr/local/cuda/)/)

3. Установите зависимости

$ 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. Установите MXNet

Клонируйте репозиторий исходного кода MXNet на свой компьютер, запустите сценарий установки и обновите переменные среды. В дополнение к компиляции MXNet, установите модуль Python MXNet и включите путь

$ 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. Проверьте установку

Проверьте, правильно ли установлен MXNet.

$ python 
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 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.]]

Если вы не получили ошибку импорта, то MXNet готов к использованию с языком python.

Модели нейросетей

Теперь, когда вы успешно установили MXNet, давайте протестируем его несколькими учебными примерами на одном и нескольких GPU.

МОДЕЛЬ MNIST

Примеры классификации изображений:

cd example/image-classification

Потренируйте многослойную перцепцию на наборе данных mnist dataset и GPU 0

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

МОДЕЛЬ CIFAR-10

Потренируйте модель ResNet со 110 слоями на наборе данных CIFAR-10 с пакетом размером 128 и GPU 0 и 1

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

INCEPTION V3

Чтобы запустить тест на сетях ImageNet, используйте аргумент --benchmark 1 в 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

Тесты производительности

ПРОИЗВОДИТЕЛЬНОСТЬ MXNET НА МУЛЬТИ-GPU СИСТЕМЕ

Производительность тренировки CIFAR10 на Tesla P100
Производительность тренировки Inception v3 на Tesla P100
Производительность тренировки MNIST на Tesla P100

Рекомендованные системные конфигурации

Конфигурация аппаратного обеспечения

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

Конфигурация программного обеспечения

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

Соберите свою идеальную систему прямо сегодня.