发送深度学习批作业到集群
这个例子展示了如何将深度学习训练批作业发送到集群,以便在训练期间可以继续工作或关闭MATLAB。
训练深度神经网络通常需要数小时或数天。为了有效地利用时间,您可以将神经网络训练为批处理作业,并在它们准备好时从集群获取结果。您可以在进行计算时继续在MATLAB中工作,也可以关闭MATLAB并稍后使用Job Monitor获取结果。此示例发送并行参数扫描使用parfor训练多个深度学习网络作为批处理作业。作业完成后,您可以获取经过训练的网络并比较它们的准确性。
需求
在运行此示例之前,您需要配置一个集群并将数据上传到Cloud。在MATLAB中,您可以直接从MATLAB桌面在云中创建集群。在首页选项卡,平行菜单中,选择创建和管理集群.在“集群配置文件管理器”中,单击创建云计算集群.您也可以使用MathWorks Cloud Center创建和访问计算集群。有关更多信息,请参见云中心入门.对于本例,确保您的集群在MATLAB上被设置为默认值首页选项卡,在平行>选择默认集群.之后,将数据上传到Amazon S3桶中,并直接从MATLAB中使用它。本例使用已经存储在Amazon S3中的CIFAR-10数据集的副本。说明,请参阅上传深度学习数据到云端.
提交批处理作业
方法将脚本作为批处理作业发送到集群批处理
函数。集群分配一个worker来执行脚本的内容。如果脚本中的并行代码受益于额外的工作,例如,它包括自动并行支持或parfor循环,那么您需要显式地请求这些工作。批处理
为运行脚本的客户机使用一个worker。您可以使用'Pool'名称-值对参数指定更多的工作者。
在本例中,发送trainMultipleNetworks
脚本到集群。此脚本包含并行参数扫描使用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
函数。然后,为提供作业IDfindJob
.在本例中,作业ID为1
.
c = parcluster (“MyClusterInTheCloud”);工作= findJob (c,“ID”1);
完成后删除作业。作业已从作业监视器中删除。
删除(job1);
使用作业监视器获取结果
当您提交批处理作业时,所有的计算都发生在集群中,您可以安全地关闭MATLAB。您可以在另一个MATLAB会话中使用Job Monitor来检查作业的状态。
当作业完成时,您可以从作业监视器检索结果。在环境上节首页选项卡上,选择平行>监控工作打开作业监视器。然后右键单击一个作业以显示上下文菜单。从这个菜单中,你可以:
通过单击将作业加载到工作区中显示详细信息
通过单击加载作业中的所有变量负载变量
完成任务后,通过单击删除作业删除
另请参阅
批处理
(并行计算工具箱)
相关的例子
更多关于
- 批处理(并行计算工具箱)