This Python package contain compiled web assets for a fork of the MLFlow front end.It is modified so that it can be deployed as a static website without a backend.
Project description
This repository contains a modified version of ML Flow suitable for hosting static experiment tracking data
Motivation: Static hosting of MLFlow UI for experiment tracking
The usual MLFlow front end (for experiment tracking) relies on a backend API for querying results about past experiments.
The modified MLFlow version in this repo is part of the Composable Logs
project.
This makes it possible to run data/ml workflows (or pipelines) on serverless/ephemeral infrastructure.
That is, it makes possible to track and report on experiments without a backend API or SQL database.
One use case is to run workflows on CI/CD infrastructure.
The modified version of MLFlow in this repo loads all data from a static JSON file, and static assets (like images) are loaded separately. Thus, deploying the modified MLFlow UI only requires only static web hosting.
Live demo
-
Example deployment on Github Pages: https://composable-logs.github.io/mnist-digits-demo-pipeline/
-
Screenshot:
-
This demo is a task and experiment tracker for an mnist-digits ML training workflow scheduled to run daily. It uses no cloud infrastructure except services on Github (Github actions for compute, Build artifacts for storage, and Github Pages for reporting).
Repo structure
Even if the modications in this fork only modify a small part of the entire ML Flow project (that is, the experiment tracking UI), the directory structure of the mlflow
-repo has been modified as little as possible.
- The original Github and Circleci actions have been disabled in this fork (the relevant directories are renamed to
disabled--{circleci, github-actions}
). - New Github actions are in the
.github
directory.
Root directory for MLFlow front end codes: mlflow/mlflow/server/js/
Main branches in this repo
master
: MLFlow original history up to 2/2022 (commit2078937040654cf79d7c4c065f994ba537568561
) when the repo was forked.static_mlflow
: branch with all modifications.- The pull request PR2 show the changes between these branches.
Release process
- Triggered on updates to the file
mlflow/mlflow/server/js/webui-py-package/PYTHON_PACKAGE_VERSION
- On release:
- The React Javascript frontend is compiled and the static assets are published as a Python package (see below).
- The published commit is tagged with
static-v<release version>
. The version is taken from first line inPYTHON_PACKAGE_VERSION
file.
- Tags of form
v1.2.3
refer to original MLFlow releases.
For details, see the Github actions in this repo.
Installation
Install as Python package hosted on PyPI:
pip install composable-logs-webui --target /where/to/install
After installation the static assets for the modified MLFlow UI are in the directory /where/to/install/assets
.
Could this be merged into ML Flow?
Unlikely without significant refactorings.
- Most modifications (but not all) are behind the feature flag
HOST_STATIC_SITE
. - The unit tests have not been updated.
- Due to large number of changes, merging the current modifications might not make sense. It would complicate the main code base for an edge use case.
- The MLFlow repo contain an open and inactive feature request from "Freeze" experiments in ui to static html site (8/2021).
License
Original MLFlow project copyright Databricks 2018 and distributed under the Apache 2 license. Please see LICENSE.txt.
The contributions in this repo copyright Matias Dahl 2022 are also released under the Apache 2 license.
The intent is that the original MLFlow codebase and modifications can be combined and released and distributed under the terms of the Apache 2 license.
Please note that the Python package linked above contains compiled assets covered by various licenses.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file composable_logs_webui-0.0.16-py3-none-any.whl
.
File metadata
- Download URL: composable_logs_webui-0.0.16-py3-none-any.whl
- Upload date:
- Size: 4.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1da74e82893ab95580b410493583898b3da4f74a5d1398fd086db4cfaae35b7b |
|
MD5 | 79da5a22a4bc732c34df6d18e018b709 |
|
BLAKE2b-256 | 5428a6c3b7228404853b80f6be02c123aeb24909392c73f1560b05a562e07178 |