Невозможно выполнять вызовы API к конечной точке модели, развернутой на AWS Sagemaker - PullRequest
2 голосов
/ 27 мая 2020

Мы обучили модель Na snet и успешно развернули модель в качестве конечной точки на AWS Sagemaker. При локальной загрузке модели можно делать прогнозы, но я не уверен, в каком формате будут передаваться изображения при вызове конечной точки API.

Для справки, при загрузке с использованием tf.keras.load_model модель модели входные данные выглядят следующим образом:

[<tf.Tensor 'input_2:0' shape=(None, 331, 331, 3) dtype=float32>]

Кроме того, вот функция, используемая для построения модели, содержащая файл pred_signature_def модели

def build(loaded_model, export_dir):
    build = builder.SavedModelBuilder(export_dir)
    print("INPUT FORMAT:")
    print(loaded_model.input)
    signature = predict_signature_def(inputs={"inputs": loaded_model.input}, outputs={"score": loaded_model.output})
    with K.get_session() as sess:
        # Save the meta graph and variables
        build.add_meta_graph_and_variables(
            sess=sess, tags=[tag_constants.SERVING], signature_def_map={"serving_default": signature})
        build.save()

Мы пробовали выполнять вызовы API к конечной точке в следующем формате:


    client = boto3.client('runtime.sagemaker',
    region_name='us-east-1',
    aws_access_key_id='ACCESS_KEY',
    aws_secret_access_key='SECRET_KEY')


    with open("kitchen.jpg", "rb") as image:
        f = image.read()
        b = bytearray(f)


    response = client.invoke_endpoint(EndpointName='ENDPOINT_NAME_HERE',
    Body=b)

Мы пробовали многократно передавать несколько форматов для изображения в теле (bytearray, base64, numpy array). Однако мы продолжаем получать ту же ошибку от AWS:

Received client error (415) from model with message "{"error": "Unsupported Media Type: Unknown"}".

Кто-нибудь знает, каким должен быть правильный формат ввода изображения, или есть какие-либо предложения? Спасибо

...