如何启动EC2实例并按需运行任务

时间:2019-01-18 20:13:22

标签: python amazon-web-services numpy amazon-s3

我们正在开发AWS上的深度学习应用程序。模型训练的自动化非常具有挑战性。第一步是准备用于训练的数据,其中涉及从成千上万的小型2D numpy数组生成巨大的3D numpy数组(> 100GB)。小的numpy数组作为小文件保存在S3存储桶中。转换后,大的numpy数组将保存到另一个S3存储桶。训练脚本将在训练之前拾取大型3D numpy数组。由于lambda函数具有内存限制,因此我们将必须手动启动EC2实例。

我想知道从外部启动EC2实例并在该实例上运行python脚本进行数据加载和转换的最佳实践是什么?

整个工作流程可能将使用AWS步进功能实现自动化。

3 个答案:

答案 0 :(得分:1)

我会采用最简单的解决方案,因为这并不是那么复杂的任务(从架构的角度来看)。

为存储桶配置S3事件(存储新的大型3D数组的存储桶),将对象放入存储桶后触发lambda函数(您可以更细化,并根据前缀触发它)将所有/不同的数据存储在同一个存储桶中。

在该lambda函数中,您只需启动新的EC2实例并向其传递user data脚本,该脚本将下载必要的文件并运行任务(可以使用boto3 for Python来完成)。

在这种情况下,使用CloudFormation可能会过大(我认为)。

答案 1 :(得分:0)

您可以在Cloud形成模板中使用配置集来定义步骤,在这些步骤中,您可以在启动EC2资源时执行复制或运行脚本或命令。您甚至可以临时运行它,以便在完成所有操作后将其关闭。

然后您可以使用脚本或Lambda函数执行Cloudformation堆栈

答案 2 :(得分:0)

您是否考虑过使用Amazon SageMaker?配置可重复的培训作业很容易。我希望听到您的反馈并回答任何问题。