Глубокое обучение для Больших данных на графических процессорах и параллельно

Обучение глубоких сетей в вычислительном отношении интенсивно; однако, нейронные сети являются по сути параллельными алгоритмами. Можно обычно ускорять обучение сверточных нейронных сетей по распределительному образованию параллельно через многожильные центральные процессоры, высокоэффективные графические процессоры и кластеры с несколькими центральными процессорами и графическими процессорами. Используя графический процессор или параллельные опции требует Parallel Computing Toolbox™.

Совет

Поддержка графического процессора является автоматической, если у вас есть Parallel Computing Toolbox. По умолчанию, trainNetwork функционируйте использует графический процессор при наличии.

Если у вас есть доступ к машине с помощью нескольких графических процессоров, то просто задают опцию обучения 'ExecutionEnvironment','multi-gpu'.

Вам не нужны несколько компьютеров, чтобы решить задачи с помощью наборов данных, слишком больших, чтобы уместиться в памяти. Можно использовать augmentedImageDatastore функционируйте, чтобы работать с пакетами данных, не нуждаясь в кластере машин. Для примера смотрите, Обучат сеть с Увеличенными Изображениями. Однако, если вы имеете кластер в наличии, может быть полезно взять ваш код к репозиторию данных вместо того, чтобы переместить большие объемы данных вокруг.

Оборудование глубокого обучения и факторы памятиРекомендацииНеобходимые продукты
Данные, слишком большие, чтобы уместиться в памятиЧтобы импортировать данные от коллекций изображений, которые являются слишком большими, чтобы уместиться в памяти, используйте augmentedImageDatastore функция. Эта функция спроектирована, чтобы считать пакеты изображений для более быстрой обработки в приложениях компьютерного зрения и машинном обучении.

MATLAB®

Deep Learning Toolbox™

Центральный процессорЕсли у вас нет подходящего графического процессора, то можно обучаться на центральном процессоре вместо этого. По умолчанию, trainNetwork функционируйте использует центральный процессор, если никакой графический процессор не доступен.

MATLAB

Deep Learning Toolbox

Графический процессорПо умолчанию, trainNetwork функционируйте использует графический процессор при наличии. Требует, чтобы CUDA® включил NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Проверяйте свой графический процессор с помощью gpuDevice. Задайте среду выполнения с помощью trainingOptions функция.

MATLAB

Deep Learning Toolbox

Parallel Computing Toolbox

Найдите что-либо подобное на своей локальной машине с помощью нескольких графических процессоров или ядер процессораОбманите несколько рабочих путем определения среды выполнения с trainingOptions функция. Если вы имеете больше чем один графический процессор на своей машине, задаете 'multi-gpu'. В противном случае задайте 'parallel'.

MATLAB

Deep Learning Toolbox

Parallel Computing Toolbox

Параллель на кластере или в облакеМасштабируйте, чтобы использовать рабочих на кластерах или в облаке, чтобы ускорить ваши расчеты глубокого обучения. Используйте trainingOptions и задайте 'parallel' использовать вычислить кластер. Для получения дополнительной информации смотрите Глубокое обучение в Облаке.

MATLAB

Deep Learning Toolbox

Parallel Computing Toolbox

MATLAB Parallel Server™

Все функции для обучения глубокому обучению, прогноза и валидации в Deep Learning Toolbox выполняют расчеты с помощью арифметики с плавающей точкой, с одинарной точностью. Функции для глубокого обучения включают trainNetwork, predict, classify, и activations. Программное обеспечение использует арифметику с одинарной точностью, когда вы обучаете нейронные сети с помощью и центральных процессоров и графических процессоров.

Поскольку производительность с двойной точностью и с одинарной точностью графических процессоров может отличаться существенно, важно знать, в котором выполняются расчеты точности. Если вы только используете графический процессор в глубоком обучении, то производительность с одинарной точностью является одной из самых важных характеристик графического процессора. Если вы также используете графический процессор в других расчетах с помощью Parallel Computing Toolbox, то высоко производительность с двойной точностью важна. Это вызвано тем, что много функций в MATLAB используют арифметику с двойной точностью по умолчанию. Для получения дополнительной информации смотрите Улучшают Производительность Используя Вычисления Одинарной точности (Parallel Computing Toolbox).

Обучение с помощью нескольких графических процессоров

