API Reference

ModelRegistryClient

class kubeflow.hub.ModelRegistryClient(base_url: str, port: int | None = None, *, author: str | None = None, is_secure: bool | None = None, user_token: str | None = None, custom_ca: str | None = None)[source]

Bases: object

Client for Kubeflow Model Registry operations.

Requires the model-registry package to be installed. Install it with:

pip install ‘kubeflow[hub]’

__init__(base_url: str, port: int | None = None, *, author: str | None = None, is_secure: bool | None = None, user_token: str | None = None, custom_ca: str | None = None)[source]

Initialize the ModelRegistryClient.

Parameters:

base_url (str) – Base URL of the model registry server including scheme. Examples: “https://registry.example.com”, “http://localhost” The scheme is used to infer is_secure and port if not explicitly provided.

Keyword Arguments:
  • port – Server port. If not provided, inferred from base_url scheme: - https:// defaults to 443 - http:// defaults to 8080 - no scheme defaults to 443

  • author – Name of the author.

  • is_secure – Whether to use a secure connection. If not provided, inferred from base_url: - https:// sets is_secure=True - http:// sets is_secure=False - no scheme defaults to True

  • user_token – The PEM-encoded user token as a string.

  • custom_ca – Path to the PEM-encoded root certificates as a string.

Raises:

ImportError – If model-registry is not installed.

Examples

