Этот пример показывает, как отправить пакетные задания обучения глубокому обучению в кластер так, чтобы можно было продолжить работать или закрыть 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
Загрузите все переменные в задании путем нажатия на переменные Load
Удалите задание, когда вы будете сделаны путем нажатия на Delete