1

我正在尝试从本地 python 笔记本调用 Amazon Sagemaker 端点。这是我正在使用的代码。

import boto3

aws_access_key_id = '...............'
aws_secret_access_key = '................'
tkn = '..........'
region_name = '............'

amz = boto3.client('sagemaker-runtime',
                   aws_access_key_id=aws_access_key_id,
                   aws_secret_access_key=aws_secret_access_key,
                   aws_session_token=tkn,
                   region_name=region_name)


response = amz.invoke_endpoint(
    EndpointName='mymodel',
    Body=b'bytes'
)               

但是,这不起作用。我是否必须在Body中指定其他内容?

4

2 回答 2

1

您可以使用 boto3 会话。我假设您已经准备好 json,并且您的 aws 凭证已经在 ~/.aws/credentials 上。

import boto3, json, sagemaker

sagemaker_session = sagemaker.Session()
role              = "YOUR-SAGEMAKER-EXECUTION-ROLE"
region            = boto3.Session().region_name
endpointName=     'YOUR ENDPOINT NAME'
predictor = sagemaker.predictor.RealTimePredictor(
               endpointName, 
               sagemaker_session=sagemaker_session, 
               content_type="application/json")
d='YOUR JSON LINES- YOU CAN OPEN WITH PYTHON BUILT IN FUNCTIONS'
response=predictor.predict(json.dumps(d))

响应具有以 json 格式格式化的答案正文。您可以解析它并使用您的结果。

于 2018-06-28T15:34:07.167 回答
0

每个端点都需要不同的二进制数据。通过指定Body=b'bytes'您正在传递字符串字面量 bytes 的字节,而您应该传递一些实际输入数据来推断。

根据文档,我建议包含您发送的输入数据的相关 ContentType。

你说:

但是,这不起作用。

你回来的错误是什么?

于 2018-06-15T20:27:15.447 回答