我们已经在 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"]])