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



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

下面是调用快速入门指南中创建的 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-Type更改为application/json,您将希望结构如下所示:

{
"instances":[
{
"configuration": {},
"features": [...]
}
]
}

创建终结点后,可以使用凭据和有效负载将其作为任何其他 restful 服务进行调用。

我猜,可能有两个地方可能会卡住。 一种可能是,发送一个包含所有标头和所有内容的实际邮递员请求。 较新版本的 Postman 将 AWS 签名作为授权类型之一。您可以使用它来调用服务。不需要其他空格标题。请注意,Postman 中有一个错误仍处于打开状态(问题 - 1663),该错误仅影响您是 AWS 联合账户的情况。个人帐户不应受此问题的影响。

或者,您可能会停留在实际有效负载上。当您调用 SageMaker 终端节点时,有效负载将按原样传递给模型。如果要在将输入馈送到模型之前对其进行预处理,则必须实现一个 input_fn 方法,并在实例化模型时指定该方法。

您还可以使用 AWS 开发工具包 boto3 调用 SageMaker 终端节点,如下所示

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

result  = runtime.invoke_endpoint(
EndpointName='my_endpoint_name',
Body=payload,
ContentType='image/jpeg'
)

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新