3

我已经使用 TFX Pipelines 在顶点 AI 平台中部署了一个 tensorflow 模型。该模型具有自定义服务签名,但我在预测时很难指定签名。

我在 GCP AI Platform 中部署了完全相同的模型,并且可以指定它。

根据顶点文档,我们必须传递一个包含实例(列表)和参数(字典)值的字典。

我已将这些参数提交给此函数

instances: [{"argument_n": "value"}]

parameters: {"signature_name": "name_of_signature"}

不起作用,它仍然获得模型的默认签名。

在 GCP AI Platform 中,我已经能够预测直接在请求正文中指定签名名称:

response = service.projects().predict(
        name=name,
        body={"instances": instances,
        "signature_name": "name_of_signature"},
    ).execute()

@EDIT 我发现使用 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"]}]}'

不幸的是,查看google api 模型代码它只有 predict 方法,而不是 raw_predict。所以我不知道它现在是否可以通过 python sdk 获得。

4

1 回答 1

3

Vertex AI 是一个较新的平台,其局限性将随着时间的推移而得到改进。可以将“signature_name”添加到RawPredictRequestgcloud中的 HTTP JSON 有效负载,就像您所做的那样,但现在这在常规预测请求中不可用。

使用 HTTP JSON 有效负载:

例子:

输入.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"

于 2021-11-09T06:24:48.550 回答