如何使用邮递员将请求传递给 sagemaker

Suj*_*DSa 6 web-services amazon-web-services postman amazon-sagemaker

我已经在 sagemaker 上训练了一个模型并创建了端点。我正在尝试使用邮递员调用端点。但是在训练模型时甚至在那之后,我还没有为训练数据指定任何标题。我不知道如何在向 sagemaker 发送帖子请求时创建有效负载

pbh*_*pbh 11

这是调用快速入门指南中创建的 sagemaker 端点的示例。您可以使用text/csvapplication/json格式调用它:

在邮递员中:您想要的网址是 POST https://runtime.sagemaker .{{region}}.amazonaws.com/endpoints/{{aws_model_name}}/invocations

在授权选项卡中,选择类型AWS Signature并输入您的AccessKeySecretKey(建议您使用变量)和sagemaker服务名称的值。

在标题下添加:

Content-Typetext/csv

Acceptapplication/json

在正文中:粘贴到正文中,用逗号分隔(如果您遵循快速入门指南,在笔记本中您可以简单地运行print(valid_set[0][60:61])以获取示例向量。您需要将该值集转换为逗号分隔值

点击Send,你应该很高兴去!

要发送 JSON 数据,请将Content-Typeto更改为application/json您希望结构如下所示:

{
    "instances":[
        {
            "configuration": {},
            "features": [...]
        }
     ]
}
Run Code Online (Sandbox Code Playgroud)


Ram*_*man 8

创建端点后,您可以使用凭据和有效负载将其作为任何其他 Restful 服务调用。

我猜,可能有两个地方可能会卡住。一种可能是,发送包含所有标头和所有内容的实际 PostMan 请求。较新版本的 Postman 将 AWS 签名作为授权类型之一。您可以使用它来调用服务。不需要其他空间标题。请注意,Postman 中的一个错误仍未解决(issue-1663),仅当您是 AWS 联合账户时才会影响。个人帐户不应受到此问题的影响。

或者,您可能会被困在实际的有效载荷上。当您调用 SageMaker 端点时,有效负载将按原样传递给模型。如果要在将输入提供给模型之前对其进行预处理,则必须实现 input_fn 方法并在实例化模型时指定该方法。

您还可以使用 AWS SDK boto3 调用 SageMaker 终端节点,如下所示

import boto3
runtime= boto3.client('runtime.sagemaker')

payload = getImageData()


result  = runtime.invoke_endpoint(
    EndpointName='my_endpoint_name',
    Body=payload,
    ContentType='image/jpeg'
)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。