Skip to navigation

MLOps Overview

View as Markdown

Turn on MLOps to keep a record of every model your Kumo Engine code trains and every batch of predictions it makes. Kumo stores each artifact under one location you choose, records each training and prediction run in your experiment tracker, and, when you name a registry, registers each trained model there. With these records you can answer which model and which data produced a table of scores, compare versions of a model, and promote a new version to production.

MLOps requires Kumo Engine 1.1.0 or newer.

You keep your existing code. You create one kumo.MLOps configuration and run your workflow inside with kumo.mlops(cfg):. This section continues from Training: you need a graph, a predictive query, and a model plan that train successfully.

What Kumo Records

With MLOps turned on, the calls you already make store their results under an artifact root, such as s3://<bucket>/kumo:

CallWhat is stored
graph.snapshot()The graph snapshot
query.generate_training_table()The training table
trainer.fit()The model bundle
trainer.predict()The prediction run: its scores and the rows it skipped

Each stored artifact also records where it came from, so a model leads back to its training table, graph snapshot, and source table versions.

The experiment tracker records each fit and each prediction run as a run, with parameters, metrics, and a run card that summarizes the result. When you name a model registry, it receives each trained model as a new version, and Kumo moves an alias, such as candidate, to it.

How the Pieces Fit Together

A model moves through the same loop on every platform:

FitStore the modelRecord a fit run RegisterNew versionalias candidate PromoteMove alias championto a better version ScoreLoad championRecord a prediction run MonitorCompare scoresRealized accuracy
  1. Fit. trainer.fit() inside the block stores the model and records the fit, with its per-epoch curves and holdout metrics.
  2. Register. With a registry configured, the fit registers the model as a new version and moves your registration alias to it.
  3. Promote. You compare the new version with the one in production and move the serving alias, such as champion, when it is better.
  4. Score. A scheduled job loads the model by its serving alias and calls trainer.predict(), which stores and records the prediction run, as described in Score in Batch.
  5. Monitor. You compare a prediction run’s scores with the model’s holdout scores and with earlier runs, and measure realized accuracy once outcomes are known, as described in Monitor Predictions.

Supported Platforms

PlatformExperiment trackingModel registry
Self-managed MLflowAny MLflow tracking serverThe server’s MLflow Model Registry
DatabricksMLflow in the Databricks workspaceUnity Catalog
Amazon SageMakerSageMaker managed MLflow: a tracking server or an MLflow AppThe same server’s or app’s registry
Snowflake (preview)Snowflake Experiment TrackingSnowflake Model Registry

Snowflake support is in preview: it uses Snowflake ML APIs that are themselves in preview, and its behavior can change.

The artifact root can be on local or mounted disk, Amazon S3, Google Cloud Storage, a Unity Catalog volume, or a Snowflake internal stage. The artifact root and the tracker do not need to be on the same platform; for example, a fit on your own GPU machine can store its model in S3 and record its run in Databricks.

Next Steps

To run fits and scoring as scheduled jobs, start from a recipe: Databricks Jobs, SageMaker Pipelines, or Snowflake Tasks (preview). MLOps Reference lists the stored layout, manifest fields, and drift definitions.