【问题标题】:ML Pipeline on AWS SageMaker: How to create long-running query/preprocessing tasksAWS SageMaker 上的 ML Pipeline:如何创建长时间运行的查询/预处理任务
【发布时间】:2020-11-04 04:51:28
【问题描述】:

我是一名软件工程师,正在向机器学习工程过渡,但需要一些帮助。

我目前正在使用 AWS Lambda 和 Step Functions 为我的 ML 管道运行查询和预处理作业,但受到 Lambda 15m 运行时限制的限制。

我们是一家严格意义上的 AWS 商店,所以我暂时还坚持使用 SageMaker 和其他 AWS 工具。稍后我们会考虑尝试使用 Kubeflow 之类的东西,如果它看起来足够有利的话。

我目前的流程

  • 我让我的数据科学家为模型的查询和预处理步骤编写 Python 脚本(在 git 存储库中),并将它们(通过 Terraform)部署为 Lambda 函数,然后使用 Step Functions 将 ML Pipeline 步骤排序为DAG(查询 -> 预处理 -> 训练 -> 部署)
  • Query lambda 从我们的数据仓库 (Redshift) 中提取数据,并将未处理的数据集写入 S3
  • Preprocessing lambda 从 S3 加载未处理的数据集,根据需要对其进行操作,并将其作为训练和验证数据集写入不同的 S3 位置
  • 训练和部署任务使用 SageMaker python api 将模型训练和部署为 SageMaker 端点

我是否需要使用 Glue 和 SageMaker 处理作业?据我所知,Glue 似乎更针对 ETL,而不是写入 S3,而且 SageMaker 处理作业的部署似乎比 Lambda 更复杂。

【问题讨论】:

  • 哪个或哪些步骤运行到 15 分钟超时?目前尚不清楚您需要哪些方面的帮助。
  • @BillWeiner 查询和预处理步骤,我目前正在使用 Lambda。

标签: amazon-web-services machine-learning aws-lambda pipeline amazon-sagemaker


【解决方案1】:

有一个解决方案刚刚出现在 Redshift 中用于长时间运行的操作 - Redshift Data API。 https://aws.amazon.com/about-aws/whats-new/2020/09/announcing-data-api-for-amazon-redshift/

这允许 Step 函数中的 Lambda 向 Redshift 发出一组 SQL 并轮询以查看 SQL 何时完成。现在,您的 Lambda 的运行时间只需启动 SQL 所需的时间。

至于处理步骤 - 我建议在将数据卸载到 S3 之前在 Redshift 内部进行尽可能多的处理(我希望您不会通过 select 语句提取大量数据)。这将比 Lambda 中的处理快得多,并且也可以从 Data API 中受益。现在可能会有一些您在 Redshift 中无法执行的处理步骤,而 Lambda 是一个不错的选择。 UNLOAD 的另一个好处是您可以设置输出文件的大小。这样,您可以为每个输出文件启动一个 Lambda,然后您就可以拥有许多运行时间更短的 Lambda。

您可以尝试拆分工作并让多个 Lambda 串联运行,但一次处理大量数据并不是 Lambda 的强项。能否做到这一点取决于您正在进行的数据处理。

您可以为此使用 Glue,但这可能完全是矫枉过正,需要学习一种全新的服务,而且由于它是 EMR 包装器,因此成本可能会很高。老实说,Glue 不是我最喜欢的 AWS 服务,因为它只轻松完成最基本的事情,任何稍微复杂的事情都会变成一场战斗。所以如果这是一个你知道并喜欢的工具,那就去吧。

【讨论】:

  • 这些建议听起来很有希望,我一定会测试它们!谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2021-01-23
  • 2012-04-10
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多