Нейронные сети по своей сути являются параллельными алгоритмами. Вы можете воспользоваться этим параллелизмом, используя Parallel Computing Toolbox™ для распределения обучения между многоядерными процессорами, графическими процессорами (GPU) и кластерами компьютеров с несколькими CPU и GPU.
Обучение глубоких сетей чрезвычайно интенсивно в вычислительном отношении, и вы обычно можете ускорить обучение, используя высокопроизводительный графический процессор. Если у вас нет подходящего графического процессора, вы можете обучаться на одном или нескольких ядрах ЦП или арендовать графические процессоры в облаке. Сверточную нейронную сеть можно обучить на одном GPU или CPU, либо на нескольких GPU или ядрах CPU, либо параллельно на кластере. Для использования графического процессора или любого параллельного варианта требуется панель инструментов параллельных вычислений.
Совет
Поддержка графического процессора выполняется автоматически. По умолчанию trainNetwork функция использует графический процессор, если он доступен.
Если у вас есть доступ к машине с несколькими графическими процессорами, просто укажите вариант обучения 'ExecutionEnvironment','multi-gpu'.
Если вы хотите использовать больше ресурсов, вы можете масштабировать углубленное обучение в облаке.
| Ресурсы для обучения | Настройки | Подробнее |
|---|---|---|
Одиночный графический процессор на локальном компьютере | Автоматически. По умолчанию | |
Несколько графических процессоров на локальном компьютере | Определить | Выбор отдельных графических процессоров для использования в процессе обучения |
Несколько ядер ЦП на локальном компьютере | Определить С настройками по умолчанию, | |
Кластер или в облаке | После установки кластера по умолчанию укажите Обучение выполняется в кластере и возвращает встроенный график хода выполнения в локальный MATLAB ®. | Обучение сети в облаке с помощью автоматической параллельной поддержки |
| Сценарий обучения | Рекомендации | Подробнее |
|---|---|---|
| Интерактивно на локальном компьютере или в облаке | Использовать parfor шлейф для обучения нескольких сетей и графика результатов с использованием OutputFcn. Выполняется локально по умолчанию или выберите другой профиль кластера. | Использование parfor для обучения нескольких сетей глубокого обучения |
| В фоновом режиме на локальном компьютере или в облаке | Использовать parfeval для обучения без блокирования локального MATLAB и построения графика результатов с использованием OutputFcn. Выполняется локально по умолчанию или выберите другой профиль кластера. | Параллельно тренировать сети глубокого обучения Использовать parfeval для обучения нескольких сетей глубокого обучения |
| В кластере и выключите локальный компьютер | Используйте batch для отправки кода обучения в кластер. Можно закрыть MATLAB и получить результаты позже. | Отправить пакетное задание глубокого обучения в кластер |
Если глубокое обучение занимает несколько часов или дней, вы можете арендовать высокопроизводительные графические процессоры в облаке, чтобы ускорить обучение. Работа в облаке требует некоторой начальной настройки, но после начальной настройки с использованием облака может сократить время обучения или позволить вам обучать больше сетей одновременно. Чтобы попробовать глубокое обучение в облаке, вы можете следовать примеру, чтобы настроить учетные записи, скопировать данные в облако и создать кластер. После начальной установки можно запустить учебный код с минимальными изменениями для запуска в облаке. После настройки кластера по умолчанию просто укажите параметр обучения 'ExecutionEnvironment','parallel' для обучения сетей в облачном кластере на нескольких графических процессорах.
| Настройка глубокого обучения в облаке | Примечания | Подробнее |
|---|---|---|
| Настройка облачного центра MathWorks и учетных записей Amazon | Разовая настройка. | Начало работы с облачным центром |
| Создание кластера | Используйте Cloud Center для настройки и запуска кластеров в облаке Amazon. Для глубокого обучения выберите тип машины с графическими процессорами, например, экземпляры P2 или G3. | Создание облачного кластера |
| Загрузка данных в облако | Для работы с данными в облаке загрузите их в Amazon S3. Используйте хранилища данных для доступа к данным в S3 с настольного клиента MATLAB или от работников кластера без изменения кода. | Загрузка данных глубокого обучения в облако |
Если вы используете вычислительный кластер Linux с быстрым взаимодействием между машинами, такими как Infiniband, или быстрым взаимодействием между GPU на разных машинах, таких как GPUDirect RDMA, вы можете воспользоваться преимуществами быстрой поддержки нескольких узлов в MATLAB. Включите эту поддержку для всех работников в пуле, задав переменную среды PARALLEL_SERVER_FAST_MULTINODE_GPU_COMMUNICATION кому 1. Задайте эту переменную среды в диспетчере профилей кластера.
Эта функция является частью библиотеки NVIDIA NCCL для связи GPU. Для его настройки необходимо задать дополнительные переменные среды для определения протокола сетевого интерфейса, особенно NCCL_SOCKET_IFNAME. Дополнительные сведения см. в документации NCCL и, в частности, в разделе Переменные среды NCCL.