如何向终端节点传输数据

0

【以下的问题经过翻译处理】 你好,

我已经按照DeepAR芝加哥交通违规笔记本示例进行了操作,已经创建了模型和端点,并且预测可以正常运行。

https://github.com/aws/amazon-sagemaker-examples/blob/master/introduction_to_applying_machine_learning/deepar_chicago_traffic_violations/deepar_chicago_traffic_violations.ipynb

然而,为了在外部使用它,我没有删除模型或端点。我在EC2上创建了一个Python脚本,尝试加载端点并将数据传递给它以获得预测,我正在做以下操作:

  1. 以与笔记本相同的方式加载CSV。
  2. 以与笔记本预测器预测命令相同的方式解析CSV。
  3. 不使用"predictor.predict",而是使用"invoke_endpoint"来加载端点并传递前一个步骤的数据。
  4. 与在笔记本上获得的相同响应不同,我收到以下消息:“type:<class'list'>,valid types:<class 'bytes'>,< class 'bytearray'>,file-like object"

不确定问题是什么,似乎需要字节数据...我猜我不能将数据作为列表发送到端点,我需要序列化它或编码它吗?转换为JSON?转换为字节?

任何帮助将不胜感激。

profile picture
专家
已提问 8 个月前17 查看次数
1 回答
0

【以下的回答经过翻译处理】 你好,

在这里的问题是predictor.predict命令将数据转换为推理终端节点理解所需的格式,因此您需要自己序列化或编码payload。为此,您可以使用类似json.dumps(payload)这样的东西,或者对于字节数组,使用json.dumps(payload).encode() 。

如果您想使用predictor类,这由序列化器选项处理。序列化器为我们编码/解码数据,并允许您通过预测器类简单地调用端点。以下代码段是这方面的示例:

from sagemaker.serializers import IdentitySerializer

from sagemaker.deserializers import JSONDeserializer

serializer=IdentitySerializer(content_type="application/json")

希望这可以帮助你!

要查看适用于不同用例的各种序列化器选项,请查看以下链接。

序列化器:https://sagemaker.readthedocs.io/en/stable/api/inference/serializers.html

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则