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=0turns off the automatic upload.LUML_MLFLOW_UPLOAD_MODE=separateuploads 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
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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.