Фреймворк Torch с ускорением на GPU

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

Torch

Torch – это  фреймворк глубокого обучения  с широкой поддержкой алгоритмов  машинного обучения . Он общедоступен, прост в использовании и эффективен благодаря легкому и быстрому языку сценариев LuaJIT и базовой реализации C / CUDA .

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

Фреймворк работает до 70% быстрее на самых современных GPU с архитектурой NVIDIA Pascal™, что позволяет натренировать нейронную сеть за несколько часов, а не дней.

Установка

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

Системные требования для GPU-ускоренной версии Torch:

  • ОС Ubuntu 14.x (или любая другая 64-битная ОС Linux)
  • NVIDIA® CUDA® 7.5 или более новая версия (для GPU с архитектурой Pascal требуется CUDA 8.0 или выше)
  • cuDNN 5.0 или более новой версии

Вам потребуется NVIDIA GPU с вычислительной возможностью не ниже 3.0. Графические ускорители NVIDIA Tesla® P100 и M40 созданы для задач машинного обучения. Для установки в сервер мы рекомендуем графические ускорители P100 и M40, а для установки в ПК - видеокарту TitanX.

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

Torch iпостроен на основе LuaRocks, менеджера пакетов для Lua, и имеет модульную структуру. Общие модули Torch распространяются под лицензией BSD с открытым исходным кодом на  GitHub. Мы рекомендуем использовать предварительно собранный пакет Torch (только ОС Ubuntu 14.x).

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

1. Добавьте репозитории CUDA и машинного обучения в apt-get

Получите доступ к пакетам машинного обучения NVIDIA, скачав и установив пакеты cuda-repo-ubuntu1404 и nvidia-machine-learning-repo. Запустите следующие команды, чтобы получить доступ к нужным репозиториям:

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

Это обеспечит доступ к репозиториям NVIDIA, содержащим пакеты Ubuntu для CUDA и ML, например, cuda-toolkit-8-0, digits, caffe-nv, torch и libcudnn5.

2. Установите через apt-get пакеты Torch

Теперь, когда у вас есть доступ к репозиториям по машинному обучению NVIDIA, установите пакет Torch и его зависимости:

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

Если вы работаете на другой системе или решили собрать Torch из источника, смотрите раздел  Памятка по Torch.

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

После установки запустить Torch можно следующим образом:

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

Здесь в качестве примера мы будем использовать ResNet. Инструкции по загрузке и установке модуля ResNet и набора тренировочных изображений смотрите на  странице ResNet Training в Facebook.

Допустим, вы успешно установили и то, и то.

Чтобы начать тренировку, откройте каталог ResNet clone и запустите:

main.lua

По умолчанию скрипт запускает ResNet-34 на ImageNet с одним GPU и двумя потоками загрузки данных:

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

Для тренировки ResNet-50 на четырех GPU и восьми CPU-потоках:

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

Натренированые модели и дополнительные материалы доступны на  странице ResNet Training.

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

В настоящем разделе демонстрируется ускорение на GPU для некоторых наборов данных. Тесты перечислены в порядке возрастания числа атомов. Производительность измеряется в нс/день (чем выше, тем лучше) и указывается в файле "mdout". Лучше всего оценивать все временные этапы (а не последние 1000 шагов).

ПРОИЗВОДИТЕЛЬНОСТЬ ТРЕНИРОВКИ
ALEXNET И GOOGLENET

Сверточная нейронная сеть AlexNet была разработана для классификации более 1,2 миллиона изображений в более тысячи категорий

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

Производительность NVIDIA Tesla P100 для PCIe
Производительность NVIDIA Tesla M40
Производительность NVIDIA Tesla K80

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

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

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

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

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

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