【问题标题】:Python Notebook Invoke Endpoint Sagemaker from LocalPython Notebook 从本地调用 Endpoint Sagemaker
【发布时间】:2018-06-28 23:34:07
【问题描述】:

我正在尝试从本地 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 中指定其他内容?

【问题讨论】:

    标签: python amazon-sagemaker


    【解决方案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))
    

    response 的答案正文格式为 json。你可以解析它并使用你的结果。

    【讨论】:

      【解决方案2】:

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

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

      你说:

      但是,这不起作用。

      您返回的错误是什么?

      【讨论】:

        猜你喜欢
        • 2020-04-17
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        • 2020-10-27
        • 1970-01-01
        • 1970-01-01
        • 2022-07-30
        • 1970-01-01
        相关资源
        最近更新 更多