We are happy to announce the availability of MLflow 1.14.0!
In addition to bug and documentation fixes, MLflow 1.14.0 includes the following features and improvements:
Python 3.5 has been deprecated
MLflow support for Python 3.5 is deprecated and will be dropped in an upcoming release. At that point, existing Python 3.5 workflows that use MLflow will continue to work without modification, but Python 3.5 users will no longer get access to the latest MLflow features and bugfixes. We recommend that you upgrade to Python 3.6 or newer.
Features and improvements
- MLflow's model inference APIs (
mlflow.pyfunc.predict), built-in model serving tools (mlflow models serve), and model signatures now support tensor inputs. In particular, MLflow now provides built-in support for scoring PyTorch, TensorFlow, Keras, ONNX, and Gluon models with tensor inputs. For more information, see https://mlflow.org/docs/latest/models.html#deploy-mlflow-models (#3808, #3894, #4084, #4068 @wentinghu; #4041 @tomasatdatabricks, #4099, @arjundc-db) - Add new
mlflow.shap.log_explainer,mlflow.shap.load_explainerAPIs for logging and loadingshap.Explainerinstances (#3989, @vivekchettiar) - The MLflow Python client is now available with a reduced dependency set via the
mlflow-skinnyPyPI package (#4049, @eedeleon) - Add new
RequestHeaderProviderplugin interface for passing custom request headers with REST API requests made by the MLflow Python client (#4042, @jimmyxu-db) mlflow.keras.log_modelnow saves models in the TensorFlow SavedModel format by default instead of the older Keras H5 format (#4043, @harupy)mlflow_log_modelnow supports logging MLeap models in R (#3819, @yitao-li)- Add
mlflow.pytorch.log_state_dict,mlflow.pytorch.load_state_dictfor logging and loading PyTorch state dicts (#3705, @shrinath-suresh) mlflow gccan now garbage-collect artifacts stored in S3 (#3958, @sklingel)
Bug fixes and documentation updates:
- Enable autologging for TensorFlow estimators that extend
tensorflow.compat.v1.estimator.Estimator(#4097, @mohamad-arabi) - Fix for universal autolog configs overriding integration-specific configs (#4093, @dbczumar)
- Allow
mlflow.models.infer_signatureto handle dataframes containingpandas.api.extensions.ExtensionDtype(#4069, @caleboverman) - Fix bug where
mlflow_restore_rundoesn't propagate theclientparameter tomlflow_get_run(#4003, @yitao-li) - Fix bug where scoring on served model fails when request data contains a string that looks like URL and pandas version is later than 1.1.0 (#3921, @Secbone)
- Fix bug causing
mlflow_list_experimentsto fail listing experiments with tags (#3942, @lorenzwalthert) - Fix bug where metrics plots are computed from incorrect target values in scikit-learn autologging (#3993, @mtrencseni)
- Remove redundant / verbose Python event logging message in autologging (#3978, @dbczumar)
- Fix bug where
mlflow_load_modeldoesn't load metadata associated to MLflow model flavor in R (#3872, @yitao-li) - Fix
mlflow.spark.log_model,mlflow.spark.load_modelAPIs on passthrough-enabled environments against ACL'd artifact locations (#3443, @smurching)
Small bug fixes and doc updates:
(#4102, #4101, #4096, #4091, #4067, #4059, #4016, #4054, #4052, #4051, #4038, #3992, #3990, #3981, #3949, #3948, #3937, #3834, #3906, #3774, #3916, #3907, #3938, #3929, #3900, #3902, #3899, #3901, #3891, #3889, @harupy; #4014, #4001, @dmatrix; #4028, #3957, @dbczumar; #3816, @lorenzwalthert; #3939, @pauldj54; #3740, @jkthompson; #4070, #3946, @jimmyxu-db; #3836, @t-henri; #3982, @neo-anderson; #3972, #3687, #3922, @eedeleon; #4044, @WeichenXu123; #4063, @yitao-li; #3976, @whiteh; #4110, @tomasatdatabricks; #4050, @apurva-koti; #4100, #4084, @wentinghu; #3947, @vperiyasamy; #4021, @trangevi; #3773, @ankan94; #4090, @jinzhang21; #3918, @danielfrg)