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

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

Учебные глубокие нейронные сети часто занимают часы или дни. Чтобы использовать время эффективно, можно обучить нейронные сети как пакетные задания и выбрать результаты кластера, когда они готовы. Можно продолжить работать в MATLAB, в то время как расчеты происходят или закрывают MATLAB и получают результаты позже с помощью Монитора Задания. Этот пример отправляет параллельную развертку параметра в Использовании parfor, чтобы Обучить Несколько Нейронных сетей для глубокого обучения (Deep Learning Toolbox) как пакетное задание. После того, как задание завершено, можно выбрать обучивший нейронные сети и сравнить их точность.

Требования

Прежде чем можно будет запустить этот пример, необходимо сконфигурировать кластер и загрузить данные на Облако. В MATLAB можно создать кластеры в облаке непосредственно с Рабочего стола MATLAB. На вкладке Home, в меню Parallel, выбирают Create и Manage Clusters. В Кластерном менеджере по Профилю нажмите Create Cloud Cluster. В качестве альтернативы можно использовать MathWorks Cloud Center, чтобы создать и получить доступ, вычисляют кластеры. Для получения дополнительной информации смотрите Начало работы с Центром Облака. В данном примере гарантируйте, что ваш кластер установлен по умолчанию на вкладке MATLAB Home, параллельно> Выбирают Default Cluster. После этого загрузите свои данные на блок Amazon S3 и используйте их непосредственно из MATLAB. Этот пример использует копию набора данных CIFAR-10, который уже хранится в Amazon S3. Для инструкций смотрите Данные о Глубоком обучении Загрузки к Облаку (Deep Learning Toolbox).

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

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

В этом случае отправьте trainMultipleNetworks скрипт к кластеру. Этот скрипт содержит параллельную развертку параметра в Использовании parfor, чтобы Обучить Несколько Нейронных сетей для глубокого обучения (Deep Learning Toolbox). Поскольку скрипт содержит parfor цикл, задайте 4 дополнительные рабочие с Pool аргумент пары "имя-значение".

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

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

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

Выберите результаты программно

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

wait(job1);

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

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 обратите внимание на ID задания и затем получите задание позже при помощи findJob функция.

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

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

Удалите задание когда вы закончите. Задание удалено из Монитора Задания.

delete(job1);

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

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

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

  • Загрузите задание в рабочую область путем нажатия на Show Details

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

  • Удалите задание когда вы закончите путем нажатия на Delete

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

Связанные примеры

Больше о