Skip to main content

luml-mlflow

MLflow plugin that redirects MLflow tracking to a LUML orbit. Training code keeps calling the standard MLflow API, such as mlflow.start_run, mlflow.log_param, mlflow.log_metric and mlflow.sklearn.log_model. The plugin records each run in a local store and, when the run finishes, uploads it to the orbit as a LUML collection. No LUML SDK calls are needed in the training script.

The plugin registers a tracking store, an artifact repository and a placeholder model-registry store for the luml:// URI scheme. MLflow discovers them automatically.

Requires Python 3.12 or later and MLflow 3.1 or later.

Installation

pip install luml-mlflow

Uploading runs needs a LUML API key, created in the LUML web interface under account settings. The plugin reads it from LUML_API_KEY, then ~/.luml.json, then the system keyring where Flow stores it. Logging to the local store works without a key.

export LUML_API_KEY="luml_your_api_key"

Usage

Set the tracking URI to an organization and an orbit, by name or id. It is the only LUML-specific line:

import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier

mlflow.set_tracking_uri("luml://my-org/my-orbit")
mlflow.set_experiment("churn_prediction")

with mlflow.start_run(run_name="random_forest_v1"):
    mlflow.log_param("n_estimators", 100)
    model = RandomForestClassifier(n_estimators=100).fit(X, y)
    mlflow.log_metric("accuracy", model.score(X, y))
    mlflow.sklearn.log_model(model, name="churn_model")

When the run finishes, it is uploaded to a collection named after the experiment. A logged model becomes a LUML model in the .luml format, other artifacts become attachments, and parameters, metrics and tags go into an experiment snapshot. The upload is best-effort: a failure is recorded on the run and never crashes the training script.

luml://local keeps runs on disk without uploading them. Runs are staged in the same SQLite store that Flow reads (~/.luml/experiments, set by LUML_BACKEND_STORE_URI), so they show up in lumlflow ui as well.

Configuration

  • LUML_MLFLOW_AUTOSYNC=0 turns off the automatic upload.
  • LUML_MLFLOW_UPLOAD_MODE=separate uploads each model and the experiment snapshot as separate artifacts. The default, auto, embeds the snapshot in the model when a run logged exactly one model.

Command line

luml-mlflow uploads runs on demand, for example runs logged with autosync off or runs whose upload failed:

luml-mlflow sync --run <run_id>
luml-mlflow sync --experiment churn_prediction
luml-mlflow sync --all
luml-mlflow status --run <run_id>

Already uploaded runs are skipped unless --force is passed.

Documentation

Logging MLflow runs to LUML

Metadata

Release files for luml-mlflow 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for luml-mlflow 0.1.1
File Interpreter ABI Platform Actions
luml_mlflow-0.1.1-py3-none-any.whl Python 3 none any Details for luml_mlflow-0.1.1-py3-none-any.whl

Release files / luml_mlflow-0.1.1-py3-none-any.whl

Download URL luml_mlflow-0.1.1-py3-none-any.whl
Size 38.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b730ab219683fc27e45c3ff73f0830aaa5c89acdf31b565fa17486469c5122ba
BLAKE2b-256 checksum
How to use checksums
9a2975cc2b8239065462418e46de9a760d84529e769fe6a737ccc4ab4fab3784
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for luml-mlflow 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page