在 Vertex AI Predict 上指定签名名称

Specify signature name on Vertex AI Predict

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

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

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

我已将这些论点提交给 this function

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 method 是可行的。

这是一个例子:

!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 models code 它只有预测方法,没有 raw_predict。所以我不知道它现在是否可以通过 python sdk 获得。

Vertex AI 是一个较新的平台,随着时间的推移会得到改进。 “signature_name”可以像您所做的那样添加到 RawPredictRequest or from gcloud 中的 HTTP JSON 有效载荷,但现在这在常规预测请求中不可用。

使用 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"