Skip to content


Choose a tag to compare
@aarondav aarondav released this 11 Sep 00:54
· 4388 commits to master since this release

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 (, 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 (#352, @aarondav)

Bug fixes and documentation updates: