A model registry helps you keep track of different versions of your machine learning models in one place.
Model registry in ML Python
register_model(model, name, version=None, description=None) # model: the trained ML model object # name: a string to identify the model # version: optional version number or string # description: optional text about the model
The register_model function saves your model with a name and optional version.
Descriptions help explain what the model does or its changes.
register_model(my_model, 'house_price_predictor')register_model(my_model, 'house_price_predictor', version='v1')
register_model(my_model, 'house_price_predictor', description='Model trained on 2024 data')
This code trains a simple linear regression model, saves it in a basic model registry, then loads it back to make predictions and calculate error.
from sklearn.linear_model import LinearRegression from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # Simple model registry as a dictionary model_registry = {} def register_model(model, name, version=None, description=None): key = f"{name}:{version}" if version else name model_registry[key] = {'model': model, 'description': description} print(f"Model '{key}' registered.") def get_model(name, version=None): key = f"{name}:{version}" if version else name return model_registry.get(key, {}).get('model') # Create sample data X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) # Train a simple linear regression model model = LinearRegression() model.fit(X_train, y_train) # Register the model register_model(model, 'simple_linear', version='v1', description='Linear regression on synthetic data') # Retrieve the model and predict loaded_model = get_model('simple_linear', version='v1') predictions = loaded_model.predict(X_test) # Calculate and print mean squared error mse = mean_squared_error(y_test, predictions) print(f"Mean Squared Error: {mse:.2f}")
A model registry can be a simple dictionary or a full system like MLflow or SageMaker.
Always include versioning to avoid confusion between models.
Descriptions help your team understand model differences quickly.
A model registry stores and organizes your machine learning models.
It helps track versions, share models, and deploy the best one.
Even a simple dictionary can work as a basic model registry.
Practice
What is the main purpose of a model registry in machine learning?
Solution
Step 1: Understand the role of a model registry
A model registry is designed to keep track of machine learning models, their versions, and metadata.Step 2: Compare options with the definition
Only To store and organize machine learning models describes storing and organizing models, which matches the main purpose of a model registry.Final Answer:
To store and organize machine learning models -> Option AQuick Check:
Model registry = store and organize models [OK]
- Confusing model registry with data cleaning
- Thinking it speeds up training
- Mixing it with visualization tools
Which of the following is the correct way to add a model to a simple Python dictionary used as a model registry?
model_registry = {}
# Add model here
Solution
Step 1: Recall how to add key-value pairs to a dictionary
In Python, adding an item to a dictionary uses the syntax dict[key] = value.Step 2: Check each option for correct dictionary syntax
The incorrect options use methods like .add(), .append(), and .insert() which are not available for dictionaries. Only model_registry['model_v1'] = trained_model uses the correct assignment syntax.Final Answer:
model_registry['model_v1'] = trained_model -> Option AQuick Check:
Dictionary add = dict[key] = value [OK]
- Using list methods like append on dictionaries
- Trying to call add or insert on dict
- Confusing dictionary with list syntax
Given the following code, what will be the output?
model_registry = {}
model_registry['v1'] = {'accuracy': 0.8}
model_registry['v2'] = {'accuracy': 0.85}
print(model_registry['v2']['accuracy'])
Solution
Step 1: Understand the dictionary structure
model_registry has keys 'v1' and 'v2', each storing a dictionary with an 'accuracy' key.Step 2: Access the nested value
model_registry['v2']['accuracy'] accesses the accuracy value for version 'v2', which is 0.85.Final Answer:
0.85 -> Option BQuick Check:
Access nested dict value = 0.85 [OK]
- Confusing keys and values
- Expecting full dict instead of value
- Mistyping keys causing KeyError
Identify the error in this code snippet that tries to update a model's accuracy in a registry:
model_registry = {'v1': {'accuracy': 0.8}}
model_registry.update('v1', {'accuracy': 0.85})
Solution
Step 1: Check the usage of dictionary update method
The update() method takes a single dictionary or iterable of key-value pairs, not separate arguments.Step 2: Identify the correct way to update nested dictionary
To update nested dict, access it first: model_registry['v1'].update({'accuracy': 0.85}).Final Answer:
updatemethod expects a dictionary, not two arguments -> Option DQuick Check:
dict.update() needs one dict argument [OK]
- Passing multiple arguments to update()
- Trying to update nested dict without accessing it
- Assuming update() works like assignment
You want to keep track of multiple versions of a model with their accuracy and deployment status. Which data structure best suits a simple model registry in Python?
Solution
Step 1: Identify the need for storing multiple details per version
You need to store version keys, accuracy, and deployment status, which requires nested information.Step 2: Evaluate data structures for this need
A dictionary with version keys and nested dictionaries for details fits best. Lists or sets lack easy key-based access or nested info.Final Answer:
A dictionary with version keys and nested dictionaries for metrics and status -> Option CQuick Check:
Nested dicts store complex model info best [OK]
- Using lists or sets that lack keys
- Storing only one detail per model
- Using strings that can't hold structured data
Ready to prove it?
Pass the test and this pattern moves unknown
