Skip to main content

Modelzone SDK – a slim model training and serving toolkit

Project description

ModelZone SDK

A Python package for managing, training, and installing machine learning models. The package consists of:

  • A Python SDK used for writing the code for training and inference of a machine learning model.
  • A CLI used for tracking and registration of models in Azure ML.

Installation

pip install modelzone-sdk

Overview

Taking a look at the various Python machine learning frameworks out there, you will come across many different workflows used for training and prediction. ModelZone SDK uses the following definition:

A model project is a Python package with a training function, which is responsible for (1) tracking metrics and graphs used for comparing different model experiments and (2) generating model artifacts (such as model parameters and hyper-parameters) that need to be shipped with the package.

ModelZone SDK assumes your machine learning workflow looks more or less like the following:

  1. Experimentation by training different models (and hyper-parameters).
  2. Release of the best suited model for production usage.
  3. Using the released model for inference in operations.

alt text


Quick guide

We have made an example of how a training and inference project should look like:


Detailed guide

Model project structure

Training function

Your training function must be defined within the Python package:

# my-model/model.py
def train():
    X, y = ...
    lin_reg = LinearRegression()
    lin_reg.fit(X, y)

Tracking

If you have experience with the built-in logging module of Python, tracking experiment data with ModelZone SDK will feel much the same. Tracking is done using a global tracker, which needs to be configured before running your code (when using the CLI tool, this takes care of configuring your tracker to log to the correct place; local or Azure AI Workspace).

Metrics and visualziation

The tracker can be used for logging metrics and visualizations for your experiment run:

# my-model/model.py
import modelzone as mz

tracker = mz.get_tracker()

def train():
    X, y = ...
    lin_reg = LinearRegression()
    tracker.log_tag("model_type", "LinearRegression")
    lin_reg.fit(X, y)
    y_hat = lin_reg.predict(X)
    mae = (y - y_hat).abs().mean()
    tracker.log_metric("MAE", mae)

The tracker can also be used for logging artifacts for your experiment run (e.g. model parameters). You define an artifact by inheriting from the Artifact class available in ModelZone SDK (all this does is to provide methods for saving and loading the class using the pickle module):

# my-model/model.py
import modelzone as mz

tracker = mz.get_tracker()

class Predictor(mz.Artifact):

    def __init__(self, model: Estimator):
        self.model = model

    def predict(self, ...):
        ...

def train():
    X, y = ...
    lin_reg = LinearRegression()
    lin_reg.fit(X, y)
    predictor = Predictor(lin_reg)
    tracker.log_artifact("my-artifact", predictor)

When installing this package elsewhere, you can now get back the artifact as follows:

from mypackage import Predictor

predictor = Predictor.load(name="my-artifact")

Logging

ModelZone SDK allows for logging various items to your experiment run.

Metrics

You can log a single metric as follows

tracker.log_metric("MAE", 1.23)

You can also log multiple related metrics (e.g. the same metric but with varying context):

tracker.log_metric("MAE", 1.23, dimensions={"country": "DK"})
tracker.log_metric("MAE", 4.56, dimensions={"country": "SE"})

These will be visualized a Plotly table when tracking to Azure ML:

alt text

Figures

You can log a single figure as follows:

tracker.log_figure(
    name="Errors",
    figure=px.histogram(x=[1, 2, 2, 3, 3, 3]),
)

You can also log multiple related figures (e.g. the same figure but with varying context):

tracker.log_figure(
    name="Errors",
    figure=px.histogram(x=[1, 2, 2, 3, 3, 3]),
    dimensions={"country": "DK"}
)
tracker.log_figure(
    name="Errors",
    figure=px.histogram(x=[4, 4, 5, 5, 5, 6]),
    dimensions={"country": "SE"}
)

These will be visualized a Plotly figure with dropdown selection when tracking to Azure ML:

alt text

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modelzone_sdk-3.0.4.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modelzone_sdk-3.0.4-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file modelzone_sdk-3.0.4.tar.gz.

File metadata

  • Download URL: modelzone_sdk-3.0.4.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.0 CPython/3.13.13 Linux/6.17.0-1010-azure

File hashes

Hashes for modelzone_sdk-3.0.4.tar.gz
Algorithm Hash digest
SHA256 61190b70c0995378f2807d0c9abf1d748cb568f72d0b1574417ab5940a4fa23a
MD5 0e17b3f906b1c8a7385d16d1c2df26ae
BLAKE2b-256 67b7133a34a3efc0043eb9cb36275881e3aaadd906dbae1d14a00a99d9e45d07

See more details on using hashes here.

File details

Details for the file modelzone_sdk-3.0.4-py3-none-any.whl.

File metadata

  • Download URL: modelzone_sdk-3.0.4-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.0 CPython/3.13.13 Linux/6.17.0-1010-azure

File hashes

Hashes for modelzone_sdk-3.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4521e0f340259f1fbc2f052b8c7b9c37a5c0660da484ee87c750403cc06e502f
MD5 3d16b14cda8870eeaa33878c4d2f754d
BLAKE2b-256 422f8fbc936c629ecf93f5557aebb46a492bbe86a35e23a92215e4fd580f35a8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page