You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SageMaker Predictor调用predict返回Byte类型对象的问题

问题解决:SageMaker Predict返回Bytes类型结果

问题原因

你的代码存在两个关键问题:

  1. 参数名错误:初始化Predictor时,你写了deserializers(复数),但正确的参数名是deserializer(单数),导致反序列化器未生效,predict方法直接返回原始的bytes响应。
  2. 反序列化器不匹配:模型返回的是JSON格式内容(从输出的b'{"probabilities": ...}'可看出),但你使用了CSVDeserializer,即使参数名正确也无法正确解析。

解决方案

方案1:修正参数名并使用匹配的反序列化器

直接修改Predictor初始化代码,使用正确参数名和对应JSONDeserializer:

from sagemaker.predictor import Predictor
from sagemaker.serializers import CSVSerializer
from sagemaker.deserializers import JSONDeserializer

# 修正参数名为deserializer,使用JSONDeserializer适配返回格式
predictor1 = Predictor(
    endpoint_name=predictor.endpoint_name,
    serializer=CSVSerializer(),
    deserializer=JSONDeserializer()
)

result = predictor1.predict(data)
print(type(result))
print(result)

执行后会直接得到解析后的字典类型结果,无需手动处理bytes。

方案2:手动解码解析(临时应急)

如果暂时不想调整反序列化器,可以手动处理bytes:

import json

result = predictor1.predict(data)
# 先解码bytes为字符串,再解析为JSON对象
parsed_result = json.loads(result.decode('utf-8'))
print(type(parsed_result))
print(parsed_result)

这种方法适合快速验证,但推荐使用方案1,符合SageMaker规范用法。

内容的提问来源于stack exchange,提问作者Karki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:25:35