Обучение глубоких сетей в вычислительном отношении интенсивно и может занять много часов вычислительного времени; однако, нейронные сети являются по сути параллельными алгоритмами. Можно использовать в своих интересах этот параллелизм путем выполнения в параллельных использующих высокоэффективных графических процессорах и компьютерных кластерах.
Рекомендуется обучить использование графического процессора или нескольких графических процессоров. Только используйте один центральный процессор или несколько центральных процессоров, если у вас нет графического процессора. Центральные процессоры обычно намного медленнее что графические процессоры и для обучения и для вывода. Работа одного графического процессора обычно предлагает намного лучшую эффективность, чем работа нескольких ядер процессора.
Если у вас нет подходящего графического процессора, можно арендовать высокоэффективные графические процессоры и кластеры в облаке. Для получения дополнительной информации о горячем, чтобы получить доступ к MATLAB® в облаке для глубокого обучения смотрите Глубокое обучение в Облаке.
Используя графический процессор или параллельные опции требует Parallel Computing Toolbox™. Используя графический процессор также требует поддерживаемого устройства графического процессора. Для получения информации о поддерживаемых устройствах смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox). Используя удаленный кластер также требует MATLAB Parallel Server™.
Совет
Для trainNetwork
рабочие процессы, поддержка графического процессора является автоматической. По умолчанию, trainNetwork
функционируйте использует графический процессор, если вы доступны. Если вы имеете доступ к машине с помощью нескольких графических процессоров, задаете ExecutionEnvironment
опция обучения как "multi-gpu"
.
Запускать пользовательские учебные рабочие процессы, включая dlnetwork
рабочие процессы, на графическом процессоре, используют minibatchqueue
автоматически преобразовывать данные в gpuArray
объекты.
Можно использовать параллельные ресурсы, чтобы увеличить глубокое обучение для одной сети. Можно также обучить несколько сетей одновременно. Следующие разделы показывают доступные варианты для глубокого обучения параллельно в MATLAB:
Примечание
Если при запуске MATLAB на одной удаленной машине, например, машина облака, с которой вы соединяетесь через ssh или протокол удаленного рабочего стола, то выполняет шаги для локальных ресурсов. Для получения дополнительной информации о соединении с ресурсами облака смотрите Глубокое обучение в Облаке.
Следующая таблица показывает вам доступные варианты для обучения и вывода с одной сетью на вашей локальной рабочей станции.
Ресурс |
trainNetwork Рабочие процессы | Пользовательские учебные рабочие процессы | Необходимые продукты |
---|---|---|---|
Один центральный процессор | Автоматический, если никакой графический процессор не доступен. Обучение с помощью одного центрального процессора не рекомендуется. | Обучение с помощью одного центрального процессора не рекомендуется. |
|
Несколько ядер процессора | Обучение с помощью нескольких ядер процессора не рекомендуется, если у вас есть доступ к графическому процессору. | Обучение с помощью нескольких ядер процессора не рекомендуется, если у вас есть доступ к графическому процессору. |
|
Один графический процессор | Автоматический. По умолчанию обучение и вывод работают на графическом процессоре, если вы доступны. В качестве альтернативы задайте | Используйте Для примера смотрите, Обучат сеть Используя Пользовательский Учебный Цикл. | |
Несколько графических процессоров | Задайте Для примера смотрите, Обучат сеть Используя Автоматическую Поддержку мультиграфического процессора. | Начните локальный параллельный пул со стольких же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах Использование Для примера смотрите, Обучат сеть параллельно с Пользовательским Учебным Циклом. Установите |
Следующая таблица показывает вам доступные варианты для обучения и вывода с одной сетью в удаленном кластере.
Ресурс |
trainNetwork Рабочие процессы | Пользовательские учебные рабочие процессы | Необходимые продукты |
---|---|---|---|
Несколько центральных процессоров | Обучение с помощью нескольких ядер процессора не рекомендуется, если у вас есть доступ к графическому процессору. | Обучение с помощью нескольких ядер процессора не рекомендуется, если у вас есть доступ к графическому процессору. |
|
Несколько графических процессоров | Задайте желаемый кластер как свой кластерный профиль по умолчанию. Для получения дополнительной информации смотрите, Управляют Кластерными Профилями и Автоматическим Созданием Пула Задайте Для примера смотрите, Обучат сеть в Облаке Используя Автоматическую Параллельную Поддержку. | Запустите параллельный пул в желаемом кластере со столькими же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах Использование Для примера смотрите, Обучат сеть параллельно с Пользовательским Учебным Циклом. Установите |
Можно обучить одну сеть в параллели с помощью 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 Рабочие процессы | Пользовательские учебные рабочие процессы | Необходимые продукты |
---|---|---|---|
Несколько центральных процессоров | Задайте желаемый кластер как свой кластерный профиль по умолчанию. Для получения дополнительной информации смотрите, Управляют Кластерными Профилями и Автоматическим Созданием Пула Использование Для примеров смотрите
| Задайте желаемый кластер как свой кластерный профиль по умолчанию. Для получения дополнительной информации смотрите, Управляют Кластерными Профилями и Автоматическим Созданием Пула Использование |
|
Несколько графических процессоров | Запустите параллельный пул в желаемом кластере со столькими же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах Использование Для примеров смотрите
| Запустите параллельный пул в желаемом кластере со столькими же рабочих сколько доступные графические процессоры. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB на Нескольких графических процессорах Использование Преобразуйте каждый мини-пакет данных к |
Можно использовать 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
чтобы управлять мини-пакетами, ваши данные преобразованы в одинарную точность по умолчанию.
trainingOptions
| minibatchqueue
| trainNetwork
| Deep Network Designer | Experiment Manager