主要内容

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

这个例子显示了如何发送深学习培训批处理作业到集群,这样就可以继续训练在工作或关闭MATLAB。

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

要求

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

提交批处理作业

属性将脚本作为批处理作业发送到集群批处理函数。群集分配一个工人来执行你的脚本的内容。如果从更多的工人脚本效益并行代码,例如,它包括自动并行支持或PARFOR循环,你需要明确地要求工人。金宝app批处理使用一个工人来运行该脚本的客户端。您可以通过使用“池”的名字 - 值对参数中指定更多的工人。

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

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

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

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

以编程方式获取结果

在向集群提交作业之后,可以在进行计算的同时继续在MATLAB中工作。如果您的代码的其余部分依赖于一个任务的完成,块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}

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

加载(JOB1);

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

要检索工作,首先通过使用创建群集群集对象parcluster函数。然后,提供作业ID给findJob。在这种情况下,作业ID是1

c = parcluster (“MyClusterInTheCloud”);工作= findJob (c,“ID”,1);

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

删除(JOB1);

使用作业监视器来获取结果

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

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

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

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

  • 完成操作后,单击此处删除作业删除

另请参阅

(并行计算工具箱)

相关的例子

更多关于