我们正在AWS上开发一个深度学习应用程序。模型训练的自动化是相当具有挑战性的。第一步是为训练准备数据,这涉及到从数十万个小的2D numpy数组生成一个巨大的3D numpy数组(> 100 is )。小的numpy数组以小文件的形式保存在S3存储桶中。转换后,大的numpy数组将保存到另一个S3存储桶中。训练脚本将在训练之前提取大的3Dnumpy数组。因为lambda函数有内存限制,所以我们必须手动启动一个EC2实例。
我想知道从外部启动一个EC2实例并在该实例上运行python脚本以执行数据加载和转换的最佳实践是什么?
整个工作流程可能会使用AWS step功能实现自动化。
发布于 2019-01-19 17:08:03
我会选择最简单的解决方案,因为这并不是那么复杂的任务(从架构的角度来看)。
为存储新的大数组的存储桶配置S3事件,一旦对象被放入存储桶中,就会触发lambda函数(如果您在同一存储桶中存储所有/不同数据,则可以更细粒度,根据prefix触发)。
在lambda函数内部,您只需启动新EC2实例并将user data脚本传递给它,该脚本将下载必要的文件并运行任务(这可以使用boto3 for Python来完成)。
在这种情况下使用CloudFormation有点过头了(我的观点)。
发布于 2019-01-19 04:29:19
您可以使用云形成模板中的配置集来定义步骤,在这些步骤中,您可以在启动EC2资源时执行复制或运行脚本或命令。您甚至可以暂时运行它,以便它在所有操作完成后自动关闭。
然后,您可以使用脚本或Lambda函数来执行Cloudformation堆栈
发布于 2019-01-19 22:56:01
你有没有考虑过使用亚马逊SageMaker?很容易配置可重复的训练任务。我很乐意听到你的反馈,并回答任何问题。
https://stackoverflow.com/questions/54260826
复制相似问题