繁体   English   中英

AWS SageMaker 上的数据预处理

[英]Data Preprocessing on AWS SageMaker

我有一个端点在 AWS 上运行经过训练的 SageMaker model,它需要特定格式的数据。

最初,数据已经在应用程序的客户端处理,这意味着, API Gateway (它在 AWS 上接收 POST API 调用)用于接收预处理数据,但现在有一个变化, API Gateway将接收来自客户端的原始数据,以及在发送到我们的 SageMaker model 之前预处理这些数据的工作取决于我们的工作流程。

在此工作流上创建预处理作业的最佳方法是什么,而无需重新训练 model? 我的预处理只是一堆 dataframe 转换,不需要对训练集进行标准化或计算(不需要保存任何 model 文件)。

谢谢!

经过一些研究,这是我遵循的解决方案:

  • 首先,我创建了一个SKLearn sagemaker model 来完成所有预处理设置(我已经构建了一个 Scikit-Learn 自定义 class 来处理所有预处理步骤,遵循此AWS 代码
  • 在我的训练数据上训练了这个预处理 model。 具体来说,我的 model 不需要训练(它没有任何标准化或任何需要存储训练数据参数的东西),但 sagemaker 需要训练 model。
  • 加载了我们使用Model参数训练的遗留 model。
  • 使用级联预处理 model 和遗留 model 创建了一个PipelineModel
pipeline_model = PipelineModel(name=model_name,
                               role=role,
                               models=[
                                    preprocess_model,
                                    trained_model
                               ])
  • 创建一个新端点,调用PipelineModel然后将 Lambda 更改为Lambda以调用此新端点。 有了这个,我可以直接为同一个API Gateway发送原始数据,它只会调用一个端点,而无需支付两个端点 24/7 的费用来执行整个过程。

我发现这是在训练好的 model 之外执行预处理的一种很好且“经济”的方法,而无需在Lambda function 上进行艰苦的处理工作。

我将创建一个 Lambda,它由 API 网关调用,处理数据并将其发送到您的 SageMaker 端点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM