本文编译自aws.amazon,该文说明了如何在AWS Batch上运行基于GPU的深度学习工作任务。亚马逊研究员Chris Barclay介绍了一个训练卷积神经网络(LeNet)的示例,使用ApacheMXNet识别使用MNIST数据集的手写数字。 GPU实例与深度学习自然搭配的神经网络算法可以利用其自身巨大的并行处理能力。AWS提供GPU实例系列,如g2和p2,可以让客户运行可扩展的GPU工作负载。你可以通过AWS Batch高效地利用这种可扩展性。 AWS Batch可以以你的名义进行基础计算资源的管理,使你能够专注于建模任务,而无需担心资源管理的支出。AWS Batch中的计算环境(即集群)就是你帐户中的实例池,其中AWS Batch可动态地上下调度,直播,配置并终止关于作业数的实例。这可以最大限度地减少空闲实例,atv,从而优化成本。 除此之外,AWS Batch可以确保提交的作业都被安置在适当的实例上,从而管理作业的生命周期。随着客户提供的AMI的增加,AWS Batch中的用户现在可以利用这种弹性和便利性来更好地完成那些需要GPU的作业。 在AWS Batch中运行MXNet作业 Apache的MXNet是一个全功能、灵活可编程且高度可扩展的深度学习框架,支持最先进的深层模型,包括卷积神经网络(CNN)和长短期记忆网络(LSTM)。 运行一个AWS Batch作业需要三个步骤: 创建自定义AMI 创建AWS Batch实体 提交训练工作 ★创建自定义AMI 首先创建一个包含NVIDIA驱动程序和AmazonECS代理的AMI。在AWS Batch中,可以通过在创建计算环境时指定imageId来启动具有所选择的特定AMI的实例。由于你正在运行一个需要GPU的作业,因此你需要一个安装了NVIDIA驱动程序的AMI。 选择启动堆栈以便在你帐户中的us-east-1中启动CloudFormation模板: 如下所示,请注意CloudFormation堆栈的“输出”选项卡中的AMI值。因为在下一节中创建计算环境时,你可以将其用作imageId值。 或者,你也可以按照AWS Batch文档来创建一个支持GPU的AMI。 () ★创建AWS Batch资源 当你完成AMI的构建后,你可以开始创建以下资源: 计算环境 作业队列 作业定义 计算环境是相同或不同实例类型的实例(计算资源)的集合。在这种情况下,你将创建一个托管计算环境,在这个环境中实例的类型为p2.xlarge。而至于imageId,你可以指定在上一节中构建的AMI。 然后,创建一个作业队列。在AWS Batch中,作业将被提交到与计算环境的有序列表相关联的作业队列中。当低阶计算环境被填满后,作业会溢出到下一个计算环境中。对于此示例,你把一个单个计算环境与作业队列相关联。 最后,创建作业定义,这是作业规范的一个模板。对于熟悉Amazon ECS的用户,这类似于任务定义。将主机上包含NVIDIA驱动程序的目录装载到容器上的/ usr / local / nvidia上。除此之外,你还需要在容器属性上设置特权标志。 以下代码在AWS Batch中创建了上述资源。想要了解更多有关信息,请参阅AWS Batch用户指南。 ★提交训练作业 现在,你提交了一个训练卷积神经网络模型的作业,而这个卷积神经网络模型是用来实现手写数字识别的。这和Amazon ECS任务很相似,AWS Batch中的作业按照Docker容器中的命令运行。要使用MXNet作为你的深度学习库,你需要一个包含MXNet的Docker映像。对于这个例子,你可以使用mxnet / python:gpu(https://hub.docker.com/r/mxnet/python/)。 这个submit-job.py脚本提交作业,并从CloudWatch Logs中拖出输出。 你应该会看到如下所示的输出结果(点图放大): 实际上,你可能需要修改作业命令从而将经过训练的模型工件保存到AmazonS3,以便随后的预测作业可以针对模型生成预测。有关如何在作业中引用Amazon S3中的对象的信息,请参阅创建简单的获取并运行”AWS Batch作业的文章。 总结 (责任编辑:本港台直播) |