入门

通过示例开始使用模型注册表

本指南展示了如何开始使用模型注册表,以及如何使用命令行或 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 提供了一个直观的界面,用于注册、更新和查询模型及其元数据。

Model Registry Overview

要访问模型注册表 UI,请导航到 Kubeflow 中央仪表盘并选择模型注册表组件。在那里,您可以执行各种操作,例如

  • 注册新模型
  • 查看注册的模型及其版本
  • 更新模型元数据
  • 删除模型

有关使用模型注册表 UI 的详细说明,请参阅模型注册表 UI 文档

后续步骤

反馈

此页面有帮助吗?