exponenta event banner

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

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

Совет

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

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

Для решения проблем с использованием слишком больших наборов данных для размещения в памяти не требуется несколько компьютеров. Вы можете использовать augmentedImageDatastore для работы с пакетами данных без необходимости в кластере машин. Пример см. в разделе Сеть поездов с дополненными изображениями. Однако при наличии кластера может быть полезно перенести код в хранилище данных, а не перемещать большие объемы данных.

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

MATLAB ®

Глубокое обучение Toolbox™

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

MATLAB

Инструментарий для глубокого обучения

GPUПо умолчанию trainNetwork функция использует графический процессор, если он доступен. Требуется поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Проверьте графический процессор с помощью gpuDevice. Укажите среду выполнения с помощью trainingOptions функция.

MATLAB

Инструментарий для глубокого обучения

Панель инструментов для параллельных вычислений

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

MATLAB

Инструментарий для глубокого обучения

Панель инструментов для параллельных вычислений

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

MATLAB

Инструментарий для глубокого обучения

Панель инструментов для параллельных вычислений

Параллельный Server™ MATLAB

Совет

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительные сведения см. в разделе Масштабирование глубокого обучения параллельно и в облаке и выбор отдельных графических процессоров для использования при обучении.

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

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

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

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

Выборка и предварительная обработка данных в фоновом режиме

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

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

Можно точно настроить вычисления обучения и нагрузки на отправку данных между работниками, указав 'WorkerLoad' аргумент пары имя-значение trainingOptions. Для дополнительных параметров можно изменить число работников параллельного пула. Дополнительные сведения см. в разделе Определение параметров параллельного вычисления (панель инструментов параллельного вычисления)

См. также

|

Связанные темы