Используйте Experiment Manager для параллельного обучения сетей

Этот пример показывает, как обучать глубокие сети параллельно с помощью Experiment Manager. Параллельный запуск эксперимента позволяет попробовать различные строения обучения одновременно. Можно также использовать MATLAB ® во время обучения. Параллельное выполнение требует Parallel Computing Toolbox™.

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

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

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

Сначала откройте пример. Experiment Manager загружает проект с помощью предварительно сконфигурированного эксперимента, который можно просмотреть и запустить. Чтобы открыть эксперимент, в панели Experiment Browser дважды кликните имя эксперимента (AugmentedDataExperiment).

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

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

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

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

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

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

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

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

Функция Setup настраивает обучающие данные, сетевую архитектуру и опции обучения для эксперимента. Чтобы просмотреть функцию настройки, в разделе Setup Function, нажмите Edit. Функция настройки откроется в РЕДАКТОРА MATLAB.

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

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

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

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

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

Раздел Metrics задает дополнительные функции, которые оценивают результаты эксперимента. Этот пример не включает какие-либо пользовательские метрические функции.

Запуск параллельного пула

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

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

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

Использование графического процессора для глубокого обучения требует Parallel Computing Toolbox и поддерживаемого графического процессора устройства. Для получения дополнительной информации смотрите Поддержку GPU by Release (Parallel Computing Toolbox).

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

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

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

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

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

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

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

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

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

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

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

  3. На панели аннотации введите свои наблюдения в текстовое поле.

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

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

Также для повторного запуска всех отмененных испытаний на панели инструментов Experiment Manager нажмите кнопку Перезапустить все отмененные.

Закройте эксперимент

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

См. также

Приложения

Функции

Похожие темы