------------------
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/ <https://github.com/mlflow/mlflow/tree/master/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)
Features:
- 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 <https://github.com/mlflow/mlflow/blob/master/mlflow/java/client/src/main/java/org/mlflow/tracking/samples/QuickStartDriver.java>`_ and `Javadocs <https://mlflow.org/docs/latest/java_api/index.html>`_. The client is published to Maven under ``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:
- [Python] ``mlflow run`` now logs default parameters, in addition to explicitly provided ones (392, mparkhe)
- [Python] ``log_artifact`` in FileStore now requires a relative path as the artifact path (439, mparkhe)
- [Python] Fixed string representation of Python entities, so they now display both their type and serialized fields (371, smurching)
- [UI] Entry point name is now shown in MLflow UI (345, aarondav)
- [Models] Keras model export now includes TensorFlow graph explicitly to ensure the model can always be loaded at deployment time (440, tomasatdatabricks)
- [Python] Fixed issue where FileStore ignored provided Run Name (358, adrian555)
- [Python] Fixed an issue where any ``mlflow run`` failing printed an extraneous exception (365, smurching)
- [Python] uuid dependency removed (351, antonpaquin)
- [Python] Fixed issues with remote execution on Databricks (357, 361, smurching; 383, 387, aarondav)
- [Docs] Added `comprehensive example <https://github.com/mlflow/mlflow/tree/master/examples/multistep_workflow>`_ of doing a multistep workflow, chaining MLflow runs together and reusing results (#338, aarondav)
- [Docs] Added `comprehensive example <https://github.com/mlflow/mlflow/tree/master/examples/hyperparam>`_ of doing hyperparameter tuning (#368, tomasatdatabricks)
- [Docs] Added code examples to ``mlflow.keras`` API (341, dmatrix)
- [Docs] Significant improvements to Python API documentation (454, stbof)
- [Docs] Examples folder refactored to improve readability. The examples now reside in ``examples/`` instead of ``example/``, too (399, mparkhe)
- Small bug fixes and doc updates (328, 363, ToonKBC; 336, 411, aarondav; 284, smurching; 377, mparkhe; 389, gioa; 408, aadamson; 397, vfdev-5; 420, adrian555; 459, 463, stbof)