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. The modified version can be hosted as a static website.

Motivation: Static hosting of MLFlow

The usual MLFlow front end (for experiment tracking) relies on a backend API for querying results about past experiments.

The modified MLFlow project in this repo is part of the pynb-dag-runner project. This makes it possible to run data/ml pipelines on serverless/ephemeral infrastructure. That is, it makes possible to track and report on experiments without a backend API or SQL database. A typical use case is to run pipelines 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://pynb-dag-runner.github.io/mnist-digits-demo-pipeline/

  • Screenshot:

    Screenshot

  • This demo is a task and experiment tracker for an mnist-digits ML training pipeline 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 pynb-dag-runner only uses a small part of the entire ML Flow project (that is, the experiment tracking UI), the directory structure of 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 pynb-dag-runner-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

pynb_dag_runner_webui-0.0.12-py3-none-any.whl (4.4 MB view details)

Uploaded Python 3

File details

Details for the file pynb_dag_runner_webui-0.0.12-py3-none-any.whl.

File metadata

File hashes

Hashes for pynb_dag_runner_webui-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 944ef5d27020a67cdc010c488c060fb1189a31c0c7207c4b9dd155ca6a2018f1
MD5 3ec8e9ce9348a2ef6c911dad5223dc3d
BLAKE2b-256 4da234c36ea6836131ee65c357cfa57c4bc1430dfbdfa83d3d3d8c0cd2331a37

See more details on using hashes here.

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