changelogs/v0.x.md
MLflow 0.9.1 is a patch release on top of 0.9.0 containing mostly bug fixes and internal improvements. We have also included a one breaking API change in preparation for additions in MLflow 1.0 and later. This release also includes significant improvements to the Search API.
Breaking changes:
More features and improvements:
Bug fixes and documentation updates:
Small bug fixes and doc updates (#1024, #1029 @bayethiernodiop; #1075 @avflor; #968, #1010, #1070, #1091, #1092 @smurching; #1004, #1085 @dbczumar; #1033, #1046 @sueann; #1053 @tomasatdatabricks; #987 @hanyucui; #935, #941 @jimthompson5802; #963 @amilbourne; #1016 @andrewmchen; #991 @jaroslawk; #1007 @mparkhe)
Bugfix release (PyPI only) with the following changes:
Rebuilt MLflow JS assets to fix an issue where form input was broken in MLflow 0.9.0 (identified in #1056, #1113 by @shu-yusa, @timothyjlaurent)
0.9.0 (2019-03-13)
Major features:
Support for running MLflow Projects in Docker containers. This allows you to include non-Python dependencies in their project environments and provides stronger isolation when running projects. See the Projects documentation for more information. (#555, @marcusrehm; #819, @mparkhe; #970, @dbczumar)
Database stores for the MLflow Tracking Server. Support for a scalable and performant backend store was one of the top community requests. This feature enables you to connect to local or remote SQLAlchemy-compatible databases (currently supported flavors include MySQL, PostgreSQL, SQLite, and MS SQL) and is compatible with file backed store. See the Tracking Store documentation for more information. (#756, @AndersonReyes; #800, #844, #847, #848, #860, #868, #975, @mparkhe; #980, @dbczumar)
Simplified custom Python model packaging. You can easily include custom preprocessing and postprocessing logic, as well as data dependencies in models with the python_function flavor using updated mlflow.pyfunc Python APIs. For more information, see the Custom Python Models documentation. (#791, #792, #793, #830, #910, @dbczumar)
Plugin systems allowing third party libraries to extend MLflow functionality. The proposal document gives the full detail of the three main changes:
mlflow.tracking_store entrypoint. (#881, @zblz)mlflow.artifact_repository entrypoint. (#882, @mociarain)source_name, source_version) has been refactored into an extendable system of run context providers. Plugins can register additional providers using the mlflow.run_context_provider entrypoint, which add to or overwrite tags set by the base library. (#913, #926, #930, #978, @acroz)Support for HTTP authentication to the Tracking Server in the R client. Now you can connect to secure Tracking Servers using credentials set in environment variables, or provide custom plugins for setting the credentials. As an example, this release contains a Databricks plugin that can detect existing Databricks credentials to allow you to connect to the Databricks Tracking Server. (#938, #959, #992, @tomasatdatabricks)
Breaking changes:
pyfunc scoring server now expects requests with the application/json content type to contain json-serialized pandas dataframes in the split format, rather than the records format. See the documentation on deployment for more detail. (#960, @dbczumar) Also, when reading the pandas dataframes from JSON, the scoring server no longer automatically infers data types as it can result in unintentional conversion of data types (#916, @mparkhe).GetMetric & GetParam from the REST API as they are subsumed by GetRun. (#879, @aarondav)More features and improvements:
list, delete, restore, and describe runs through the CLI (#720, @DorIndivo)run command now can take --experiment-name as an argument, as an alternative to the --experiment-id argument. You can also choose to set the _EXPERIMENT_NAME_ENV_VAR environment variable instead of passing in the value explicitly. (#889, #894, @mparkhe)get_artifact_uri() and _download_artifact_from_uri convenience functions (#779)code_paths parameter to mlflow.pytorch.save_model and mlflow.pytorch.log_model to allow external module dependencies to be specified as paths to python files. (#842, @dbczumar)mlflow.pytorch.save_model to capture class definitions from notebooks and the __main__ scope (#851, #861, @dbczumar)., and - (#788, @mparkhe)SearchRuns API. Corresponding UI improvements are planned for the future (#905, @mparkhe)Bug fixes and documentation updates:
log_artifact and log_artifacts (#895, #818, @smurching)Small bug fixes and doc updates (#822, #899, #787, #785, #780, #942, @hanyucui; #862, #904, #954, #806, #857, #845, @stbof; #907, #872, @smurching; #896, #858, #836, #859, #923, #939, #933, #931, #952, @dbczumar; #880, @zblz; #876, @acroz; #827, #812, #816, #829, @jimthompson5802; #837, #790, #897, #974, #900, @mparkhe; #831, #798, @aarondav; #814, @sueann; #824, #912, @mateiz; #922, #947, @tomasatdatabricks; #795, @KevYuen; #676, @mlaradji; #906, @4n4nd; #777, @tmielika; #804, @alkersan)
MLflow 0.8.2 is a patch release on top of 0.8.1 containing only bug fixes and no breaking changes or features.
Bug fixes:
mlflow.sagemaker.push_image_to_ecr() invocations from succeeding (#784, @jackblandin)Small docs updates (#845, @stbof; #840, @grahamhealy20; #839, @wilderrodrigues)
MLflow 0.8.1 introduces several significant improvements:
Features:
save_model and log_model functions (#748, @dbczumar)save_model and log_model functions will include an environment that specifies all of the versioned dependencies necessary to load and serve the models. Previously, users had to specify these environments manually. (#705, #707, #708, #749, @dbczumar)Bug fixes and documentation updates:
Small bug fixes and doc updates (#768, #715, @smurching; #728, dodysw; #730, mshr-h; #725, @kryptec; #769, #721, @dbczumar; #714, @stbof)
MLflow 0.8.0 introduces several major features:
Dramatically improved UI for comparing experiment run results:
mlflow.start_run or mlflow.run while already within a run.Support for deploying models as Docker containers directly to Azure Machine Learning Service Workspace (as opposed to the previously-recommended solution of Azure ML Workbench).
Breaking changes:
mlflow sklearn serve has been removed in favor of mlflow pyfunc serve, which takes the same arguments but works against any pyfunc model (#690, @dbczumar)Features:
application/json; format=pandas-split), as it will become the default JSON format in MLflow 0.9.0. (#690, @dbczumar)rename_experiment to Tracking API (#570, @aarondav)get_experiment_by_name to RestStore (#592, @dmarkhas)Bug fixes and documentation updates:
Small bug fixes and doc updates (#576, #594, @javierluraschi; #585, @kevinykuo; #593, #601, #611, #650, #669, #671, #679, @dbczumar; #607, @suzil; #583, #615, @andrewmchen; #622, #681, @aarondav; #625, @pogil; #589, @tomasatdatabricks; #529, #635, #684, @stbof; #657, @mvsusp; #682, @mateiz; #678, vfdev-5; #596, @yutannihilation; #663, @smurching)
MLflow 0.7.0 introduces several major features:
The release also includes bugfixes and improvements across the Python and Java clients, tracking UI, and documentation.
Breaking changes:
Features:
Bug fixes:
Small bug fixes and doc updates (#467 @drorata; #470, #497, #508, #518 @dbczumar; #455, #466, #492, #504, #527 @aarondav; #481, #475, #484, #496, #515, #517, #498, #521, #522, #573 @smurching; #477 @parkerzf; #494 @jainr; #501, #531, #532, #552 @mparkhe; #503, #520 @dmatrix; #509, #532 @tomasatdatabricks; #484, #486 @stbof; #533, #534 @javierluraschi; #542 @GCBallesteros; #511 @AdamBarnhard)
MLflow 0.6.0 introduces several major features:
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)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:
mlflow.tracking), allowing users to create and manage experiments, runs, and artifacts. The release includes a usage exampleand Javadocs. The client is published to Maven under mlflow:mlflow (#380, #394, #398, #409, #410, #430, #452, @aarondav)RunData from RunInfo (#342, @aarondav)list_artifacts and download_artifacts to MlflowService to interact with a run's artifactory (#350, @andrewmchen)get_experiment_by_name to Python Tracking API, and equivalent to Java API (#373, @vfdev-5)mlflow.__version__.mlflow artifacts CLI to list, download, and upload to run artifact repositories (#391, @aarondav).log and .tsv files from MLflow artifacts UI (#393, @Shenggan; #433, @whiletruelearn)--host option to mlflow serve to allow listening on non-local addresses (#401, @hamroune)Bug fixes and documentation updates:
mlflow run now logs default parameters, in addition to explicitly provided ones (#392, @mparkhe)log_artifact in FileStore now requires a relative path as the artifact path (#439, @mparkhe)mlflow run failing printed an extraneous exception (#365, @smurching)mlflow.keras API (#341, @dmatrix)examples/ instead of example/, too (#399, @mparkhe)MLflow 0.5.2 is a patch release on top of 0.5.1 containing only bug fixes and no breaking changes or features.
Bug fixes:
mlflow.sagemaker.deploy() to fail when searching for a deployment Docker image (#366, @dbczumar)MLflow 0.5.1 is a patch release on top of 0.5.0 containing only bug fixes and no breaking changes or features.
Bug fixes:
with mlflow.start_run() as run to actually set run to the created Run (previously, it was None) (#322, @tomasatdatabricks)MLflow 0.5.0 offers some major improvements, including Keras and PyTorch first-class support as models, SFTP support as an artifactory, a new scatterplot visualization to compare runs, and a more complete Python SDK for experiment and run management.
Breaking changes:
The Tracking API has been split into two pieces, a "basic logging" API and a "tracking service" API. The "basic logging" API deals with logging metrics, parameters, and artifacts to the currently-active active run, and is accessible in mlflow (e.g., mlflow.log_param). The tracking service API allow managing experiments and runs (especially historical runs) and is available in mlflow.tracking. The tracking service API will look analogous to the upcoming R and Java Tracking Service SDKs. Please be aware of the following breaking changes:
mlflow.tracking no longer exposes the basic logging API, only mlflow. So, code that was written like from mlflow.tracking import log_param will have to be from mlflow import log_param (note that almost all examples were already doing this).
Access to the service API goes through the mlflow.tracking.get_service() function, which relies on the same tracking server set by either the environment variable MLFLOW_TRACKING_URI or by code with mlflow.tracking.set_tracking_uri(). So code that used to look like mlflow.tracking.get_run() will now have to do mlflow.tracking.get_service().get_run(). This does not apply to the basic logging API.
mlflow.ActiveRun has been converted into a lightweight wrapper around mlflow.entities.Run to enable the Python with syntax. This means that there are no longer any special methods on the object returned when calling mlflow.start_run(). These can be converted to the service API.
The Python entities returned by the tracking service API are now accessible in mlflow.entities directly. Where previously you may have used mlflow.entities.experiment.Experiment, you would now just use mlflow.entities.Experiment. The previous version still exists, but is deprecated and may be hidden in a future version.
REST API endpoint /ajax-api/2.0/preview/mlflow/artifacts/get has been moved to $static_prefix/get-artifact. This change is coversioned in the JavaScript, so should not be noticeable unless you were calling the REST API directly (#293, @andremchen)
Features:
load_pyfunc(suppress_warnings=True)) (#230, @dbczumar)--no-conda to mlflow pyfunc serve or mlflow pyfunc predict (#225, @0wu)mlflow.tracking. This includes adding SDK methods for get_run, list_experiments, get_experiment, and set_terminated. (#299, @aarondav)mlflow run can now be run against projects with no conda.yaml specified. By default, an empty conda environment will be created -- previously, it would just fail. You can still pass --no-conda to avoid entering a conda environment altogether (#218, @smurching)Bug fixes:
log_artifacts with binary data (#295, @aarondav)Breaking changes: None
Features:
mlflow experiments create now support providing --artifact-location (#232, @aarondav)Bug fixes:
Breaking changes: None
Features:
$MLFLOW_CONDA_HOME
if specified (e.g. running conda commands by invoking $MLFLOW_CONDA_HOME/bin/conda), defaulting
to running "conda" otherwise. (#231, @smurching)Bug fixes:
Breaking changes:
use_temp_cwd argument to mlflow.projects.run()
(--new-dir flag in the mlflow run CLI). Runs of local projects now use the local project
directory as their working directory. Git projects are still fetched into temporary directories
(#215, @smurching)google-cloud-storage on both the client and tracking server via pip.
(#202, @smurching)Features:
Bug fixes:
Fixed incompatible file structure returned by GCSArtifactRepository (#173, @jakeret)
Fixed metric values going out of order on x axis (#204, @mateiz)
Fixed occasional hanging behavior when using the projects.run API (#193, @smurching)
Miscellaneous bug and documentation fixes from @aarondav, @andrewmchen, @arinto, @jakeret, @mateiz, @smurching, @stbof
Breaking changes:
--artifact-root parameter to --default-artifact-root in mlflow server to better reflect its purpose (#165, @aarondav)Features:
Bug fixes:
This is a patch release fixing some smaller issues after the 0.2.0 release.
Added mlflow server to provide a remote tracking server. This is akin to mlflow ui with new options:
--host to allow binding to any ports (#27, @mdagost)--artifact-root to allow storing artifacts at a remote location, S3 only right now (#78, @mateiz)TensorFlow integration: we now support logging TensorFlow Models directly in the log_model API, model format, and serving APIs (#28, @juntai-zheng)
Added experiments.list_experiments as part of experiments API (#37, @mparkhe)
Improved support for unicode strings (#79, @smurching)
Diabetes progression example dataset and training code (#56, @dennyglee)
Miscellaneous bug and documentation fixes from @Jeffwan, @yupbank, @ndjido, @xueyumusic, @manugarri, @tomasatdatabricks, @stbof, @andyk, @andrewmchen, @jakeret, @0wu, @aarondav