MATLAB поддерживает обучение одна сеть с помощью нескольких графических процессоров параллельно. Это может быть достигнуто с помощью нескольких графических процессоров на локальной машине, или на кластере или облаке с рабочими с помощью графических процессоров. Чтобы ускорить обучение с помощью нескольких графических процессоров, попытайтесь увеличить мини-пакетный размер и темп обучения.

  • Включите обучение мультиграфического процессора на своей локальной машине путем установки 'ExecutionEnvironment' опция к 'multi-gpu' с trainingOptions функция.

  • На кластере или облаке, набор 'ExecutionEnvironment' опция к 'parallel' с trainingOptions функция.

Сверточные нейронные сети обычно обучаются итеративно с помощью пакетов изображений. Это сделано, потому что целый набор данных слишком большой, чтобы поместиться в память графического процессора. Для оптимальной производительности можно экспериментировать с MiniBatchSize опция, которую вы задаете с trainingOptions функция.

Оптимальный пакетный размер зависит от вашей точной сети, набора данных и оборудования графического процессора. Когда обучение с помощью нескольких графических процессоров, каждый пакет изображений распределяется между графическими процессорами. Это эффективно увеличивает общую память графического процессора доступные, позволяющие большие пакетные размеры. Поскольку это улучшает значение каждого пакета, можно увеличить темп обучения. Хорошее общее руководство должно увеличить темп обучения пропорционально до увеличения пакетного размера. В зависимости от вашего приложения больший пакетный размер и темп обучения могут ускорить обучение без уменьшения в точности, до некоторого предела.

Используя несколько графических процессоров может значительно ускорить обучение. Чтобы решить, ожидаете ли вы обучение мультиграфического процессора поставить увеличение производительности, рассмотрите следующие факторы:

  • Какой длины итерация на каждом графическом процессоре? Если каждая итерация графического процессора коротка, то добавленные издержки связи между графическими процессорами могут доминировать. Попытайтесь увеличить расчет на итерацию при помощи большего пакетного размера.

  • Действительно ли все - графические процессоры на одной машине? Связь между графическими процессорами на различных машинах вводит значительную коммуникационную задержку. Можно смягчить это, если у вас есть подходящее оборудование. Для получения дополнительной информации смотрите Усовершенствованную Поддержку Быстрого Мультиузла Коммуникация графического процессора.

Чтобы узнать больше, смотрите, Увеличивают Глубокое обучение в параллели и в облаке и Выбирают Particular GPUs to Use for Training.

Глубокое обучение в облаке

Если вы не имеете подходящий графический процессор в наличии для более быстрого обучения сверточной нейронной сети, можно попробовать применение глубокого обучения несколькими высокоэффективными графическими процессорами в облаке, такой как на Amazon® Elastic Compute Cloud (Amazon EC2®). MATLAB, который Deep Learning Toolbox обеспечивает примерам, которые показывают вам, как выполнить глубокое обучение в облаке с помощью Amazon EC2 с P2 или экземплярами машины P3 и данными, сохранил в облаке.

Можно ускорить обучение при помощи нескольких графических процессоров на одной машине или в кластере машин с помощью нескольких графических процессоров. Обучите одну сеть с помощью нескольких графических процессоров или обучите многоуровневые модели целиком на тех же данных.

Для получения дополнительной информации о полном рабочем процессе облака смотрите Глубокое обучение в параллели и в облаке.

Выберите и предварительно обработайте данные в фоне

При обучении сети параллельно, можно выбрать и предварительно обработать данные в фоновом режиме. Чтобы выполнить отправку данных в фоновом режиме, включите фоновую отправку в мини-пакетном datastore, используемом trainNetwork. Можно использовать встроенный мини-пакетный datastore, такой как augmentedImageDatastore, denoisingImageDatastore, или pixelLabelImageDatastore. Можно также использовать пользовательский мини-пакетный datastore с фоновой включенной отправкой. Для получения дополнительной информации о создании пользовательских мини-пакетных хранилищ данных смотрите, Разрабатывают Пользовательский Мини-пакетный Datastore.

Чтобы включить фоновую отправку, установите DispatchInBackground свойство datastore к true.

Можно подстроить учебный расчет и загрузки отправки данных между рабочими путем определения 'WorkerLoad' аргумент пары "имя-значение" trainingOptions. Для расширенных настроек можно попытаться изменить количество рабочих параллельного пула. Для получения дополнительной информации смотрите, Задают Ваши Параллельные Настройки (Parallel Computing Toolbox)

Смотрите также

|

Похожие темы