如何在调用 sagemaker 端点时构建 "text/csv" 有效负载
How to construct a "text/csv" payload when invoking a sagemaker endpoint
我的训练数据看起来像
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 端点?
如果您从数据框示例开始
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')
@VincentCleas 的回答很好。但是,如果您想在不安装 pandas 的情况下构建 csv-payload,请执行以下操作:
import boto3
csv_buffer = open('<file-name>.csv')
my_payload_as_csv = csv_buffer.read()
client = boto3.client('sagemaker-runtime')
response = client.invoke_endpoint(
EndpointName="my-sagemaker-endpoint-name",
Body= my_payload_as_csv,
ContentType = '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 端点?
如果您从数据框示例开始
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')
@VincentCleas 的回答很好。但是,如果您想在不安装 pandas 的情况下构建 csv-payload,请执行以下操作:
import boto3
csv_buffer = open('<file-name>.csv')
my_payload_as_csv = csv_buffer.read()
client = boto3.client('sagemaker-runtime')
response = client.invoke_endpoint(
EndpointName="my-sagemaker-endpoint-name",
Body= my_payload_as_csv,
ContentType = 'text/csv')