【发布时间】:2018-04-18 23:19:19
【问题描述】:
我已经在 sagemaker 上训练了一个模型并创建了端点。我正在尝试使用邮递员调用端点。但是在训练模型时甚至之后,我都没有为训练数据指定任何标题。我不知道如何在向 sagemaker 发送发布请求时创建有效负载
【问题讨论】:
标签: web-services amazon-web-services postman amazon-sagemaker
我已经在 sagemaker 上训练了一个模型并创建了端点。我正在尝试使用邮递员调用端点。但是在训练模型时甚至之后,我都没有为训练数据指定任何标题。我不知道如何在向 sagemaker 发送发布请求时创建有效负载
【问题讨论】:
标签: web-services amazon-web-services postman amazon-sagemaker
以下是调用快速入门指南中创建的 sagemaker 端点的示例。您可以使用text/csv 或application/json 格式调用它:
在邮递员中: 您想要的网址是 POST https://runtime.sagemaker.{{region}}.amazonaws.com/endpoints/{{aws_model_name}}/invocations
在“授权”选项卡中,选择类型 AWS Signature 并输入您的 AccessKey 和 SecretKey 的值(建议您为这些使用变量),并为服务名称输入 sagemaker。
在标题下添加:
Content-Type : text/csv
Accept:application/json
在正文中:粘贴到正文中,以逗号分隔(如果您遵循快速入门指南,您可以在笔记本中简单地运行 print(valid_set[0][60:61]) 以获取示例向量。您需要将该值集转换为逗号分隔价值观
点击Send,您应该一切顺利!
对于发送 JSON 数据,将 Content-Type 更改为 application/json,您会希望结构如下所示:
{
"instances":[
{
"configuration": {},
"features": [...]
}
]
}
【讨论】:
创建端点后,您可以像任何其他 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'
)
希望这会有所帮助。
【讨论】: