我已经使用TFX管道在顶点AI平台中部署了一个tensorflow模型。该模型有自定义的服务签名,但我在预测时很难指定签名。
我在GCP AI平台中部署了完全相同的模型,我可以指定它。
根据顶点文档,我们必须传递一个包含Instances(List(和Parameters(Dict(值的字典。
我已经向这个函数提交了这些论点:
instances: [{"argument_n": "value"}]
parameters: {"signature_name": "name_of_signature"}
不起作用,它仍然获得模型的默认签名。
在GCP AI平台中,我已经能够预测直接在请求主体中指定签名名称:
response = service.projects().predict(
name=name,
body={"instances": instances,
"signature_name": "name_of_signature"},
).execute()
@编辑我发现使用gcloud的rawPredict方法可以工作。
这里有一个例子:
!gcloud ai endpoints raw-predict {endpoint} --region=us-central1
--request='{"signature_name":"name_of_the_signature",
"instances": [{"instance_0": ["value_0"], "instance_1": ["value_1"]}]}'
不幸的是,看看谷歌api模型代码,它只有predict方法,而没有raw_predict。所以我不知道它现在是否可以通过python sdk使用。
Vertex AI是一个更新的平台,其局限性将随着时间的推移而得到改进。"signature_name"可以添加到RawPredictRequest中的HTTP JSON Payload中,也可以像您所做的那样从gcloud中添加,但目前这在常规预测请求中不可用。
使用HTTP JSON负载:
示例:
input.json:
{
"instances": [
["male", 29.8811345124283, 26.0, 1, "S", "New York, NY", 0, 0],
["female", 48.0, 39.6, 1, "C", "London / Paris", 0, 1]],
"signature_name": <string>
}
curl
-X POST
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}:rawPredict
-d "@input.json"