diff --git a/datamint/api/endpoints/models_api.py b/datamint/api/endpoints/models_api.py index b07aeb31..1ee638fe 100644 --- a/datamint/api/endpoints/models_api.py +++ b/datamint/api/endpoints/models_api.py @@ -85,3 +85,20 @@ def create(self, name: str, description: str | None = None, exists_ok: bool = Tr return self.get_by_name(name) raise return Model(_raw=raw_model, _api=self) + + def delete_model_version(self, name: str, version: str | int) -> None: + """Delete a single model version. + + Args: + name: Name of the registered model. + version: Version number to delete. + """ + self._mlflow_client.delete_model_version(name, str(version)) + + def delete_registered_model(self, name: str) -> None: + """Delete a registered model and all of its versions. + + Args: + name: Name of the registered model to delete. + """ + self._mlflow_client.delete_registered_model(name) diff --git a/docs/source/client_api_content.rst b/docs/source/client_api_content.rst index 7818db3e..9de1d32e 100644 --- a/docs/source/client_api_content.rst +++ b/docs/source/client_api_content.rst @@ -514,6 +514,34 @@ a Datamint :mod:`~datamint.lightning.trainers`), rather than raising. ``Model.get_supported_modes()``/``get_metrics()`` are shortcuts that delegate to the latest version when you don't need a specific one. +Model registry (MLflow) operations ++++++++++++++++++++++++++++++++++ + +``api.models`` wraps the underlying MLflow model registry client directly, so +these calls map one-to-one onto MLflow's own registry API: + ++---------------------------------------------+-------------------------------------------+ +| Method | MLflow equivalent | ++=============================================+===========================================+ +| ``api.models.create(...)`` | ``MlflowClient.create_registered_model`` | ++---------------------------------------------+-------------------------------------------+ +| ``api.models.get_by_name(...)`` | ``MlflowClient.get_registered_model`` | ++---------------------------------------------+-------------------------------------------+ +| ``api.models.get_list(...)`` | ``MlflowClient.search_registered_models`` | ++---------------------------------------------+-------------------------------------------+ +| ``api.models.delete_model_version(...)`` | ``MlflowClient.delete_model_version`` | ++---------------------------------------------+-------------------------------------------+ +| ``api.models.delete_registered_model(...)`` | ``MlflowClient.delete_registered_model`` | ++---------------------------------------------+-------------------------------------------+ + +.. code-block:: python + + # Delete a single version + api.models.delete_model_version("my-model", version=1) + + # Delete a registered model and all of its remaining versions + api.models.delete_registered_model("my-model") + Deploy a registered model +++++++++++++++++++++++++