exponenta event banner

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

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

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

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

Совет

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

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

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

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

Ресурсы для обученияНастройкиПодробнее

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

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

'ExecutionEnvironment'

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

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

Определить 'ExecutionEnvironment','multi-gpu' с trainingOptions функция.

'ExecutionEnvironment'

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

Несколько ядер ЦП на локальном компьютере

Определить 'ExecutionEnvironment','parallel'.

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

'ExecutionEnvironment'

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

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

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

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

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

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

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

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

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

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

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

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

Расширенная поддержка быстрой многоузловой связи GPU

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

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

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