Участник:Mikethehuman/sandbox
Материал из MachineLearning.
Глубокое обучение – быстро развивающийся сегмент области знания, связанной с искусственным интеллектом, - является катализатором развития самых разных отраслей, начиная от медицины и фармакологии и заканчивая автопилотируемыми автомобилями. Глубокое обучение (глубокое структурное обучение, или иерархическое обучение) -- это область машинного обучения, заключающаяся в построении нелинейной модели распознавания, каждый элемент которой описывает соответствующий уровень признакового агрегирования данных.
На конференции "GPU Technology Conference" [1] в 2015 г. генеральным директором NVIDIA Дженсоном Хуангом было представлено три новые технологии, которые используются для развития области глубокого обучения: TITAN X, DIGITS и DIGITS DevBox.
Содержание |
NVIDIA GeForce GTX TITAN X
TITAN X [2] – графический процессор для быстрого обучения глубоких нейронных сетей. Построенный на графической архитектуре NVIDIA Maxwell, TITAN X обладает вдвое большей производительностью и энергоэффективностью по сравнению с предшественником. TITAN X – это 12ГБ памяти и 3072 ядра, которые обеспечивают 7 терафлопс в вычислениях одинарной точности. Благодаря производительности и полосе пропускания памяти 336.5 ГБ/с, ускоритель рекомендуется использовать для построения сетей глубокого обучения с числом параметров до сотен миллионов. В частности, для обучения сети AlexNet [3] с помощью набора из 1.2 миллиона изображений ImageNet TITAN X понадобилось менее трех дней, тогда как 16-ядерный CPU справляется с этой задачей за 40 дней.
DIGITS Deep Learning GPU Training System
DIGITS [4] – программное обеспечение с открытым кодом [5], предназначенное для выполнения исследовательских работ по построению и конфигурации глубоких нейронных сетей. Интуитивно понятный пользовательский интерфейс и возможности управления DIGITS обеспечивают подготовку обучающих наборов данных локально и из сети. Типичным примером модели, оптимизируемой DIGITS, является комбинация сверточных нейронных сетей (CNN) для задачи классификации изображений.
Преимущества DIGITS
Основным преимуществом системы DIGITS является пользовательский интерфейс, взаимодействующий с пользователем через Web-приложение и ускоряющий процедуру инициализации необходимой модели [6].
Пример работы с DIGITS показан на рис. 1. Первый блок является главным, в нем осуществляется инициализация данных и подготовка моделей к оптимизации. По мере настройки параметров, пользователь может вносить изменения в структуру модели и выбирать модели оптимальной точности распознавания.
Кроме того, система DIGITS позволяет визуализировать нейронные сети и сохранять ранее полученные результаты и модели для сравнения с новыми. Реализованное Web-приложение позволяет группе пользователей обмениваться данными, моделями и результатами.
DIGITS DevBox
DIGITS DevBox [7] – специализированная рабочая станция для работы с задачами глубокого обучения, построенная на базе четырех TITAN X GPU, поставляемое с предустановленной системой обучения DIGITS. Система DIGITS DevBox является ядром комплексной платформы для ускорения исследований глубокого обучения. DevBox состоит из четырех карт GPU TITAN X, памяти и интерфейсов. Система поставляется с предустановленным программным обеспечением, которое необходимо ученым и исследователей для создания собственных глубоких нейронных сетей. В список приложений входят пакет программ DIGITS, самые популярные платформы глубокого обучения Caffe, Theano и Torch, а также cuDNN 2.0 – GPU-ускоренная библиотека для задач глубокого обучения от NVIDIA [8]. Первые результаты многопроцессорного обучения показывают, что DIGITS DevBox обеспечивает производительность почти в четыре раза выше по сравнению с одним TITAN X в тестах глубокого обучения. С помощью DIGITS DevBox обучить сеть AlexNet можно всего за 13 часов, тогда как обычному ПК на базе самого быстрого GPU потребовалось бы более двух суток, а системе на базе CPU - больше месяца.
Система DIGITS DevBox состоит из следующих компонентов.
- Четыре TITAN X GPU, обеспечивающие 7 тетрафлопс в ординарной точности, 12 Гб памяти и 336.5 Гб/с полосы пропускания памяти. В комплект DIGITS DevBox входят до четырех GPUs, до 64 GB DDR4, материнская плата ASUS X99 (8 PCIe slots) + Core i7, 2 x 48 port gen3 PCIe (PEX8748) + CPU for PCIe, накопитель, до 3x3 TB RAID 5 + M2 SATA + SSD, блок питания 1500W, операционная система Ubuntu 14.04, драйвера, NVIDIA® CUDA® Toolkit 7.0.
- Программное обеспечение NVIDIA DIGITS, предоставляющее интерфейсы для обучения и визуализации нейронных сетей для классификации изображений.
- Система Ubuntu 14.04 с предустановленными Caffe, Torch, Theano, BIDMach, cuDNN v2, and CUDA 7.0.
С чего начать
- Посмотреть вебинар по сверточным нейронным сетям [9] и Caffe для глубокого обучения [10].
- Установить фреймворк по выбору: Caffe, Torch или Theano.
- Загрузить и установить cuDNN [11], ускоренную на GPU библиотеку NVIDIA, содержащую примитивы для глубоких нейронных сетей.
Первая программа на CUDA
Чтобы написать первую программу на CUDA, надо установить:
- Microsoft Visual Studio (на MVR стоит версия Professional 2012),
- CUDA SDK (на MVR стоит версия 7.0) [12].
После установки SDK стоит посмотреть полезные примеры от NVIDIA, которые по умолчанию распаковываются в C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.0. Кроме того, появится возможность компилировать .cu файлы командой nvcc из командной строки, например,
nvcc -ptx myfun.cu
Это нужно, например, для того, чтобы использовать CudaKernel в Matlab для запуска своих CUDA-функций, см. [13].
Руководство по установке Caffe на Windows: [14]. Highlights: нужно поставить и прописать зависимости для OpenCV, Boost, OpenBLAS, GFlags, GLog, ProtoBuf, LevelDB, HDF5, LMDB. Кроме того, для облегчения процесса сборки понадобится установить CMake.
Руководство по установке Theano на Windows: [15].
Работа с Theano на Amazon Web Services
При отсутствии устройства GPU на локальной машине можно воспользоваться платным удаленным фреймворком, например, Amazon Web Services [16].
Подробные инструкции по инициализации удаленных вычислений на GPU, а также по удаленному использованию библиотек глубокого обучения можно прочитать в [17], [18], [19].
cuDNN
NVIDIA's cuDNN ConvNet library, now with Torch7 bindings (brought to you by Facebook AI Research). A few days ago, NVIDIA released the cuDNN library, a deep learning and convolutional net library that runs efficiently on their GPUs. An increasingly large number of NVIDIA GPU cycles are being spent training and running convolutional nets. It is an awesome move on NVIDIA's part to be offering direct support for convolutional nets. Some of us have been talking with NVIDIA's management and engineering teams about ConvNet and such for some time, and I'm really delighted to see their work come to fruition. Soumith Chintala, one of the main Torch7 contributors, who recently joined our team at Facebook AI Research, has released an interface to cuDNN for Torch7. This allows Torch users to use cuDNN as one of the ConvNet backends. There are quite a few efficient ConvNet backends for Torch7. Some of the most efficient ones (from Facebook, Google, Twitter, NYU) are not publicly available (at least not yet). They exploit things like parallelization over multiple GPUs, FFT, custom CUDA kernels, and other tricks. But a number of ConvNet backends for Torch7 are public. This includes Soumith's Torch bindings for Alex Krizhewski's cuda-convnet2, Maxime Oquab's NXN package, and Clement Farabet's nn.SpatialConvolutionMM module built into Torch (see Soumith's ConvNet benchmark page. Link below) Kudos to the CUDAs and happy convolving! - cuDNN website: https://developer.nvidia.com/cudnn - Torch7 bindings for cuDNN: https://github.com/soumith/cudnn.torch - Torch7 binding for cuda-convnet2: https://github.com/soumith/cuda-convnet2.torch - NXN convnet package for Torch7: https://github.com/qassemoquab/nxnrock - Soumith's ConvNet benchmarks: https://github.com/soumith/convnet-benchmarks - NVIDIA blog post about cuDNN: http://devblogs.nvidia.com/…/accelerate-machine-learning-c…/ - Gigaom article on cuDNN: https://gigaom.com/…/nvidia-stakes-its-claim-in-deep-learn…/
Список библиотек высокого уровня для работы с GPU
- Caffe: Framework for convolutional neural network algorithms
- cuda-convnet: High performance C++/CUDA implementation of convolutional neural networks
- Theano: Python library to define, optimize, and evaluate mathematical expressions
- Torch7: Scientific computing framework for machine learning algorithms
- cuBLAS: GPU-accelerated version of the complete standard BLAS library
- MATLAB: Easy-to-use HPC language integrating computation, visualization, and programming cxxnet: Neural network toolkit
- Отчет о производительности CUDA 6.5 и библиотек