exponenta event banner

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

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

В этом примере выполняется обучение двух сетей классификации изображений цифр от 0 до 9. Эксперимент обучает сети дополненным данным изображения, полученным путем применения случайных трансляций и горизонтальных отражений к набору данных Digits. Увеличение объема данных предотвращает переоборудование сетей и запоминание точных деталей обучающих изображений. При выполнении эксперимента Диспетчер экспериментов запускает параллельный пул и выполняет несколько одновременных испытаний в зависимости от количества доступных параллельных работников. В каждом испытании используется различная комбинация сетевых и обучающих вариантов. Пока вы следите за ходом обучения, вы можете остановить испытания, которые кажутся неудовлетворительными.

В качестве альтернативы можно использовать parfor или parfeval обучение нескольких сетей в параллельном программном режиме. Дополнительные сведения см. в разделе Обучение сетям глубокого обучения параллельно.

Открытый эксперимент

Сначала откройте пример. Диспетчер экспериментов загружает проект с предварительно настроенным экспериментом, который можно проверить и запустить. Чтобы открыть эксперимент, в панели «Обозреватель экспериментов» дважды щелкните имя эксперимента (AugmentedDataExperiment).

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

Поле Описание содержит текстовое описание эксперимента. В этом примере приводится следующее описание:

Classification using data image augmentation to apply random
translations and horizontal reflections to the Digits data set.

Раздел «Гиперпараметры» определяет стратегию (Exhaustive Sweep) и значения гиперпараметров для использования в эксперименте. При выполнении эксперимента Диспетчер экспериментов обучает сеть с использованием каждой комбинации значений гиперпараметров, указанных в таблице гиперпараметров. В этом примере используются два гиперпараметра: Network и TrainingOptions.

Network определяет сеть для обучения. Возможные значения для этого гиперпараметра:

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

  • "fast" - Experiment Manager обучает сеть максимум 10 эпох с начальной скоростью обучения 0,1.

  • "slow" - Experiment Manager обучает сеть максимум 15 эпох с начальным уровнем обучения 0,001.

Функция настройки настраивает данные обучения, сетевую архитектуру и параметры обучения для эксперимента. Чтобы проверить функцию настройки, в разделе Функция настройки (Setup Function) щелкните Изменить (Edit). Функция настройки открывается в редакторе MATLAB.

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

  • Load Training Data загружает изображения из набора данных Digits и разбивает этот набор данных на наборы обучения и проверки. Для данных обучения в этом примере создается augmentedImageDatastore объект путем применения случайных трансляций и горизонтальных отражений. Данные проверки сохраняются в imageDatastore объект без увеличения. Дополнительные сведения об этом наборе данных см. в разделе Наборы данных изображений.

  • Define Network Architecture определяет архитектуру сверточной нейронной сети для классификации глубокого обучения. В этом примере описывается сеть, указанная для гиперпараметра. Network.

  • Задание параметров обучения определяет trainingOptions объект для эксперимента. В этом примере значение, указанное для гиперпараметра TrainingOptions определяет варианты обучения 'InitialLearnRate' и 'MaxEpochs'.

Обратите внимание, что Experiment Manager не поддерживает параллельное выполнение при установке опции обучения 'ExecutionEnvironment' кому 'multi-gpu' или 'parallel' или включить опцию обучения 'DispatchInBackground'. Дополнительные сведения см. в разделе Настройка встроенного учебного эксперимента.

В разделе «Метрики» указаны дополнительные функции, позволяющие оценить результаты эксперимента. Этот пример не включает пользовательские метрические функции.

Запустить параллельный пул

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

numGPUs = gpuDeviceCount("available");
parpool(numGPUs);

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

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

Запустить эксперимент параллельно

Чтобы запустить эксперимент, на панели инструментов Диспетчера экспериментов щелкните Использовать параллельно (Use Parallel), а затем Выполнить (Run). Если текущий параллельный пул отсутствует, диспетчер экспериментов запускает его с использованием профиля кластера по умолчанию. Затем Experiment Manager выполняет несколько одновременных испытаний в зависимости от количества доступных параллельных работников. В каждом испытании используется различная комбинация значений гиперпараметров.

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

Во время выполнения эксперимента можно отслеживать его ход, отображая график обучения для каждого испытания. Выберите пробную версию и щелкните График обучения.

Остановить, отменить и перезапустить пробные версии

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

Например, потеря проверки для испытаний, в которых используется "7 layers" сеть становится неопределенной только после нескольких итераций.

Продолжение обучения для этих испытаний не дает никаких полезных результатов, поэтому вы можете остановить эти испытания до завершения обучения. Experiment Manager продолжает обучение для оставшихся испытаний.

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

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

  2. Выберите «Добавить аннотацию».

  3. На панели Аннотации (Annotations) введите данные наблюдений в текстовое поле.

  4. Повторите предыдущие шаги для второй остановленной пробной версии.

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

Кроме того, чтобы повторно запустить все отмененные испытания, на панели инструментов диспетчера экспериментов нажмите кнопку «Перезапустить все отмененные».

Близкий эксперимент

На панели «Обозреватель экспериментов» щелкните правой кнопкой мыши имя проекта и выберите «Закрыть проект». Менеджер экспериментов закрывает все эксперименты и результаты, содержащиеся в проекте.

См. также

Приложения

Функции

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