Skip to main content

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.

Main project documentation

Live demo

  • Example deployment on Github Pages: https://composable-logs.github.io/mnist-digits-demo-pipeline/

  • Screenshot:

    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 (commit 2078937040654cf79d7c4c065f994ba537568561) 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 in PYTHON_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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

composable_logs_webui-0.0.16-py3-none-any.whl (4.4 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page