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

此示例显示如何向群集发送深度学习培训批处理作业,以便在培训期间继续工作或关闭MATLAB。

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

要求

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

提交批处理作业

命令将脚本作为批处理作业发送到集群批处理函数。群集分配一个工人以执行脚本的内容。如果脚本中的并行代码来自额外的工人,例如,它包括自动并行支持或Parcom循环,您需要明确要求工人。金宝app批处理使用运行脚本的客户端的一个工作者。您可以使用“池”名称值对参数来指定更多工人。

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

totalNumberOfWorkers = 5;job1 =批(“trainMultipleNetworks”,“池”,TotalNumberofWorkers-1);

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

您可以向群集提交其他作业。如果群集不可用,因为它正在运行其他作业,则在群集可用之前,您提交的任何新作业都会排队。

以编程方式获取结果

在将作业提交给集群后,在进行计算时可以继续使用MATLAB。如果代码的其余部分取决于任务的完成情况,则使用等待命令。在这种情况下,等待任务完成。

等待(job1);

任务完成后,使用负载函数。在这种情况下,从提交的脚本中从并行参数扫描获取训练的网络及其准确性。

负载(job1“精度”);精度
精度=4×10.8312 0.8276 0.8288 0.8258
负载(job1“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”);工作= findJob (c,“ID”,1);

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

删除(Job1);

使用作业监视器获取结果

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

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

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

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

  • 完成后通过单击删除作业删除

另请参阅

相关的例子

更多关于