本指南演示了如何导入您已在 Vertex AI 之外训练的现有模型,或者您已使用 Vertex AI 训练并导出的现有模型。您导入模型后,Vertex AI 中会有一个模型,您可以将该模型部署到端点,然后用于请求预测。
预构建或自定义容器
导入模型时,您可以将其与 Vertex AI 相关联以运行预测请求。您可以使用 Vertex AI 提供的预构建容器,也可以使用您自己构建并推送到 Container Registry 或 Artifact Registry 的自定义容器。
如果您的模型符合以下要求,则可以使用预构建容器:
- 在 Python 3.7 或更高版本中训练
- 使用 TensorFlow、scikit-learn 或 XGBoost 训练
- 导出以满足某个预构建预测容器的特定于框架的要求
如果要导入您之前导出的表格 AutoML 模型,则必须使用 Vertex AI 提供的特定自定义容器。
否则,请创建新的自定义容器,或使用 Container Registry 或 Artifact Registry 中的现有自定义容器。
将模型工件上传到 Cloud Storage
您必须将模型工件存储在 Cloud Storage 存储分区中,存储分区所在区域与您使用的区域端点一致。 模型工件的文件总大小不能超过 10 GB。
如果您的 Cloud Storage 存储分区位于其他 Google Cloud 项目中,则需要授予 Vertex AI 访问权限以读取模型工件。
如果您使用预构建容器,请确保模型工件的文件名与以下示例完全匹配:
- TensorFlow SavedModel:
saved_model.pb
- scikit-learn:
model.joblib
或model.pkl
- XGBoost:
model.bst
、model.joblib
或model.pkl
详细了解如何导出模型工件以进行预测。
使用 Cloud Console 导入模型
要使用 Cloud Console 导入模型,请执行以下操作:
在 Cloud Console 中,转到 Vertex AI 模型页面。
点击导入。
名称和区域:输入模型的名称。选择同时匹配您的存储分区所在区域和您使用的 Vertex AI 区域端点的区域。点击继续。
如果您展开高级选项,则可以选择添加客户管理的加密密钥。
根据您使用的容器类型,在下面选择相应的标签。
预构建容器
自定义容器
选择导入现有的自定义容器。
设置容器映像 URI。
如果除了容器映像之外,您还提供模型工件,请指定包含模型工件的目录的 Cloud Storage 路径。
例如
gs://BUCKET_NAME/models/
。为任何其他字段指定值。
详细了解这些可选字段。
若要导入没有 Vertex Explainable AI 设置的模型,请点击导入。
导入完成后,您的模型将显示在模型页面上。
否则,请在可解释性标签页中输入可解释性设置,以继续配置模型。详细了解可解释性设置。
AutoML 表格容器
选择导入现有的自定义容器。
在容器映像字段中,输入
MULTI_REGION-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server-v1:latest
。将
MULTI_REGION
替换为us
、europe
或asia
,然后选择要从哪个 Docker 代码库拉取 Docker 映像。每个代码库都提供相同的 Docker 映像,但选择最靠近运行 Docker 的机器的 Artifact Registry 多区域可能会缩短延迟时间。在软件包位置字段中,指定包含模型工件的目录的 Cloud Storage 路径。
路径类似于以下示例:
gs://BUCKET_NAME/models-MODEL_ID/tf-saved-model/TIMESTAMP/
将其他所有字段留空。
点击导入。
导入完成后,您的模型将显示在模型页面上。您可以像使用其他 AutoML 表格模型那样使用此模型,但导入的 AutoML 表格模型不支持 Vertex Explainable AI。
以编程方式导入模型
以下示例展示了如何使用各种工具导入模型:
gcloud
以下示例使用 gcloud ai models upload
命令:
在使用下面的命令数据之前,请先进行以下替换:
- LOCATION:您在其中使用 Vertex AI 的区域。
-
MODEL_NAME:
Model
的显示名。 -
IMAGE_URI:用于执行预测的容器映像的 URI。例如
us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-1:latest
。使用预构建容器或自定义容器。 -
PATH_TO_MODEL_ARTIFACT_DIRECTORY:Cloud Storage 中包含模型工件的目录的 Cloud Storage URI(以
gs://
开头)。
执行 gcloud ai models upload 命令:
Linux、macOS 或 Cloud Shell
gcloud ai models upload \ --region=LOCATION \ --display-name=MODEL_NAME \ --container-image-uri=IMAGE_URI \ --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
Windows (PowerShell)
gcloud ai models upload ` --region=LOCATION ` --display-name=MODEL_NAME ` --container-image-uri=IMAGE_URI ` --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
Windows (cmd.exe)
gcloud ai models upload ^ --region=LOCATION ^ --display-name=MODEL_NAME ^ --container-image-uri=IMAGE_URI ^ --artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
上述示例展示了导入大多数模型需要的所有标志。如果您不使用预构建容器进行预测,则可能需要指定其他一些可选标志,以便 Vertex AI 能够使用您的容器映像。这些标志以 --container-
开头,对应于 Model
的 containerSpec
的字段。
REST 和命令行
使用以下代码示例,通过 model
资源的 upload
方法上传模型。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:您在其中使用 Vertex AI 的区域。
- PROJECT_ID:您的项目 ID 或项目编号。
-
MODEL_NAME:
Model
的显示名。 - MODEL_DESCRIPTION:可选。模型说明。
-
IMAGE_URI:用于执行预测的容器映像的 URI。例如
us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-1:latest
。使用预构建容器或自定义容器。 -
PATH_TO_MODEL_ARTIFACT_DIRECTORY:Cloud Storage 中包含模型工件的目录的 Cloud Storage URI(以
gs://
开头)。如果您使用的是自定义容器,此变量和artifactUri
字段为可选字段。 labels
:可选。用于组织模型的任何键值对。例如:- "env": "prod"
- "tier": "backend"
- 指定要应用于此训练流水线的任何标签的 LABEL_NAME 和 LABEL_VALUE。
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload
请求 JSON 正文:
{ "model": { "displayName": "MODEL_NAME", "predictSchemata": {}, "containerSpec": { "imageUri": "IMAGE_URI" }, "artifactUri": "PATH_TO_MODEL_ARTIFACT_DIRECTORY", "labels": { "LABEL_NAME_1": "LABEL_VALUE_1", "LABEL_NAME_2": "LABEL_VALUE_2" } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/models:upload" | Select-Object -Expand Content
Java
如需了解如何安装和使用 Vertex AI 客户端库,请参阅 Vertex AI 客户端库。如需了解详情,请参阅 Vertex AI Java API 参考文档。
Node.js
如需了解如何安装和使用 Vertex AI 客户端库,请参阅 Vertex AI 客户端库。如需了解详情,请参阅 Vertex AI Node.js API 参考文档。
Python
如需了解如何安装和使用 Vertex AI 客户端库,请参阅 Vertex AI 客户端库。如需了解详情,请参阅 Vertex AI Python API 参考文档。
如需导入启用了 Vertex Explainable AI 设置的模型,请参阅 Vertex Explainable AI 模型导入示例。
获取操作状态
某些请求会启动需要一些时间才能完成的长时间运行的操作。这些请求会返回操作名称,您可以使用该名称查看操作状态或取消操作。Vertex AI 提供辅助方法来调用长时间运行的操作。如需了解详情,请参阅使用长时间运行的操作。
后续步骤
- 以编程方式或使用 Cloud Console 将模型部署到端点。