入门
本指南展示了如何开始使用模型注册表,以及如何使用命令行或 Python 客户端运行一些示例。
有关模型注册表逻辑模型的概述,请查看 模型注册表逻辑模型。逻辑模型通过模型注册表 REST API 公开。
先决条件
要按照本指南中的示例进行操作,您需要安装 Kubeflow 和模型注册表
设置
要在 notebook 中使用模型注册表,您应该首先安装 Python 客户端
!pip install model-registry=="0.2.16"
!pip install kserve=="0.13"
请注意,根据您的环境,依赖于 pydantic
的包可能存在依赖冲突的版本。
您可以从前面的步骤获取指向已部署模型注册表的客户端
from model_registry import ModelRegistry
registry = ModelRegistry(
server_address="http://model-registry-service.kubeflow.svc.cluster.local",
port=8080,
author="your name",
is_secure=False
)
有关客户端设置和功能的更多信息,请参阅模型注册表 Python 客户端文档。
注册元数据
例如,您可以使用 register_model
方法索引模型的制品及其元数据
rm = registry.register_model(
"iris",
"gs://kfserving-examples/models/sklearn/1.0/model",
model_format_name="sklearn",
model_format_version="1",
version="v1",
description="Iris scikit-learn model",
metadata={
"accuracy": 3.14,
"license": "BSD 3-Clause License",
}
)
检索元数据
继续前面的示例,您可以使用以下方法检索与给定模型制品关联的元数据
model = registry.get_registered_model("iris")
print("Registered Model:", model, "with ID", model.id)
version = registry.get_model_version("iris", "v1")
print("Model Version:", version, "with ID", version.id)
art = registry.get_model_artifact("iris", "v1")
print("Model Artifact:", art, "with ID", art.id)
这些可用于创建 KServe 推理端点。
部署推理端点
通常您需要手动提供部署元数据,这会导致容易出错的过程,特别是当这些数据需要从多个来源收集时。使用模型注册表可确保简化对准确元数据的访问,并使您能够基于模型注册表值自动化部署,如下面的示例所示。
注意:提供的示例使用模型注册表 Python 客户端和 KServe Python SDK。您可以类似地使用模型注册表 REST API 和您自己的附加 SDK。
使用模型注册表元数据
例如,您可以使用上一步检索到的元数据和 KServe Python SDK 创建推理端点
from kubernetes import client
import kserve
isvc = kserve.V1beta1InferenceService(
api_version=kserve.constants.KSERVE_GROUP + "/v1beta1",
kind=kserve.constants.KSERVE_KIND,
metadata=client.V1ObjectMeta(
name="iris-model",
namespace=kserve.utils.get_default_target_namespace(),
labels={
"modelregistry/registered-model-id": model.id,
"modelregistry/model-version-id": version.id,
},
),
spec=kserve.V1beta1InferenceServiceSpec(
predictor=kserve.V1beta1PredictorSpec(
model=kserve.V1beta1ModelSpec(
storage_uri=art.uri,
model_format=kserve.V1beta1ModelFormat(
name=art.model_format_name, version=art.model_format_version
),
)
)
),
)
ks_client = kserve.KServeClient()
ks_client.create(isvc)
现在已创建推理端点,使用从模型注册表(上一步)检索到的制品元数据,指定用于服务模型的服务运行时,并引用模型注册表中的原始实体。
使用模型注册表自定义存储初始化器
模型注册表自定义存储初始化器 (CSI) 是 KServe 存储初始化器的一个自定义实现,它允许您使用模型注册表元数据下载和部署模型(请参阅 安装说明)。您可以创建一个引用模型注册表中模型和版本的 InferenceService
from kubernetes import client
import kserve
isvc = kserve.V1beta1InferenceService(
api_version=kserve.constants.KSERVE_GROUP + "/v1beta1",
kind=kserve.constants.KSERVE_KIND,
metadata=client.V1ObjectMeta(
name="iris-model",
namespace=kserve.utils.get_default_target_namespace(),
labels={
"modelregistry/registered-model-id": model.id,
"modelregistry/model-version-id": version.id,
},
),
spec=kserve.V1beta1InferenceServiceSpec(
predictor=kserve.V1beta1PredictorSpec(
model=kserve.V1beta1ModelSpec(
storage_uri="model-registry://iris/v1", # The protocol is model-registry://{modelName}/{modelVersion}
model_format=kserve.V1beta1ModelFormat(
name=art.model_format_name, version=art.model_format_version
),
)
)
),
)
ks_client = kserve.KServeClient()
ks_client.create(isvc)
或者,您可以使用 YAML manifest 创建相同的 InferenceService
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
name: iris-model
namespace: kubeflow-user-example-com # Replace if different from kserve.utils.get_default_target_namespace()
labels:
modelregistry/registered-model-id: "MODEL_ID" # Replace with actual model.id value
modelregistry/model-version-id: "VERSION_ID" # Replace with actual version.id value
spec:
predictor:
model:
storageUri: "model-registry://iris/v1" # protocol format: model-registry://{modelName}/{modelVersion}
modelFormat:
name: "sklearn" # Replace if needed with art.model_format_name from model registry (typically one of https://kserve.github.io/website/latest/modelserving/v1beta1/serving_runtime)
version: "1" # Replace if needed with art.model_format_version from model registry
现在 InferenceService 已创建,CSI 从模型注册表检索与模型版本关联的最新制品数据,然后从其 URI 下载模型。
使用模型注册表 UI
除了命令行和 Python 客户端之外,您还可以使用模型注册表 UI 管理您的模型。UI 提供了一个直观的界面,用于注册、更新和查询模型及其元数据。
要访问模型注册表 UI,请导航到 Kubeflow 中央仪表盘并选择模型注册表组件。在那里,您可以执行各种操作,例如
- 注册新模型
- 查看注册的模型及其版本
- 更新模型元数据
- 删除模型
有关使用模型注册表 UI 的详细说明,请参阅模型注册表 UI 文档。