簡體   English   中英

無法調用使用 AWS-Lambda 在 sagemaker 中創建的 XG-Boost 端點

[英]Unable to call XG-Boost endpoint created in sagemaker using AWS-Lambda

我在 AWS-Sagemaker 上訓練了一個 xgboost model 並創建了一個端點。 現在我想使用 AWS Lambda 和 AWS API 調用端點。 我創建了一個 lambda function 並為我的 xgboost model 添加了下面提到的代碼。 當我嘗試對其進行測試時,function 正在引發 ParamValidation 錯誤。 這是我的代碼

import json
import os
import csv
import io
import boto3
endpointname =os.environ['endpointname'] #name of the endpoint I created in sagemaker
runtime = boto3.client('runtime.sagemaker')
def lambda_handler(event, context):
    print("Recieved Event: "+json.dumps(event,indent=2))
    data=json.loads(json.dumps(event))
    print(data)
    response = runtime.invoke_endpoint(EndpointName=endpointname,ContentType='text/csv',Body=data)
    print(response)
    result = json.loads(response['Body'].read().decode())
    print(int(float(result))) #sagemaker xgb returns bytes type for the test case

我創建的測試事件是dict類型。 function 拋出Invalid type for parameter Body, value: {'Time':'7'}, type: <class 'dict'>, valid types: <class 'bytes'>, <class 'bytearray'>, file-like object這意味着我應該將 byte 或 bytearray 而不是 dict 類型傳遞到我的事件中。 但是當我閱讀此AWS Lambda 文檔時,它說我的事件類型只能是 dict、int、list、float、str 或 None 類型。 我按照這個aws 文檔中提到的步驟創建了我的 lambda function。 有人可以解釋為什么我的代碼會拋出上述錯誤嗎?

data=json.loads(json.dumps(event))是一個冗余操作。 data=event將返回True 我們為測試用例提供的事件是 dict 類型的。 它有一個鍵值對。 鍵可以是任何東西,值應該是由逗號分隔的所有預測變量的單個字符串。 為了預測 output,我們需要測試用例的值。 因此,例如聲明payload=data['key']然后在response中更改Body=payload 然后它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM