在 Vertex AI Predict 上指定签名名称

Posted

技术标签:

【中文标题】在 Vertex AI Predict 上指定签名名称【英文标题】:Specify signature name on Vertex AI Predict 【发布时间】:2021-12-19 18:51:01 【问题描述】:

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

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

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

我已将这些论据提交给this function:

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()

@编辑 我发现使用 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 它只有 predict 方法,没有 raw_predict。所以我不知道现在是否可以通过python sdk获得。

【问题讨论】:

由于您使用的是使用 TensorFlow 的自定义训练模型,您能否分享该模型,因为它有助于复制场景。 你好@SandeepMohanty,很遗憾我的公司不允许我分享模型。如果有帮助,我可以分享签名。我用一些新信息编辑了帖子。 @ArturLunardiDiFante 您是否尝试过使用不同模型的相同签名,因为该特定签名可能适用于其他模型,原因是无效的缩减维度,并且您是否将值作为模型中的张量传递? @TensorflowSupport 我做到了。实际上签名没有问题,它工作得很好,问题是我无法像在 AI Platform 上那样在顶点 AI 的 predict 方法中指定签名。我找到了一种解决方法,即将我的自定义签名定义为默认服务,但问题是不允许我使用评估器组件,因为从 ExampleGen 生成的示例被解析为 tf.Examples,而我的签名期望字典中的命名张量。 【参考方案1】:

Vertex AI 是一个较新的平台,其局限性会随着时间的推移而得到改善。可以将“signature_name”添加到RawPredictRequest 或gcloud 中的 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"

【讨论】:

以上是关于在 Vertex AI Predict 上指定签名名称的主要内容,如果未能解决你的问题,请参考以下文章

在 Vertex AI 上使用 Tesla A100 GPU 和 Kubeflow Pipelines

在 Google Cloud Vertex AI 上使用客户处理程序进行部署

在 Google vertex ai 上创建自定义模型

对标Tensorflow ? Vertex.AI开源深度学习框架PlaidML

在 Vertex AI(谷歌云平台)中使用模型进行预测

英特尔收购AI初创公司Vertex.AI,后者专注于便携式深度学习引擎