ModelRegistryClient(”https://example.org”, port=456) # port kwarg ModelRegistryClient(”https://example.org:456”) # base_url (including port) ModelRegistryClient(”https://example.org”) # default port (443 for https, 8080 for http)

register_model(name: str, uri: str, *, version: str, model_format_name: str | None = None, model_format_version: str | None = None, author: str | None = None, owner: str | None = None, version_description: str | None = None, metadata: Mapping[str, bool | int | float | str] | None = None) RegisteredModel[source]

Register a model.

This registers a model in the model registry. The model is not downloaded, and has to be stored prior to registration.

Most models can be registered using their URI, along with optional connection-specific parameters, storage_key and storage_path or, simply a service_account_name. URI builder utilities are recommended when referring to specialized storage; for example utils.s3_uri_from helper when using S3 object storage data connections.

Parameters:
  • name (str) – Name of the model.

  • uri (str) – URI of the model.

Keyword Arguments:
  • version – Version of the model. Has to be unique.

  • model_format_name – Name of the model format (e.g., “pytorch”, “tensorflow”, “onnx”). Used by KServe to select the appropriate serving runtime.

  • model_format_version – Version of the model format (e.g., “2.0”, “1.15”).

  • author – Author of the model. Defaults to the client author.

  • owner – Owner of the model. Defaults to the client author.

  • version_description – Description of the model version.

  • metadata – Additional version metadata.

Returns:

Registered model.

update_model(model: RegisteredModel) RegisteredModel[source]

Update a registered model.

Parameters:

model (RegisteredModel) – The registered model to update. Must have an ID.

Returns:

Updated registered model.

Raises:
  • TypeError – If model is not a RegisteredModel instance.

  • model_registry.exceptions.StoreError – If model does not have an ID.

update_model_version(model_version: ModelVersion) ModelVersion[source]

Update a model version.

Parameters:

model_version (ModelVersion) – The model version to update. Must have an ID.

Returns:

Updated model version.

Raises:
  • TypeError – If model_version is not a ModelVersion instance.

  • model_registry.exceptions.StoreError – If model version does not have an ID.

update_model_artifact(model_artifact: ModelArtifact) ModelArtifact[source]

Update a model artifact.

Parameters:

model_artifact (ModelArtifact) – The model artifact to update. Must have an ID.

Returns:

Updated model artifact.

Raises:
  • TypeError – If model_artifact is not a ModelArtifact instance.

  • model_registry.exceptions.StoreError – If model artifact does not have an ID.

get_model(name: str) RegisteredModel[source]

Get a registered model.

Parameters:

name (str) – Name of the model.

Returns:

Registered model.

Raises:

ValueError – If the model does not exist.

get_model_version(name: str, version: str) ModelVersion[source]

Get a model version.

Parameters:
  • name (str) – Name of the model.

  • version (str) – Version of the model.

Returns:

Model version.

Raises:
  • model_registry.exceptions.StoreError – If the model does not exist.

  • ValueError – If the version does not exist.

get_model_artifact(name: str, version: str) ModelArtifact[source]

Get a model artifact.

Parameters:
  • name (str) – Name of the model.

  • version (str) – Version of the model.

Returns:

Model artifact.

Raises:
  • model_registry.exceptions.StoreError – If either the model or the version don’t exist.

  • ValueError – If the artifact does not exist.

list_models() Iterator[RegisteredModel][source]

Get an iterator for registered models.

Yields:

Registered models.

list_model_versions(name: str) Iterator[ModelVersion][source]

Get an iterator for model versions.

Parameters:

name (str) – Name of the model.

Yields:

Model versions.

Raises:

model_registry.exceptions.StoreError – If the model does not exist.

Types

The following types are returned by the client methods. They are provided by the model-registry package.

class model_registry.types.RegisteredModel(**data: Any) None[source]

Bases: BaseResourceModel

Represents a registered model.

name

Registered model name.

owner

Owner of this Registered Model.

description

Description of the object.

external_id

Customizable ID. Has to be unique among instances of the same type.

name: str
owner: str | None
state: RegisteredModelState
create(**kwargs) RegisteredModelCreate[source]

Convert the object to a create request.

update(**kwargs) RegisteredModelUpdate[source]

Convert the object to an update request.

classmethod from_basemodel(source: RegisteredModel) RegisteredModel[source]

Create a new object from a BaseModel object.

model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class model_registry.types.ModelVersion(**data: Any) None[source]

Bases: BaseResourceModel

Represents a model version.

name

Name of this version.

author

Author of this model version.

state

Status of this model version.

description

Description of this object.

external_id

Customizable ID. Has to be unique among instances of the same type.

artifacts

Artifacts associated with this version.

name: str
author: str | None
state: ModelVersionState
registered_model_id: str | None
create(*, registered_model_id: str, **kwargs) ModelVersionCreate[source]

Convert the object to a create request.

update(**kwargs) ModelVersionUpdate[source]

Convert the object to an update request.

classmethod from_basemodel(source: ModelVersion) ModelVersion[source]

Create a new object from a BaseModel object.

model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class model_registry.types.ModelArtifact(**data: Any) None[source]

Bases: Artifact

Represents a Model.

name

Name of the model.

uri

URI of the model.

description

Description of the object.

external_id

Customizable ID. Has to be unique among instances of the same type.

model_format_name

Name of the model format.

model_format_version

Version of the model format.

storage_key

Storage secret name.

storage_path

Storage path of the model.

service_account_name

Name of the service account with storage secret.

model_source_kind

A string identifier describing the source kind.

model_source_class

A subgroup within the source kind.

model_source_group

This identifies a source group for models from source class.

model_source_id

A unique identifier for a source model within kind, class, and group.

model_source_name

A human-readable name for the source model.

model_format_name: str | None
model_format_version: str | None
storage_key: str | None
storage_path: str | None
service_account_name: str | None
model_source_kind: str | None
model_source_class: str | None
model_source_group: str | None
model_source_id: str | None
model_source_name: str | None
uri: str | None
create(**kwargs) ModelArtifactCreate[source]

Create a new ModelArtifactCreate object.

update(**kwargs) ModelArtifactUpdate[source]

Create a new ModelArtifactUpdate object.

as_basemodel() ModelArtifact[source]

Wrap the object in a BaseModel object.

classmethod from_basemodel(source: ModelArtifact) ModelArtifact[source]

Create a new ModelArtifact object from a BaseModel object.

model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_post_init(context: Any, /) None

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

Parameters:
  • self (BaseModel) – The BaseModel instance.

  • context (Any) – The context.