В этом примере показано, как отправить пакетные задания обучения глубокому обучению в кластер так, чтобы можно было продолжить работать или закрыть MATLAB во время обучения.
Учебные глубокие нейронные сети часто занимают часы или дни. Чтобы использовать время эффективно, можно обучить нейронные сети как пакетные задания и выбрать результаты кластера, когда они готовы. Можно продолжить работать в MATLAB, в то время как расчеты происходят или закрывают MATLAB и получают результаты позже с помощью Монитора Задания. Этот пример отправляет параллельную развертку параметра в Использовании parfor, чтобы Обучить Несколько Нейронных сетей для глубокого обучения как пакетное задание. После того, как задание завершено, можно выбрать обучивший нейронные сети и сравнить их точность.
Прежде чем можно будет запустить этот пример, необходимо сконфигурировать кластер и загрузить данные на Облако. В MATLAB можно создать кластеры в облаке непосредственно с Рабочего стола MATLAB. На вкладке Home, в меню Parallel, выбирают Create и Manage Clusters. В Кластерном менеджере по Профилю нажмите Create Cloud Cluster. В качестве альтернативы можно использовать MathWorks Cloud Center, чтобы создать и получить доступ, вычисляют кластеры. Для получения дополнительной информации смотрите Начало работы с Центром Облака. В данном примере гарантируйте, что ваш кластер установлен по умолчанию на вкладке MATLAB Home, параллельно> Выбирают Default Cluster. После этого загрузите свои данные на блок Amazon S3 и используйте их непосредственно из MATLAB. Этот пример использует копию набора данных CIFAR-10, который уже хранится в Amazon S3. Для инструкций смотрите Данные о Глубоком обучении Загрузки к Облаку.
Отправьте скрипт как пакетное задание к кластеру при помощи batch
функция. Кластер выделяет одного рабочего, чтобы выполнить содержимое вашего скрипта. Если параллельный код в скрипте извлекает выгоду от дополнительных рабочих, например, это включает автоматическую параллельную поддержку или цикл parfor, необходимо запросить рабочих явным образом. batch
использование один рабочий для клиента, запускающего скрипт. Можно задать больше рабочих при помощи аргумента пары "имя-значение" 'Pool'.
В этом случае отправьте trainMultipleNetworks
скрипт к кластеру. Этот скрипт содержит параллельную развертку параметра в Использовании parfor, чтобы Обучить Несколько Нейронных сетей для глубокого обучения. Поскольку скрипт содержит 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
batch
(Parallel Computing Toolbox)