Package: pynb-dag-runner-webui
This repository contains a modified version of ML Flow.The modified version can be hosted as a static website.Motivation: Static hosting of MLFlowThe 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 thepynb-dag-runnerproject.
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 documentationLive demoExample deployment on Github Pages:https://pynb-dag-runner.github.io/mnist-digits-demo-pipeline/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 structureEven ifpynb-dag-runneronly 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 todisabled--{circleci, github-actions}).New Github actions are in the.githubdirectory.Root directory for MLFlow front end codes:mlflow/mlflow/server/js/Main branches in this repomaster: MLFlow original history up to 2/2022 (commit2078937040654cf79d7c4c065f994ba537568561) when the repo was forked.static_mlflow: branch with all modifications.The pull requestPR2show the changes between these branches.Release processTriggered on updates to the filemlflow/mlflow/server/js/webui-py-package/PYTHON_PACKAGE_VERSIONOn release:The React Javascript frontend is compiled and the static assets are published as a Python package (see below).The published commit is tagged withstatic-v<release version>.
The version is taken from first line inPYTHON_PACKAGE_VERSIONfile.Tags of formv1.2.3refer to original MLFlow releases.For details, see the Github actions in this repo.InstallationInstall as Python package hosted onPyPI:pipinstallpynb-dag-runner-webui--target/where/to/installAfter 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 flagHOST_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).LicenseOriginal MLFlow project copyright Databricks 2018 and distributed under the Apache 2 license.
Please seeLICENSE.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.