本指南介绍如何将模型导入 Model Registry。导入模型后,它会显示在 Model Registry 中。在 Model Registry 中,您可以将导入的模型部署到端点并运行预测。
所需的角色
如需获得导入模型所需的权限,请让您的管理员为您授予项目的 Vertex AI User (roles/aiplatform.user
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
预构建或自定义容器
导入模型时,您可以将其与 Vertex AI 相关联以运行预测请求。您可以使用 Vertex AI 提供的预构建容器,也可以使用您自己构建并推送到 Artifact Registry 的自定义容器。
如果您的模型符合以下要求,则可以使用预构建容器:
- 在 Python 3.7 或更高版本中训练
- 使用 TensorFlow、PyTorch、scikit-learn 或 XGBoost 训练
- 导出以满足某个预构建预测容器的特定于框架的要求
如果要导入您之前导出的表格 AutoML 模型,则必须使用 Vertex AI 提供的特定自定义容器。
否则,请创建新的自定义容器,或使用 Artifact Registry 中的现有自定义容器。
将模型工件上传到 Cloud Storage
您必须将模型工件存储在 Cloud Storage 存储桶中,存储桶所在区域与您使用的区域端点一致。
如果您的 Cloud Storage 存储桶位于其他 Google Cloud 项目中,则需要授予 Vertex AI 访问权限以读取模型工件。
如果您使用的是预构建容器,请确保模型工件的文件名与以下示例完全匹配:
- TensorFlow SavedModel:
saved_model.pb
- PyTorch:
model.mar
- scikit-learn:
model.joblib
或model.pkl
- XGBoost:
model.bst
、model.joblib
或model.pkl
详细了解如何导出模型工件以进行预测。
使用 Google Cloud 控制台导入模型
如需使用 Google Cloud 控制台导入模型,请执行以下操作:
在 Google Cloud 控制台中,转到 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
命令:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_NAME \
--container-image-uri=IMAGE_URI \
--artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
替换以下内容:
- LOCATION_ID:您在其中使用 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://
开头)。
上述示例展示了导入大多数模型需要的所有标志。如果您不使用预构建容器进行预测,则可能需要指定其他一些可选标志,以便 Vertex AI 能够使用容器映像。这些标志以 --container-
开头,对应于 Model
的 containerSpec
的字段。
REST
使用以下代码示例,通过 model
资源的 upload
方法上传模型。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION_ID:您在其中使用 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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/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 print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models:upload"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth 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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models:upload" | Select-Object -Expand Content
Java
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Java 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Java API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Node.js 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Node.js API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
如需导入启用了 Vertex Explainable AI 设置的模型,请参阅 Vertex Explainable AI 模型导入示例。
获取操作状态
某些请求会启动需要一些时间才能完成的长时间运行的操作。这些请求会返回操作名称,您可以使用该名称查看操作状态或取消操作。Vertex AI 提供辅助方法来调用长时间运行的操作。如需了解详情,请参阅使用长时间运行的操作。
限制
- 支持的模型大小上限为 10 GiB。
后续步骤
- 以编程方式或使用 Google Cloud 控制台将模型部署到端点。