【发布时间】:2021-01-05 01:38:51
【问题描述】:
我已经构建了一个 SageMaker 管道,它结合使用自定义转换器(使用 SKLearn 转换器和 XGBoost 模型)。示例管道如下所示:
from sagemaker.model import Model
from sagemaker.pipeline import PipelineModel
import boto3
from time import gmtime, strftime
timestamp_prefix = strftime("%Y-%m-%d-%H-%M-%S", gmtime())
scikit_learn_inferencee_model = sklearn_preprocessor.create_model()
xg_model = xg_estimator.create_model()
model_name = 'inference-pipeline-' + timestamp_prefix
endpoint_name = 'inference-pipeline-ep-' + timestamp_prefix
sm_model = PipelineModel(
name=model_name,
role=role,
models=[
scikit_learn_inference_model,
xg_model])
sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
Tbe sklearn 预处理器接受 100 行输入并生成单行,作为输入传递给 XGBoost 模型进行预测。因此,对于每 100 行输入,我只能得到一个预测。
但是,SageMaker 预测的所有示例都只指向一行输入,如下所示:
from sagemaker.predictor import json_serializer, csv_serializer, json_deserializer, RealTimePredictor
from sagemaker.content_types import CONTENT_TYPE_CSV, CONTENT_TYPE_JSON
payload = 'M, 0.44, 0.365, 0.125, 0.516, 0.2155, 0.114, 0.155'
actual_rings = 10
predictor = RealTimePredictor(
endpoint=endpoint_name,
sagemaker_session=sagemaker_session,
serializer=csv_serializer,
content_type=CONTENT_TYPE_CSV,
accept=CONTENT_TYPE_JSON)
print(predictor.predict(payload))
如何将多行输入传递到 SageMaker 端点并获得 1 个预测?
谢谢。
【问题讨论】:
-
做一些搜索相同的场景,我如何登陆这里。你能找到你的问题的解决方案吗?我也想知道,如果说一个输入可以是多行?
标签: python amazon-web-services scikit-learn amazon-sagemaker