如何向终端节点传输数据

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
EXPERTE
gefragt vor 9 Monaten18 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen

Relevanter Inhalt