如何解决传递多行输入以进行SageMaker预测
我建立了一个SageMaker管道,该管道结合了Custom Transformer(使用SKLearn Transformer和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个预测?
谢谢。
解决方法
请查看 SageMaker 批量转换的文档:https://sagemaker.readthedocs.io/en/stable/overview.html#sagemaker-batch-transform
您需要使用 Transformer
:https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html#sagemaker.transformer.Transformer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。