Отправка пакетного задания глубокого обучения в кластер

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

Обучение глубоких нейронных сетей часто занимает часы или дни. Чтобы эффективно использовать время, можно обучить нейронные сети как пакетные задания и извлечь результаты из кластера, когда они будут готовы. Можно продолжить работу в MATLAB во время расчетов или закрыть MATLAB и получить результаты позже с помощью Job Monitor. Этот пример отправляет параллельный параметр sweep в Use parfor для обучения нескольких нейронных сетей для глубокого обучения в качестве пакетного задания. После того, как работа будет завершена, можно получить обученные сети и сравнить их точности.

Требования

Прежде чем вы сможете запустить этот пример, вам нужно сконфигурировать кластер и загрузить свои данные в облако. В MATLAB можно создавать кластеры в облаке непосредственно с рабочего стола MATLAB. На вкладке «Вкладке Home», в меню Parallel, выберите Create and Manage Clusters. В Диспетчере профилей кластеров щелкните Создать облако. Также можно использовать MathWorks Cloud Center для создания и доступа к вычислительным кластерам. Дополнительные сведения см. в разделе Начало работы с облачным центром. В данном примере убедитесь, что кластер установлен по умолчанию на вкладке MATLAB Home, в Parallel > Select a Default Cluster. После этого загрузите свои данные в блок S3 Amazon и используйте их непосредственно из MATLAB. Этот пример использует копию CIFAR-10 набора данных, который уже хранится в Amazon S3. Инструкции см. в разделе Загрузка данных глубокого обучения в облако.

Отправить пакетное задание

Отправка скрипта как пакетного задания в кластер с помощью batch функция. Кластер выделяет один рабочий процесс для выполнения содержимого вашего скрипта. Если параллельный код в скрипте получает пользу от дополнительных работников, например, он включает автоматическую параллельную поддержку или цикл parfor, необходимо запросить работников явно. batch использует один рабочий процесс для клиента, выполняющего скрипт. Вы можете задать больше работников, используя аргумент пары "имя-значение" 'Pool'.

В этом случае отправьте trainMultipleNetworks скрипт в кластер. Этот скрипт содержит параллельный параметр sweep в Use parfor для обучения нескольких нейронных сетей для глубокого обучения. Потому что скрипт содержит parfor цикл, задайте 4 дополнительные работники с Pool аргумент пары "имя-значение".

totalNumberOfWorkers = 5;
job1 = batch('trainMultipleNetworks', ...
    'Pool',totalNumberOfWorkers-1);

Текущий статус задания можно увидеть в кластере, выбрав монитор заданий. В разделе Environment на вкладке Home выберите Parallel > Monitor Jobs, чтобы открыть Job Monitor.

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

Программно извлеките результаты

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

wait(job1);

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

load(job1,'accuracies');
accuracies
accuracies = 4×1

    0.8312
    0.8276
    0.8288
    0.8258

load(job1,'trainedNetworks');
trainedNetworks
trainedNetworks = 4×1 cell array
    {1×1 SeriesNetwork}
    {1×1 SeriesNetwork}
    {1×1 SeriesNetwork}
    {1×1 SeriesNetwork}

Чтобы загрузить все переменные в пакетном задании, используйте load функция без аргументов.

load(job1);

Если вы закрываете MATLAB, можно восстановить задание в кластере, чтобы извлечь результаты либо во время расчета, либо после завершения расчета. Прежде чем закрыть MATLAB, запишите идентификатор задания и затем получите задание позже с помощью findJob функция.

Чтобы получить задание, сначала создайте объект кластера для вашего кластера с помощью parcluster функция. Затем укажите идентификатор задания для findJob. В этом случае идентификатор задания 1.

c = parcluster('MyClusterInTheCloud');
job = findJob(c,'ID',1);

Удалите задание после завершения работы. Задание удаляется из монитора заданий.

delete(job1);

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

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

После выполнения задания можно получить результаты из монитора заданий. В разделе Environment на вкладке Home выберите Parallel > Monitor Jobs, чтобы открыть Job Monitor. Затем щелкните правой кнопкой мыши задание, чтобы отобразить контекстное меню. Из этого меню можно:

  • Загрузите задание в рабочую область нажав Показать подробности

  • Загрузите все переменные в задание нажав Загрузить переменные

  • Удалите задание, когда вы закончите, нажав Удалить

См. также

(Parallel Computing Toolbox)

Похожие примеры

Подробнее о