【问题标题】:Passing multiple lines of input for SageMaker prediction为 SageMaker 预测传递多行输入
【发布时间】: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


【解决方案1】:
猜你喜欢
  • 2018-09-09
  • 2019-07-19
  • 2017-04-02
  • 2020-02-23
  • 2021-10-06
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多