Увеличьте глубокое обучение параллельно на графических процессорах, и в облаке

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

Рекомендуется обучить использование графического процессора или нескольких графических процессоров. Только используйте один центральный процессор или несколько центральных процессоров, если у вас нет графического процессора. Центральные процессоры обычно намного медленнее что графические процессоры и для обучения и для вывода. Работа одного графического процессора обычно предлагает намного лучшую эффективность, чем работа нескольких ядер процессора.

Если у вас нет подходящего графического процессора, можно арендовать высокоэффективные графические процессоры и кластеры в облаке. Для получения дополнительной информации о горячем, чтобы получить доступ к MATLAB® в облаке для глубокого обучения смотрите Глубокое обучение в Облаке.

Используя графический процессор или параллельные опции требует Parallel Computing Toolbox™. Используя графический процессор также требует поддерживаемого устройства графического процессора. Для получения информации о поддерживаемых устройствах смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox). Используя удаленный кластер также требует MATLAB Parallel Server™.

Совет

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

Запускать пользовательские учебные рабочие процессы, включая dlnetwork рабочие процессы, на графическом процессоре, используют minibatchqueue автоматически преобразовывать данные в gpuArray объекты.

Можно использовать параллельные ресурсы, чтобы увеличить глубокое обучение для одной сети. Можно также обучить несколько сетей одновременно. Следующие разделы показывают доступные варианты для глубокого обучения параллельно в MATLAB:

Примечание

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

Обучите одну сеть параллельно

Используйте локальные ресурсы, чтобы обучить одну сеть параллельно

Следующая таблица показывает вам доступные варианты для обучения и вывода с одной сетью на вашей локальной рабочей станции.

Ресурс trainNetwork Рабочие процессыПользовательские учебные рабочие процессыНеобходимые продукты
Один центральный процессор

Автоматический, если никакой графический процессор не доступен.

Обучение с помощью одного центрального процессора не рекомендуется.

Обучение с помощью одного центрального процессора не рекомендуется.

  • MATLAB

  • Deep Learning Toolbox™

Несколько ядер процессора

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

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

  • MATLAB

  • Deep Learning Toolbox

  • Parallel Computing Toolbox

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

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

В качестве альтернативы задайте ExecutionEnvironment опция обучения как "gpu"

Используйте minibatchqueue автоматически преобразовывать данные в gpuArray объекты. Для получения дополнительной информации смотрите Запуск Пользовательские Учебные Циклы на графическом процессоре и параллельно

Для примера смотрите, Обучат сеть Используя Пользовательский Учебный Цикл.

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

Задайте ExecutionEnvironment опция обучения как "multi-gpu".

Для примера смотрите, Обучат сеть Используя Автоматическую Поддержку мультиграфического процессора.

Начните локальный параллельный пул со стольких же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах

Использование parpool выполнить обучение или вывод с фрагментом мини-пакета на каждом рабочем. Преобразуйте каждый частичный мини-пакет данных к gpuArray объекты. Для обучения, совокупных градиентов, потери и параметров состояния после каждой итерации. Для получения дополнительной информации смотрите Запуск Пользовательские Учебные Циклы на графическом процессоре и параллельно.

Для примера смотрите, Обучат сеть параллельно с Пользовательским Учебным Циклом. Установите executionEnvironment переменная к "auto" или "gpu".

Используйте удаленные кластерные ресурсы, чтобы обучить одну сеть параллельно

Следующая таблица показывает вам доступные варианты для обучения и вывода с одной сетью в удаленном кластере.

Ресурс trainNetwork Рабочие процессыПользовательские учебные рабочие процессыНеобходимые продукты
Несколько центральных процессоров

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

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

  • MATLAB

  • Deep Learning Toolbox

  • Parallel Computing Toolbox

  • MATLAB Parallel Server

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

Задайте желаемый кластер как свой кластерный профиль по умолчанию. Для получения дополнительной информации смотрите, Управляют Кластерными Профилями и Автоматическим Созданием Пула

Задайте ExecutionEnvironment опция обучения как "parallel".

Для примера смотрите, Обучат сеть в Облаке Используя Автоматическую Параллельную Поддержку.

Запустите параллельный пул в желаемом кластере со столькими же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах

Использование parpool выполнить обучение или вывод с фрагментом мини-пакета на каждом рабочем. Преобразуйте каждый частичный мини-пакет данных к gpuArray объекты. Для обучения, совокупных градиентов, потери и параметров состояния после каждой итерации. Для получения дополнительной информации смотрите Запуск Пользовательские Учебные Циклы на графическом процессоре и параллельно

Для примера смотрите, Обучат сеть параллельно с Пользовательским Учебным Циклом. Установите executionEnvironment переменная к "auto" или "gpu".

Используйте Deep Network Designer и Experiment Manager, чтобы обучить одну сеть параллельно

Можно обучить одну сеть в параллели с помощью Deep Network Designer. Можно обучить использующие локальные ресурсы или удаленный кластер.

  • Чтобы обучить локально использование нескольких графических процессоров, установите ExectionEnvironment опция к multi-gpu в диалоговом окне Опций обучения.

  • Чтобы обучить использование удаленного кластера, установите ExectionEnvironment опция к parallel в диалоговом окне Опций обучения. Если нет никакого текущего параллельного пула, программное обеспечение запускает тот с помощью кластерного профиля по умолчанию. Если пул имеет доступ к графическим процессорам, то только рабочие с помощью уникального графического процессора выполняют учебный расчет. Если пул не имеет графических процессоров, то обучение происходит на всех доступных рабочих центрального процессора вместо этого.

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

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

