使用aws跑深度学习_亚马逊研究员手把手教你用AWS Batch玩转深度学习

原标题:亚马逊研究员手把手教你用AWS Batch玩转深度学习

本文编译自aws.amazon,该文说明了如何在AWS Batch上运行基于GPU的深度学习工作任务。亚马逊研究员Chris Barclay介绍了一个训练卷积神经网络(LeNet)的示例,使用ApacheMXNet识别使用MNIST数据集的手写数字。

GPU实例与深度学习自然搭配的神经网络算法可以利用其自身巨大的并行处理能力。AWS提供GPU实例系列,如g2和p2,可以让客户运行可扩展的GPU工作负载。你可以通过AWS Batch高效地利用这种可扩展性。

AWS Batch可以以你的名义进行基础计算资源的管理,使你能够专注于建模任务,而无需担心资源管理的支出。AWS Batch中的计算环境(即集群)就是你帐户中的实例池,其中AWS Batch可动态地上下调度,配置并终止关于作业数的实例。这可以最大限度地减少空闲实例,从而优化成本。

除此之外,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。

(http://docs.aws.amazon.com/batch/latest/userguide/batch-gpu-ami.html)

★创建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作业的文章。

总结

在这篇文章中,我向大家展示了一个在AWS Batch中运行支持GPU的作业的示例,使用MXNet作为深度学习库。AWS Batch揭示了框架原语,从而让你专注于为你的工作负载实施最有效的算法。它使你能够管理提交的作业的生命周期,并在指定的范围内动态调整作业的基础架构要求。利用AWS提供的计算实例,我们可以以一个经济高效的方式轻松利用其水平可扩展性。

另一方面,MXNet提供了一整套高度优化和可扩展的构建块来开始实现你自己的深度学习算法。总而言之,你不仅可以解决需要大型神经网络模型的问题,还可以通过利用Amazon EC2中看似无限的计算资源来减少迭代时间。

通过AWS Batch中以你的名义来管理资源,你可以轻松实施诸如超参数优化之类的工作负载,并行排列数十甚至数百个搜索,从而为你的问题空间找到最佳的模型参数集。此外,由于你的作业在Docker容器中运行,你可以选择与你的需求最匹配的工具和库,构建Docker映像,并使用你选择的映像提交作业。

我们鼓励你自己可以进行尝试,并且,我们十分希望你可以让我们知道你的想法!

机器人圈附上反馈地址,有兴趣尝试的圈友可以去留言

https://aws.amazon.com/cn/blogs/compute/deep-learning-on-aws-batch/?from=groupmessage&isappinstalled=0返回搜狐,查看更多

责任编辑:

你可能感兴趣的:(使用aws跑深度学习)