Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS SageMaker上的ML管道:如何创建长时间运行的查询/预处理任务_Amazon Web Services_Machine Learning_Aws Lambda_Pipeline_Amazon Sagemaker - Fatal编程技术网

Amazon web services AWS SageMaker上的ML管道:如何创建长时间运行的查询/预处理任务

Amazon web services AWS SageMaker上的ML管道:如何创建长时间运行的查询/预处理任务,amazon-web-services,machine-learning,aws-lambda,pipeline,amazon-sagemaker,Amazon Web Services,Machine Learning,Aws Lambda,Pipeline,Amazon Sagemaker,我是一名软件工程师,正在向机器学习工程过渡,但需要一些帮助 我目前正在使用AWS Lambda和Step函数为我的ML管道运行查询和预处理作业,但受到Lambda的15m运行时限制的限制 我们是一家严格意义上的AWS商店,所以我暂时还停留在SageMaker和其他AWS工具上。稍后,我们会考虑对Kubeflow进行实验,如果它看起来足够有利的话。 我当前的流程 我让我的数据科学家为模型的查询和预处理步骤编写python脚本(在git repo中),并将它们(通过Terraform)部署为Lam

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

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

我们是一家严格意义上的AWS商店,所以我暂时还停留在SageMaker和其他AWS工具上。稍后,我们会考虑对Kubeflow进行实验,如果它看起来足够有利的话。

我当前的流程

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

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

有一个解决方案刚刚在红移-红移数据API中针对长时间运行的操作推出

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

至于处理步骤——我建议在将数据卸载到S3之前,在Redshift内部进行尽可能多的处理(我希望您不是通过select语句提取大量数据)。这将比Lambda中的处理速度快得多,并且还可以从数据API中获益。现在可能会有一些处理步骤,您不能在红移和Lambda是一个很好的选择。卸载的另一个好处是可以设置输出文件的大小。通过这种方式,您可以为每个输出文件启动一个Lambda,然后您就有了许多运行时间更短的Lambda

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


您可以使用Glue来实现这一点,但这可能是完全多余的,需要学习一个全新的服务,而且由于它是一个EMR包装器,因此成本可能会很高。老实说,Glue不是我最喜欢的AWS服务,因为它只简单地完成最基本的事情,任何稍微复杂的事情都会变成一场战斗。因此,如果这是一个您知道并且喜欢的工具,那么就使用它。

哪一个或多个步骤会运行到15分钟超时?不清楚您在哪方面需要帮助。@BillWeiner查询和预处理步骤,我目前正在使用Lambda。这些建议听起来很有希望,我一定会测试它们!非常感谢。