【问题标题】:How to construct a "text/csv" payload when invoking a sagemaker endpoint调用 sagemaker 端点时如何构造“text/csv”有效负载
【发布时间】:2021-09-05 17:33:23
【问题描述】:

我的训练数据看起来像

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')

如何从我的数据帧构造有效负载“my_payload_as_csv”以正确调用 Sagemaker 端点?

【问题讨论】:

    标签: pandas amazon-web-services boto3 amazon-sagemaker


    【解决方案1】:

    如果您从数据框示例开始

    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')
    

    【讨论】:

    • 我遇到了一个没有使用区域的错误,所以我使用了:client=boto3.client('sagemaker-runtime',region_name='us-east-1')
    【解决方案2】:

    @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')
    

    【讨论】:

      猜你喜欢
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多