Amazon web services 基于AWS-SageMaker的数据预处理

Amazon web services 基于AWS-SageMaker的数据预处理,amazon-web-services,aws-api-gateway,amazon-sagemaker,Amazon Web Services,Aws Api Gateway,Amazon Sagemaker,我有一个端点在AWS上运行一个经过培训的SageMaker模型,该模型需要特定格式的数据 最初,数据已在应用程序的客户端进行处理,这意味着,API网关(在AWS上接收API后调用)用于接收预处理数据,但现在有一个变化,API网关将从客户端接收原始数据,在发送到SageMaker模型之前预处理这些数据的工作取决于我们的工作流程 在不需要重新训练模型的情况下,在此工作流上创建预处理作业的最佳方法是什么?我的预处理只是一组数据帧转换,不需要标准化或使用所需的训练集进行计算(它不需要保存任何模型文件)

我有一个端点在AWS上运行一个经过培训的SageMaker模型,该模型需要特定格式的数据

最初,数据已在应用程序的客户端进行处理,这意味着,
API网关
(在AWS上接收API后调用)用于接收预处理数据,但现在有一个变化,
API网关
将从客户端接收原始数据,在发送到SageMaker模型之前预处理这些数据的工作取决于我们的工作流程

在不需要重新训练模型的情况下,在此工作流上创建预处理作业的最佳方法是什么?我的预处理只是一组数据帧转换,不需要标准化或使用所需的训练集进行计算(它不需要保存任何模型文件)


谢谢

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

经过一些研究,我采用了以下解决方案:

  • 首先,我创建了一个
    SKLearn
    sagemaker模型来进行所有预处理设置(我构建了一个Scikit-Learn自定义类来处理所有预处理步骤,如下所示)
  • 在我的训练数据上训练这个预处理模型。具体来说,我的模型不需要训练(它没有任何标准化或任何需要存储训练数据参数的东西),但sagemaker要求对模型进行训练
  • 使用
    model
    参数加载经过训练的遗留模型
  • 创建了一个带有级联预处理模型和遗留模型的
    管道模型
pipeline\u model=PipelineModel(name=model\u name,
角色,
模型=[
预处理模型,
训练有素的模型
])
  • 创建一个新端点,调用
    PipelineModel
    ,然后更改
    Lambda
    函数以调用此新端点。有了它,我就可以直接为同一个
    API网关
    发送原始数据,它只调用一个端点,而不需要24/7支付两个端点来执行整个过程
我发现这是一种很好且“经济”的方法,可以在经过训练的模型之外执行预处理,而不必在
Lambda
函数上执行艰难的处理工作