主要内容

将深度学习批处理作业发送到集群

这个示例展示了如何将深度学习训练批作业发送到集群,以便您可以在训练期间继续工作或关闭MATLAB。

训练深度神经网络通常需要数小时或数天。为了有效地利用时间,你可以训练神经网络作为批处理作业,并在它们准备好时从集群中获取结果。您可以在计算发生时继续在MATLAB中工作,或者关闭MATLAB并在稍后使用作业监视器获取结果。这个示例发送并行参数sweep使用parfor训练多个深度学习网络作为批处理作业。任务完成后,您可以获取经过训练的网络并比较它们的准确性。

需求

在运行这个示例之前,您需要配置一个集群并将数据上传到云端。在MATLAB中,您可以直接从MATLAB Desktop在云中创建集群。在首页选项卡,在平行菜单中,选择创建和管理集群.在“集群配置文件管理器”中,单击创建云集群.您也可以使用MathWorks Cloud Center创建和访问计算集群。有关更多信息,请参见开始使用云中心.对于本例,确保在MATLAB中将集群设置为默认值首页选项卡,在平行>选择默认集群.之后,将数据上传到Amazon S3桶,并直接从MATLAB中使用它。本示例使用已经存储在Amazon S3中的CIFAR-10数据集的副本。有关说明,请参见将深度学习数据上传到云端

提交批处理作业

属性将脚本作为批处理作业发送到集群批处理函数。集群分配一个worker来执行脚本的内容。如果脚本中的并行代码受益于额外的worker,例如,它包含自动并行支持或parfor循环,则需要显式地请求这些worker。金宝app批处理为运行脚本的客户机使用一个worker。您可以使用'Pool'名称-值对参数指定更多的工作者。

在这种情况下,发送trainMultipleNetworks脚本到集群。该脚本包含并行参数scan in使用parfor训练多个深度学习网络.因为脚本包含parfor循环,指定4额外的工人名称-值对参数。

totalNumberOfWorkers = 5;Job1 =批处理(“trainMultipleNetworks”...“池”, totalNumberOfWorkers-1);

您可以通过检查job Monitor查看集群中作业的当前状态。在环境章节首页选项卡上,选择平行>监控工作打开作业监视器。

您可以向集群提交其他作业。如果集群由于正在运行其他作业而不可用,则您提交的任何新作业都将保持排队状态,直到集群可用为止。

以编程方式获取结果

向集群提交作业后,可以在MATLAB中继续工作,同时进行计算。如果代码的其余部分依赖于任务的完成,请使用等待命令。在这种情况下,等待作业完成。

等待(job1);

操作完成后,使用负载函数。在这种情况下,从提交脚本中的并行参数扫描中获取训练过的网络及其精度。

负载(job1“精度”);精度
精度=4×10.8312 0.8276 0.8288 0.8258
负载(job1“trainedNetworks”);trainedNetworks
trainedNetworks =4×1单元格数组{1×1 SeriesNetwork} {1×1 SeriesNetwork} {1×1 SeriesNetwork} {1×1 SeriesNetwork}

要加载批处理作业中的所有变量,请使用负载不带参数的函数。

负载(job1);

如果关闭MATLAB,仍然可以在集群中恢复作业,以便在计算进行时或计算完成后获取结果。在关闭MATLAB之前,请记录作业ID,然后稍后使用findJob函数。

方法为集群创建一个集群对象,以检索作业parcluster函数。然后,将作业ID提供给findJob.在本例中,作业ID为1

C = parcluster(“MyClusterInTheCloud”);job = findJob(c,“ID”1);

完成后删除作业。作业已从作业监视器中删除。

删除(job1);

使用作业监视器获取结果

当您提交批处理作业时,所有的计算都发生在集群中,您可以安全地关闭MATLAB。您可以在另一个MATLAB会话中使用Job Monitor检查作业的状态。

当作业完成时,您可以从作业监视器检索结果。在环境章节首页选项卡上,选择平行>监控工作打开作业监视器。然后右键单击作业以显示上下文菜单。在此菜单中,您可以:

  • 通过单击将作业加载到工作区中显示详细信息

  • 通过单击加载作业中的所有变量负载变量

  • 当您完成任务时,可以通过单击删除该作业删除

另请参阅

(并行计算工具箱)

相关的例子

更多关于