首页 > 解决方案 > 调用 sagemaker 端点时如何构造“text/csv”有效负载

问题描述

我的训练数据看起来像

df = pd.DataFrame({'A' : [2, 5], 'B' : [1, 7]})

我在 AWS Sagemaker 中训练了一个模型,并将模型部署在一个端点后面。端点接受负载为“text/csv”。

要使用 boto3 调用端点,您可以执行以下操作:

import boto3
client = boto3.client('sagemaker-runtime')
response = client.invoke_endpoint(
    EndpointName="my-sagemaker-endpoint-name",
    Body= my_payload_as_csv,
    ContentType = 'text/csv')

如何从我的 Dataframe 构建有效负载“my_payload_as_csv”以正确调用 Sagemaker 端点?

标签: pandasamazon-web-servicesboto3amazon-sagemaker

解决方案


如果您从数据框示例开始

df = pd.DataFrame({'A' : [2, 5], 'B' : [1, 7]})

你排队

df_1_record = df[:1]

并转换df_1_record为这样的csv:

import io
from io import StringIO
csv_file = io.StringIO()
# by default sagemaker expects comma seperated
df_1_record.to_csv(csv_file, sep=",", header=False, index=False)
my_payload_as_csv = csv_file.getvalue()

my_payload_as_csv好像

'2,1\n'

然后您可以调用 sagemaker 端点

import boto3
client = boto3.client('sagemaker-runtime')
response = client.invoke_endpoint(
    EndpointName="my-sagemaker-endpoint-name",
    Body= my_payload_as_csv,
    ContentType = 'text/csv')

推荐阅读