AWS SageMaker 上的数据预处理
Data Preprocessing on AWS SageMaker
我有一个端点 运行 AWS 上训练有素的 SageMaker 模型,它需要特定格式的数据。
最初,数据是在应用程序的客户端处理的,这意味着,API Gateway
(接收 AWS 上的 POST API 调用)用于接收预处理数据,但现在有变化,API Gateway
将从客户端接收 原始数据 ,并在发送到我们的 SageMaker 模型之前预处理这些数据取决于我们的工作流程。
在此工作流上创建预处理作业而无需重新训练模型的最佳方法是什么?我的预处理只是一堆数据帧转换,不需要对训练集进行标准化或计算(不需要保存任何模型文件)。
谢谢!
我会创建一个 Lambda,它被 API-Gateway 调用,处理数据并将其发送到您的 SageMaker 端点。
经过一些研究,这是我遵循的解决方案:
- 首先,我创建了一个
SKLearn
sagemaker 模型来完成所有预处理设置(我构建了一个 Scikit-Learn 自定义 class 来处理所有预处理步骤,遵循此 AWS code)
- 在我的训练数据上训练了这个预处理模型。具体来说,我的模型不需要训练(它没有任何标准化或任何需要存储训练数据参数的东西),但 sagemaker 需要训练模型。
- 加载了我们使用
Model
参数训练的遗留模型。
- 创建了一个
PipelineModel
级联预处理模型和遗留模型:
pipeline_model = PipelineModel(name=model_name,
role=role,
models=[
preprocess_model,
trained_model
])
- 创建一个新端点,调用
PipelineModel
然后更改 Lambda
函数来调用这个新端点。有了这个,我可以直接为同一个 API Gateway
发送 原始数据 ,它只会调用 一个 端点,而无需支付两个端点 24/7 执行整个过程。
我发现这是一种很好且“经济”的方法,可以在训练模型之外执行预处理,而无需在 Lambda
函数。
我有一个端点 运行 AWS 上训练有素的 SageMaker 模型,它需要特定格式的数据。
最初,数据是在应用程序的客户端处理的,这意味着,API Gateway
(接收 AWS 上的 POST API 调用)用于接收预处理数据,但现在有变化,API Gateway
将从客户端接收 原始数据 ,并在发送到我们的 SageMaker 模型之前预处理这些数据取决于我们的工作流程。
在此工作流上创建预处理作业而无需重新训练模型的最佳方法是什么?我的预处理只是一堆数据帧转换,不需要对训练集进行标准化或计算(不需要保存任何模型文件)。
谢谢!
我会创建一个 Lambda,它被 API-Gateway 调用,处理数据并将其发送到您的 SageMaker 端点。
经过一些研究,这是我遵循的解决方案:
- 首先,我创建了一个
SKLearn
sagemaker 模型来完成所有预处理设置(我构建了一个 Scikit-Learn 自定义 class 来处理所有预处理步骤,遵循此 AWS code) - 在我的训练数据上训练了这个预处理模型。具体来说,我的模型不需要训练(它没有任何标准化或任何需要存储训练数据参数的东西),但 sagemaker 需要训练模型。
- 加载了我们使用
Model
参数训练的遗留模型。 - 创建了一个
PipelineModel
级联预处理模型和遗留模型:
pipeline_model = PipelineModel(name=model_name,
role=role,
models=[
preprocess_model,
trained_model
])
- 创建一个新端点,调用
PipelineModel
然后更改Lambda
函数来调用这个新端点。有了这个,我可以直接为同一个API Gateway
发送 原始数据 ,它只会调用 一个 端点,而无需支付两个端点 24/7 执行整个过程。
我发现这是一种很好且“经济”的方法,可以在训练模型之外执行预处理,而无需在 Lambda
函数。