Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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.1rc1

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.1rc1
File Interpreter ABI Platform Actions
luml_mlflow-0.1.1rc1-py3-none-any.whl Python 3 none any Details for luml_mlflow-0.1.1rc1-py3-none-any.whl

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

Download URL luml_mlflow-0.1.1rc1-py3-none-any.whl
Size 38.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
797f0682bcc726772e20b253187e20db835d06379fd0d578c181cb16a8da2f54
BLAKE2b-256 checksum
How to use checksums
bb690939bd43a3f4846879684582a943b391636d22b9e13e1cdf202bcf56a83e
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.1rc1

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