doc/development/data_science/model_registry/_index.md
Model registry is the component in the MLOps lifecycle responsible for managing model versions. Beyond tracking just artifacts, it is responsible to track the metadata associated to each model, like:
All entities belong to a project, and only users with access to the project can interact with the entities.
Ml::ModelMl::Experiment with the same name where candidates are logged to.Ml::ModelVersion.Ml::ModelVersionPackages::Package with the same project, name, and version.Ml::ExperimentMl::Candidates.Ml::CandidateMl::CandidateParams), which are usually configuration variables passed to the training code.Ml::CandidateMetrics).Ml::CandidateMetadata).To make it easier for Data Scientists with GitLab Model registry, we provided a compatibility layer to MLflow client. We do not provide an MLflow instance with GitLab. Instead, GitLab itself acts as an instance of MLflow. This method stores data on the GitLab database, which improves user reliability and functionality. See the user documentation about the compatibility layer.
The compatibility layer is implemented by replicating the MLflow rest API
in lib/api/ml/mlflow.
Some terms on MLflow are named differently in GitLab:
Run is a GitLab Candidate.Registered model is a GitLab Model.To test the script with MLflow with GitLab as the backend:
Install MLflow:
mkdir mlflow-compatibility
cd mlflow-compatibility
pip install mlflow jupyterlab
In the directory, create a Python file named mlflow_test.py with the following code:
import mlflow
import os
from mlflow.tracking import MlflowClient
os.environ["MLFLOW_TRACKING_TOKEN"]='<TOKEN>'
os.environ["MLFLOW_TRACKING_URI"]='<your gitlab endpoint>/api/v4/projects/<your project id>/ml/mlflow'
client = MlflowClient()
client.create_experiment("My first experiment")
Run the script:
python mlflow_test.py
Go to the project /-/ml/experiments. An experiment should have been created.
You can edit the script to call the client methods we are trying to implement. See GitLab Model experiments example for a more complete example.