本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

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

此示例说明如何将深度学习训练批处理作业发送到群集,以便您可以在训练过程中继续工作或者关闭 MATLAB。

训练深度神经网络通常需要几个小时或几天的时间。为了高效利用时间,您可以以批处理作业的形式训练神经网络,并在得出结果后从群集中获取结果。您可以在进行计算时继续在 MATLAB 中工作,或者关闭 MATLAB,稍后使用 Job Monitor 获得结果。此示例以批处理作业的形式发送使用 parfor 训练多个深度学习网络中的并行参数扫描。在作业完成后,您可以获取经过训练的网络并比较其准确度。

要求

您需要配置群集并将数据上传到云,才能运行此示例。在 MATLAB 中,您可以直接通过 MATLAB 桌面在云中创建群集。在主页选项卡上,在 Parallel 菜单中,选择 Create and Manage Clusters。在 Cluster Profile Manager 中,点击 Create Cloud Cluster。您也可以使用 MathWorks 云中心来创建和访问计算群集。有关详细信息,请参阅云中心快速入门。对于本示例,请确保在 MATLAB 主页选项卡的 Parallel > Select a Default Cluster 中将您的群集设置为默认群集。然后,将您的数据上传到 Amazon S3 存储桶并直接从 MATLAB 中使用它。此示例使用已存储在 Amazon S3 中的 CIFAR-10 数据集的副本。有关说明,请参阅将深度学习数据上传到云

提交批处理作业

使用 batch 函数将脚本作为批处理作业发送到群集。群集会分配一个工作进程来执行脚本的内容。如果额外的工作进程有助于脚本更好地运行并行代码(例如它支持自动并行处理或 parfor 循环),则您需要显式请求工作进程。batch 为运行脚本的客户端使用一个工作进程。您可以使用 'Pool' 名称-值对组参数指定更多工作进程。

在本例中,将 trainMultipleNetworks 脚本发送到群集。该脚本包含使用 parfor 训练多个深度学习网络中的并行参数扫描。由于脚本包含 parfor 循环,使用 Pool 名称-值对组参数指定 4 个额外的工作进程。

totalNumberOfWorkers = 5;
job1 = batch('trainMultipleNetworks', ...
    'Pool',totalNumberOfWorkers-1);

您可以通过检查 Job Monitor 来查看群集中作业的当前状态。在主页选项卡的环境部分中,选择 Parallel > Monitor Jobs 以打开 Job Monitor。

您可以向群集提交更多作业。如果群集因运行其他作业而不可用,则您提交的任何新作业会处于排队状态,直到群集变为可用。

通过编程方式获取结果

将作业提交到群集后,您可以在进行计算时继续在 MATLAB 中工作。如果代码的其余部分依赖于作业的完成,请使用 wait 命令阻止 MATLAB。在本例中,我们等待作业完成。

wait(job1);

作业完成后,使用 load 函数获取结果。在本例中,从提交的脚本中的并行参数扫描获取经过训练的网络及其准确度。

load(job1,'accuracies');
accuracies
accuracies = 4×1

    0.8312
    0.8276
    0.8288
    0.8258

load(job1,'trainedNetworks');
trainedNetworks
trainedNetworks = 4×1 cell array
    {1×1 SeriesNetwork}
    {1×1 SeriesNetwork}
    {1×1 SeriesNetwork}
    {1×1 SeriesNetwork}

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

load(job1);

如果关闭 MATLAB,您仍可以在计算进行过程中或计算完成后恢复群集中的作业以获取结果。在关闭 MATLAB 之前,请记下作业 ID,稍后使用 findJob 函数检索该作业。

要检索作业,首先使用 parcluster 函数为群集创建一个群集对象。然后,向 findJob 提供作业 ID。在本例中,作业 ID 是 1

c = parcluster('MyClusterInTheCloud');
job = findJob(c,'ID',1);

完成后,删除作业。该作业将从 Job Monitor 中删除。

delete(job1);

使用 Job Monitor 获取结果

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

在一个作业完成后,您可以从 Job Monitor 中检索结果。在主页选项卡的环境部分中,选择 Parallel > Monitor Jobs 以打开 Job Monitor。然后右键点击一个作业以显示上下文菜单。从该菜单中,您可以:

  • 点击 Show details 将作业加载到工作区中

  • 点击 Load variables 加载作业中的所有变量

  • 在完成后,点击 Delete 删除作业

另请参阅

相关示例

详细信息