Используйте локальные или удаленные кластерные ресурсы, чтобы обучаться, несколько объединяются в сеть параллельно

Чтобы обучить несколько сетей параллельно, обучите каждую сеть на различном параллельном рабочем. Можно изменить сеть или параметры обучения на каждом рабочем, чтобы выполнить развертки параметра параллельно.

Использование parfor (Parallel Computing Toolbox) или parfeval (Parallel Computing Toolbox), чтобы обучить одну сеть на каждом рабочем. Чтобы запуститься в фоновом режиме, не блокируя ваш локальный MATLAB, использовать parfeval. Можно построить результаты с помощью OutputFcn опция обучения.

Можно запуститься локально или использование удаленного кластера. Используя удаленный кластер требует MATLAB Parallel Server.

Ресурс trainNetwork Рабочие процессыПользовательские учебные рабочие процессыНеобходимые продукты
Несколько центральных процессоров

Задайте желаемый кластер как свой кластерный профиль по умолчанию. Для получения дополнительной информации смотрите, Управляют Кластерными Профилями и Автоматическим Созданием Пула

Использование parfor или parfeval одновременно выполнить обучение или вывод на каждом рабочем. Задайте ExecutionEnvironment опция обучения как "cpu" для каждой сети.

Для примеров смотрите

Задайте желаемый кластер как свой кластерный профиль по умолчанию. Для получения дополнительной информации смотрите, Управляют Кластерными Профилями и Автоматическим Созданием Пула

Использование parfor или parfeval одновременно выполнить обучение или вывод на каждом рабочем. Для получения дополнительной информации смотрите Запуск Пользовательские Учебные Циклы на графическом процессоре и параллельно

  • MATLAB

  • Deep Learning Toolbox

  • Parallel Computing Toolbox

  • (дополнительный) MATLAB Parallel Server

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

Запустите параллельный пул в желаемом кластере со столькими же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах

Использование parfor или parfeval одновременно выполнить сеть на каждом рабочем. Задайте ExecutionEnvironment опция обучения как "gpu" для каждой сети.

Для примеров смотрите

Запустите параллельный пул в желаемом кластере со столькими же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах

Использование parfor или parfeval одновременно выполнить обучение или вывод на каждом рабочем. Для получения дополнительной информации смотрите Запуск Пользовательские Учебные Циклы на графическом процессоре и параллельно

Преобразуйте каждый мини-пакет данных к gpuArray. Используйте minibatchqueue и набор OutputEnvironment свойство к 'gpu' автоматически преобразовывать данные в gpuArray объекты.

Используйте Experiment Manager, чтобы обучить несколько сетей параллельно

Можно использовать Experiment Manager, чтобы запустить суды по нескольким параллельным рабочим одновременно. Настройте свою параллельную среду и включите опцию Параллели Использования прежде, чем запустить ваш эксперимент. Запуски Experiment Manager столько же одновременных испытаний сколько существуют рабочие в вашем параллельном пуле. Для получения дополнительной информации смотрите Использование Experiment Manager, чтобы Обучить нейронные сети параллельно.

Пакетное глубокое обучение

Можно разгрузить расчеты глубокого обучения, чтобы запустить в фоновом режиме использование batch (Parallel Computing Toolbox) функция. Это означает, что можно продолжить использовать MATLAB, в то время как расчет запускается в фоновом режиме, или можно закрыть клиент MATLAB и выбрать результаты позже.

Можно запустить пакетные задания в локальном или удаленном кластере. Чтобы разгрузить ваши расчеты глубокого обучения, использовать batch представить скрипт или функцию, которая запускается в кластере. Можно выполнить любой вид расчета глубокого обучения как пакетное задание, включая параллельные расчеты. Для примера смотрите, Отправляют Пакетное задание Глубокого обучения в Кластер

Чтобы запуститься параллельно, используйте скрипт или функцию, которая содержит тот же код, который вы использовали бы, чтобы запуститься параллельно локально или в кластере. Например, ваш скрипт или функция могут запуститься trainNetwork использование "ExecutionEnvironment","parallel" опция или запуск пользовательский учебный цикл параллельно. Использование batch представить скрипт или функцию к кластеру и использовать Pool опция, чтобы задать количество рабочих вы хотите использовать. Для получения дополнительной информации об идущих параллельно расчетах с batch, смотрите Пакет Запуска Параллельные Задания (Parallel Computing Toolbox).

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

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

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

Чтобы получить результаты после, задание закончено, используйте fetchOutputs (Parallel Computing Toolbox) функция. fetchOutputs получает все переменные в пакетной рабочей области рабочего. Когда вы представляете пакетные задания как скрипт, по умолчанию, переменные рабочей области копируются от клиента в рабочих. Чтобы избежать рекурсии переменных рабочей области, представьте пакетные задания как функции вместо как скрипты.

Можно использовать diary (Parallel Computing Toolbox), чтобы получить командную строку выход, в то время как рабочие пакетные задания. Это может быть полезно при выполнении trainNetwork функция с Verbose набор опции к true.

Управляйте кластерными профилями и автоматическим созданием пула

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

Некоторые функции, включая trainNetwork, predict, classify, parfor, и parfeval может автоматически запустить параллельный пул. Чтобы использовать в своих интересах автоматическое параллельное создание пула, установите свой желаемый кластер как кластерный профиль по умолчанию в Кластерном менеджере по Профилю. В качестве альтернативы можно создать пул вручную и задать желаемый кластерный ресурс, когда вы создаете пул.

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

Точность глубокого обучения

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

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

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

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

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

| | | |

Похожие темы