Registering Models

Introduction to MLflow

Weston Bassler

Senior MLOps Engineer

Registering MLflow Models

  • Model Versions

    • follows traditional software development
    • track changes
  • Collaboration

    • between different roles
    • same roles for improvement
Introduction to MLflow

Model lifecycle management

model-lifecycle

1 datacamp.com
Introduction to MLflow

Ways to register models

# Existing MLflow Models
mlflow.register_model(model_uri, name)

model_uri

  • local filesystem
  • tracking server
# During training run
mlflow.FLAVOR.log_model(name, 
    artifact_uri,
    registered_model_name="MODEL_NAME")

registered_model_name="MODEL_NAME"

Introduction to MLflow

Registering model example

# Import mlflow
import mlflow


# Register model from local filesystem mlflow.register_model("./model", "Unicorn")
# Register model from Tracking server mlflow.register_model("runs:/run-id/model", "Unicorn")
Introduction to MLflow
# Register local MLFlow Model
mlflow.register_model(model_uri="./model", name="Unicorn")
Registered model 'Unicorn' already exists. Creating a new version of this model...

2023/03/24 14:34:26 INFO mlflow.tracking._model_registry.client: Waiting up to 300 seconds for model version to finish creation. Model name: Unicorn, version 1 Created version '1' of model 'Unicorn'. <ModelVersion: creation_timestamp=1679682866413, current_stage='None', description=None, last_updated_timestamp=1679682866413, name='Unicorn', run_id=None, run_link=None, source='./model', status='READY', status_message=None, tags={}, user_id=None, version=1>
Introduction to MLflow
# Register model from MLflow Tracking
mlflow.register_model(model_uri="runs:/run-id/model", name="Unicorn")
Registered model 'Unicorn' already exists. Creating a new version of this model...
2023/03/24 14:36:56 INFO mlflow.tracking._model_registry.client: 
Waiting up to 300 seconds for model version to finish creation.                     
Model name: Unicorn, version 2
Created version '2' of model 'Unicorn'.
<ModelVersion: creation_timestamp=1679683016297, current_stage='None', 
description=None, last_updated_timestamp=1679683016297, name='Unicorn', 
run_id='2e974508b68b45ceb114657c6e97fef5', run_link=None, 
source='./mlruns/1/2e974508b68b45ceb114657c6e97fef5/artifacts/model', 
status='READY', status_message=None, tags={}, user_id=None, version=2>
Introduction to MLflow

Models UI

models-ui

Introduction to MLflow

Unicorn versions

versions-ui

Introduction to MLflow

Logging model

# Import modules
import mlflow
import mlflow.sklearn
from sklearn.linear_model import LogisticRegression


# Model lr = LogisticRegression() lr.fit(X, y)
# Log model mlflow.sklearn.log_model(lr, "model", registered_model_name="Unicorn")
Introduction to MLflow
# Log model
mlflow.sklearn.log_model(lr, "model", registered_model_name="Unicorn")
Registered model 'Unicorn' already exists. Creating a new version of this model...
2023/03/24 17:31:10 INFO mlflow.tracking._model_registry.client: 
Waiting up to 300 seconds for model version to finish creation.                     
Model name: Unicorn, version 3
Created version '3' of model 'Unicorn'.
<mlflow.models.model.ModelInfo object at 0x14734d330>
Introduction to MLflow

Let's practice

Introduction to MLflow

Preparing Video For Download...