0

我们已经在 GCP 上训练了一个 Nasnet 模型,并对其进行了部署,以便可以进行 API 调用。

该模型将图像作为输入(numpy 数组),并返回一个预测数组。但是,当我们尝试对发送 numpy 数组的模型进行 API 调用时,会发生错误(请求有效负载大小超出限制)。另一种普遍接受的格式是 base64,但是我们的模型仅配置为将 numpy 数组作为输入。

有没有办法解决这个问题,以便可以通过 API 调用进行预测?创建无服务器功能会有所帮助吗?谢谢

编辑:这是我用来向 GCP 模型发出请求的代码:

import googleapiclient.discovery
import numpy as np
import requests

# x is an image encoded as a numpy array
def generate_custom_tags(x):

    project_id = "MY_PROJECT_ID"
    model_id = "MY_MODEL_NAME"
    model_path = "projects/{}/models/{}".format(project_id, model_id)
    ml_resource = googleapiclient.discovery.build("ml","v1").projects()
    instances = { 'input_2': x.tolist() }

    input_data_json = {"signature_name": "serving_default", "instances": instances}
    request = ml_resource.predict(name=model_path, body = input_data_json)

    response = request.execute()
    if "error" in response:
        raise RuntimeError(response["error"])
    return np.array([pred["dense"] for pred in response["predictions"]])
4

1 回答 1

1

“请求有效负载大小超出限制”错误是由于 Cloud Machine Learning Engine API 的硬限制。有一个增加此限制的功能请求,您可以在此处关注更新 [1]。同时,请尝试使用以下解决方案,因为它与您的案例 [2] 相似。

[1] https://issuetracker.google.com/123314535

[2] gcloud ml-engine 在大文件上返回错误

于 2020-06-01T17:35:07.707 回答