0
0
Ml-pythonHow-ToBeginner ยท 4 min read

How to Version Models in a Registry for Machine Learning

To version a model in a registry, use the register_model function or equivalent API to save the model with a unique version identifier. Each version tracks changes and metadata, enabling easy rollback and deployment management.
๐Ÿ“

Syntax

The typical syntax to version a model in a registry involves specifying the model path, a unique model name, and optionally a version number or tag.

  • model_path: Location of the saved model files.
  • model_name: A unique name to identify the model in the registry.
  • version: Optional version number or tag to differentiate model iterations.
  • register_model(): Function or API call to save the model and its metadata in the registry.
python
register_model(model_path: str, model_name: str, version: str = None) -> None
๐Ÿ’ป

Example

This example shows how to save and version a scikit-learn model using MLflow's model registry. It trains a simple model, saves it, and registers it with a version.

python
import mlflow
import mlflow.sklearn
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# Load data
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42)

# Train model
model = RandomForestClassifier(n_estimators=10, random_state=42)
model.fit(X_train, y_train)

# Start MLflow run
with mlflow.start_run():
    # Log model
    mlflow.sklearn.log_model(model, "model")
    # Register model with a name
    model_uri = "runs:/" + mlflow.active_run().info.run_id + "/model"
    mlflow.register_model(model_uri, "IrisRandomForest")

print("Model registered with versioning in MLflow registry.")
Output
Model registered with versioning in MLflow registry.
โš ๏ธ

Common Pitfalls

Common mistakes when versioning models in a registry include:

  • Not specifying a unique model name, causing overwrites.
  • Failing to log or register the model properly, leading to missing versions.
  • Ignoring metadata like parameters or metrics, which makes version comparison hard.
  • Manually managing versions instead of using the registry's built-in versioning features.

Always use the registry's API to handle versions automatically and keep metadata consistent.

python
## Wrong way: Saving model without registering or versioning
import joblib
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
joblib.dump(model, "model.pkl")  # No version info or registry

## Right way: Use registry API to register with version
import mlflow
mlflow.sklearn.log_model(model, "model")
mlflow.register_model("runs:/<run_id>/model", "ModelName")
๐Ÿ“Š

Quick Reference

StepActionDescription
1Train ModelCreate and train your machine learning model.
2Save ModelSave the model locally or in a run context.
3Register ModelUse registry API to register model with a unique name.
4Assign VersionRegistry automatically assigns or you specify a version.
5Track MetadataLog parameters, metrics, and tags for each version.
6Deploy or RollbackUse versioned models for deployment or rollback.
โœ…

Key Takeaways

Always register models with a unique name to avoid overwriting versions.
Use the model registry's API to automatically handle versioning and metadata.
Track parameters and metrics with each version for easy comparison.
Avoid manual version management; rely on the registry's built-in features.
Versioned models enable safe deployment and rollback in production.