@aarondav aarondav released this Sep 11, 2018 · 172 commits to master since this release

Assets 2

MLflow 0.6.0 introduces several major features:

  • A Java client API, available on Maven
  • Support for saving and serving SparkML models as MLeap for low-latency serving
  • Support for tagging runs with metadata, during and after the run completion
  • Support for deleting (and restoring deleted) experiments

In addition to these features, there are a host of improvements and bugfixes to the REST API, Python API, tracking UI, and documentation. The examples/ subdirectory has also been revamped to make it easier to jump in, and examples demonstrating multistep workflows and hyperparameter tuning have been added.

Breaking changes:

We fixed a few inconsistencies in the the mlflow.tracking API, as introduced in 0.5.0:

  • MLflowService has been renamed MlflowClient (#461, @mparkhe)
  • You get an MlflowClient by calling mlflow.tracking.MlflowClient() (previously, this was mlflow.tracking.get_service()) (#461, @mparkhe)
  • MlflowService.list_runs was changed to MlflowService.list_run_infos to reflect the information actually returned by the call. It now returns a RunInfo instead of a Run (#334, @aarondav)
  • MlflowService.log_artifact and MlflowService.log_artifacts now take a run_id instead of artifact_uri. This now matches list_artifacts and download_artifacts (#444, @aarondav)


  • Java client API added with support for the MLflow Tracking API (analogous to mlflow.tracking), allowing users to create and manage experiments, runs, and artifacts. The release includes a usage example and Javadocs. The client is published to Maven under org.mlflow:mlflow (#380, #394, #398, #409, #410, #430, #452, @aarondav)
  • SparkML models are now also saved in MLeap format (https://github.com/combust/mleap), when applicable. Model serving platforms can choose to serve using this format instead of the SparkML format to dramatically decrease prediction latency. SageMaker now does this by default (#324, #327, #331, #395, #428, #435, #438, @dbczumar)
  • [API] Experiments can now be deleted and restored via REST API, Python Tracking API, and MLflow CLI (#340, #344, #367, @mparkhe)
  • [API] Tags can now be set via a SetTag API, and they have been moved to RunData from RunInfo (#342, @aarondav)
  • [API] Added list_artifacts and download_artifacts to MlflowService to interact with a run's artifactory (#350, @andrewmchen)
  • [API] Added get_experiment_by_name to Python Tracking API, and equivalent to Java API (#373, @vfdev-5)
  • [API/Python] Version is now exposed via mlflow.__version__.
  • [API/CLI] Added mlflow artifacts CLI to list, download, and upload to run artifact repositories (#391, @aarondav)
  • [UI] Added icons to source names in MLflow Experiments UI (#381, @andrewmchen)
  • [UI] Added support to view .log and .tsv files from MLflow artifacts UI (#393, @Shenggan; #433, @whiletruelearn)
  • [UI] Run names can now be edited from within the MLflow UI (#382, @smurching)
  • [Serving] Added --host option to mlflow serve to allow listening on non-local addressess (#401, @hamroune)
  • [Serving/SageMaker] SageMaker serving takes an AWS region argument (#366, @dbczumar)
  • [Python] Added environment variables to support providing HTTP auth (username, password, token) when talking to a remote MLflow tracking server (#402, @aarondav)
  • [Python] Added support to override S3 endpoint for S3 artifactory (#451, @hamroune)
  • MLflow nightly Python wheel and JAR snapshots are now available and linked from https://github.com/mlflow/mlflow (#352, @aarondav)

Bug fixes and documentation updates: