Масштабирование глубокого обучения параллельно и в облаке

Глубокое обучение на нескольких графических процессорах

Нейронные сети по своей сути являются параллельными алгоритмами. Вы можете воспользоваться этим параллелизмом, используя Parallel Computing Toolbox™, чтобы распределить обучение между многоядерными центральными процессорами, графическими модулями (GPU) и кластерами компьютеров с несколькими центральными процессорами и графическими процессорами.

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

Совет

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

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

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

Встроенная параллельная поддержка глубокого обучения

Обучающий ресурсНастройкиПодробнее

Один графический процессор на локальной машине

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

'ExecutionEnvironment'

Создайте простую сеть глубокого обучения для классификации

Несколько графических процессоров на локальной машине

Задайте 'ExecutionEnvironment','multi-gpu' с trainingOptions функция.

'ExecutionEnvironment'

Выберите конкретные графические процессоры для обучения

Несколько ядер центрального процессора на локальной машине

Задайте 'ExecutionEnvironment','parallel'.

С настройками по умолчанию, 'parallel' использует профиль локального кластера. Используйте только ЦП, если у вас нет GPU, поскольку центральные процессоры обычно намного медленнее, чем графические процессоры для обучения.

'ExecutionEnvironment'

Кластер или в облаке

После установки кластера по умолчанию задайте 'ExecutionEnvironment','parallel' с trainingOptions функция.

Обучение выполняется на кластере и возвращает встроенный график прогресса в локальный MATLAB®.

Обучите сеть в облаке с помощью автоматической параллельной поддержки

Обучите несколько глубоких сетей параллельно

Сценарий обученияРекомендацииПодробнее
Интерактивно на локальной машине или в облакеИспользуйте parfor цикл для обучения нескольких сетей и построения графика результатов с помощью OutputFcn. Запуски локально по умолчанию или выбор другого профиля кластера.Используйте parfor для обучения нескольких Нейронных сетей для глубокого обучения
В фоновом режиме на локальной машине или в облакеИспользовать parfeval чтобы обучаться, не блокируя локальный MATLAB, и строить графики результатов с помощью OutputFcn. Запуски локально по умолчанию или выбор другого профиля кластера.

Обучите Нейронные сети для глубокого обучения параллельно

Используйте parfeval для обучения нескольких Нейронных сетей для глубокого обучения

В кластере и отключите локальный компьютерИспользуйте batch функция для отправки обучающего кода кластеру. Можно закрыть MATLAB и получить результаты позже.Отправка пакетного задания глубокого обучения в кластер

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

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

Настройте глубокое обучение в облакеПримечанияПодробнее
Настройка учетных записей MathWorks Cloud Center и AmazonОдноразовая настройка.Начало работы с облачным центром
Создайте кластерИспользуйте Cloud Center, чтобы настроить и запустить кластеры в облаке Amazon. Для глубокого обучения выберите тип машины с такими графическими процессорами, как P2 или G3 образцы.Создайте облако
Загрузите данные в облакоЧтобы работать с данными в облаке, загрузите на Amazon S3. Используйте хранилища данных для доступа к данным в S3 от рабочего стола MATLAB или от работников кластера, не меняя код.Загрузите данные глубокого обучения в облако

Расширенная поддержка быстрого мультиузла графическими процессорами

Если вы используете вычислительный кластер Linux с быстрыми соединениями между компьютерами, такими как Infiniband, или быстрыми соединениями между графическими процессорами на разных компьютерах, такими как GPUDirect RDMA, вы можете воспользоваться преимуществами быстрого мультиузла в MATLAB. Включите эту поддержку для всех работников пула путем установки переменного окружения PARALLEL_SERVER_FAST_MULTINODE_GPU_COMMUNICATION на 1. Установите эту переменную окружения в диспетчере профилей кластеров.

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

Похожие темы