В этом примере показано, как отправлять пакетные задания глубокого обучения в кластер, чтобы можно было продолжить работу или закрыть MATLAB во время обучения.
Обучение глубоким нейронным сетям часто занимает часы или дни. Чтобы эффективно использовать время, можно обучить нейронные сети как пакетные задания и получить результаты из кластера, когда они будут готовы. Можно продолжить работу в MATLAB во время выполнения вычислений или закрыть MATLAB и получить результаты позже с помощью монитора заданий. В этом примере параллельный сдвиг параметров в Use parfor отправляется для обучения нескольким сетям глубокого обучения в качестве пакетного задания. После выполнения задания можно выбрать обученные сети и сравнить их точность.
Перед запуском этого примера необходимо настроить кластер и загрузить данные в облако. В MATLAB кластеры в облаке можно создавать непосредственно с рабочего стола MATLAB. На вкладке Главная в меню Параллельный выберите Создать кластеры и управление ими. В диспетчере профилей кластера щелкните Создать облачный кластер. Можно также использовать Cloud Center MathWorks для создания вычислительных кластеров и доступа к ним. Дополнительные сведения см. в разделе Начало работы с облачным центром. В этом примере убедитесь, что кластер установлен по умолчанию на вкладке Главная страница MATLAB (Parallel > Select a Default Cluster). После этого загрузите данные в ведро Amazon S3 и используйте их непосредственно из MATLAB. В этом примере используется копия набора данных CIFAR-10, который уже хранится в Amazon S3. Инструкции см. в разделе Загрузка данных глубокого обучения в облако.
Отправка сценария в кластер в качестве пакетного задания с помощью batch функция. Кластер выделяет одного работника для выполнения содержимого сценария. Если параллельный код в сценарии выигрывает от дополнительных работников, например, он включает автоматическую параллельную поддержку или цикл parfor, необходимо явно запросить работников. batch использует одного работника для клиента, выполняющего сценарий. Можно указать больше работников с помощью аргумента пары имя-значение пула.
В этом случае отправьте trainMultipleNetworks скрипт в кластер. Этот сценарий содержит параллельный параметр sweep в Use parfor to Train Multiple Deep Learning Networks. Поскольку сценарий содержит parfor цикл, укажите 4 дополнительные работники с Pool аргумент пары имя-значение.
totalNumberOfWorkers = 5; job1 = batch('trainMultipleNetworks', ... 'Pool',totalNumberOfWorkers-1);
Текущее состояние задания в кластере можно просмотреть, проверив монитор заданий. В разделе Среда на вкладке Главная выберите Параллельный (Parallel) > Контролировать задания (Monitor Jobs), чтобы открыть Монитор заданий (Job Monitor).

В кластер можно отправить дополнительные задания. Если кластер недоступен, так как он выполняет другие задания, все новые задания, которые вы передаете, остаются в очереди до тех пор, пока кластер не станет доступным.
После отправки заданий в кластер можно продолжить работу в MATLAB, пока выполняются вычисления. Если остальная часть кода зависит от завершения задания, заблокируйте MATLAB с помощью wait команда. В этом случае дождитесь завершения задания.
wait(job1);
После завершения задания извлеките результаты с помощью load функция. В этом случае извлеките обученные сети из параллельного сдвига параметров в представленном сценарии и их точности.
load(job1,'accuracies');
accuraciesaccuracies = 4×1
0.8312
0.8276
0.8288
0.8258
load(job1,'trainedNetworks');
trainedNetworkstrainedNetworks = 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.
После выполнения задания можно извлечь результаты из монитора заданий. В разделе Среда на вкладке Главная выберите Параллельный (Parallel) > Контролировать задания (Monitor Jobs), чтобы открыть Монитор заданий (Job Monitor). Затем щелкните правой кнопкой мыши задание, чтобы открыть контекстное меню. В этом меню можно выполнить следующие действия:
Загрузите задание в рабочую область, щелкнув Показать подробности (Show Details)
Загрузить все переменные в задание, щелкнув Загрузить переменные (Load Variables)
Удалить задание по завершении, нажав кнопку Удалить

batch(Панель инструментов параллельных вычислений)