Changelog History
Page 1
-
v2.0.1 Changes
November 14, 2022๐ The 2.0.1 version of MLflow is a major milestone release that focuses on simplifying the management of end-to-end MLOps workflows, providing new feature-rich functionality, and expanding upon the production-ready MLOps capabilities offered by MLflow. ๐ This release contains several important breaking changes from the 1.x API, additional major features and improvements.
๐ Features:
- ๐ [Recipes] MLflow Pipelines is now MLflow Recipes - a framework that enables data scientists to quickly develop high-quality models and deploy them to production
- ๐ [Recipes] Add support for classification models to MLflow Recipes (#7082, @bbarnes52)
- ๐ [UI] Introduce support for pinning runs within the experiments UI (#7177, @harupy)
- ๐ป [UI] Simplify the layout and provide customized displays of metrics, parameters, and tags within the experiments UI (#7177, @harupy)
- ๐ป [UI] Simplify run filtering and ordering of runs within the experiments UI (#7177, @harupy)
- [Tracking] Update
mlflow.pyfunc.get_model_dependencies()
to download all referenced requirements files for specified models (#6733, @harupy) - ๐ [Tracking] Add support for selecting the Keras model
save_format
used bymlflow.tensorflow.autolog()
(#7123, @balvisio) - [Models] Set
mlflow.evaluate()
status to stable as it is now a production-ready API - [Models] Simplify APIs for specifying custom metrics and custom artifacts during model evaluation with
mlflow.evaluate()
(#7142, @harupy) - [Models] Correctly infer the positive label for binary classification within
mlflow.evaluate()
(#7149, @dbczumar) - ๐ฒ [Models] Enable automated signature logging for
tensorflow
andkeras
models whenmlflow.tensorflow.autolog()
is enabled (#6678, @BenWilson2) - ๐ [Models] Add support for native Keras and Tensorflow Core models within
mlflow.tensorflow
(#6530, @WeichenXu123) - ๐ฒ [Models] Add support for defining the
model_format
used bymlflow.xgboost.save/log_model()
(#7068, @AvikantSrivastava) - ๐ [Scoring] Overhaul the model scoring REST API to introduce format indicators for inputs and support multiple output fields (#6575, @tomasatdatabricks; #7254, @adriangonz)
- ๐ [Scoring] Add support for ragged arrays in model signatures (#7135, @trangevi)
- [Java] Add
getModelVersion
API to the java client (#6955, @wgottschalk)
๐ฅ Breaking Changes:
The following list of breaking changes are arranged by their order of significance within each category.
- ๐ [Core] Support for Python 3.7 has been dropped. MLflow now requires Python >=3.8
- [Recipes]
mlflow.pipelines
APIs have been replaced withmlflow.recipes
- ๐ [Tracking / Registry] Remove
/preview
routes for Tracking and Model Registry REST APIs (#6667, @harupy) - ๐ [Tracking] Remove deprecated
list
APIs for experiments, models, and runs from Python, Java, R, and REST APIs (#6785, #6786, #6787, #6788, #6800, #6868, @dbczumar) - ๐ [Tracking] Remove deprecated
runs
response field fromGet Experiment
REST API response (#6541, #6524 @dbczumar) - ๐ [Tracking] Remove deprecated
MlflowClient.download_artifacts
API (#6537, @WeichenXu123) - [Tracking] Change the behavior of environment variable handling for
MLFLOW_EXPERIMENT_NAME
such that the value is always used when creating an experiment (#6674, @BenWilson2) - โก๏ธ [Tracking] Update
mlflow server
to run in--serve-artifacts
mode by default (#6502, @harupy) - โก๏ธ [Tracking] Update Experiment ID generation for the Filestore backend to enable threadsafe concurrency (#7070, @BenWilson2)
- [Tracking] Remove
dataset_name
andon_data_{name | hash}
suffixes frommlflow.evaluate()
metric keys (#7042, @harupy) - 0๏ธโฃ [Models / Scoring / Projects] Change default environment manager to
virtualenv
instead ofconda
for model inference and project execution (#6459, #6489 @harupy) - ๐ [Models] Move Keras model logging APIs to the
mlflow.tensorflow
flavor and drop support for TensorFlow Estimators (#6530, @WeichenXu123) - [Models] Remove deprecated
mlflow.sklearn.eval_and_log_metrics()
API in favor ofmlflow.evaluate()
API (#6520, @dbczumar) - [Models] Require
mlflow.evaluate()
model inputs to be specified as URIs (#6670, @harupy) - ๐ [Models] Drop support for returning custom metrics and artifacts from the same function when using
mlflow.evaluate()
, in favor ofcustom_artifacts
(#7142, @harupy) - ๐ [Models] Extend
PyFuncModel
spec to supportconda
andvirtualenv
subfields (#6684, @harupy) - ๐ [Scoring] Remove support for defining input formats using the
Content-Type
header (#6575, @tomasatdatabricks; #7254, @adriangonz) - [Scoring] Replace the
--no-conda
CLI option argument for native serving with--env-manager='local'
(#6501, @harupy) - ๐ [Scoring] Remove public APIs for
mlflow.sagemaker.deploy()
andmlflow.sagemaker.delete()
in favor of MLflow deployments APIs, such asmlflow deployments -t sagemaker
(#6650, @dbczumar) - ๐ [Scoring] Rename input argument
df
toinputs
inmlflow.deployments.predict()
method (#6681, @BenWilson2) - [Projects] Replace the
use_conda
argument with theenv_manager
argument within therun
CLI command for MLflow Projects (#6654, @harupy) - ๐ [Projects] Modify the MLflow Projects docker image build options by renaming
--skip-image-build
to--build-image
with a default ofFalse
(#7011, @harupy) - ๐ [Integrations/Azure] Remove deprecated
mlflow.azureml
modules from MLflow in favor of theazure-mlflow
deployment plugin (#6691, @BenWilson2) - ๐ [R] Remove conda integration with the R client (#6638, @harupy)
๐ Bug fixes:
- [Recipes] Fix rendering issue with profile cards polyfill (#7154, @hubertzub-db)
- [Tracking] Set the MLflow Run name correctly when specified as part of the
tags
argument tomlflow.start_run()
(#7228, @Cokral) - [Tracking] Fix an issue with conflicting MLflow Run name assignment if the
mlflow.runName
tag is set (#7138, @harupy) - ๐ [Scoring] Fix incorrect payload constructor error in SageMaker deployment client
predict()
API (#7193, @dbczumar) - ๐ [Scoring] Fix an issue where
DataCaptureConfig
information was not preserved when updating a Sagemaker deployment (#7281, @harupy)
๐ Small bug fixes and documentation updates:
7309, #7314, #7288, #7276, #7244, #7207, #7175, #7107, @sunishsheth2009; #7261, #7313, #7311, #7249, #7278, #7260, #7284, #7283, #7263, #7266, #7264, #7267, #7265, #7250, #7259, #7247, #7242, #7143, #7214, #7226, #7230, #7227, #7229, #7225, #7224, #7223, #7210, #7192, #7197, #7196, #7204, #7198, #7191, #7189, #7184, #7182, #7170, #7183, #7131, #7165, #7151, #7164, #7168, #7150, #7128, #7028, #7118, #7117, #7102, #7072, #7103, #7101, #7100, #7099, #7098, #7041, #7040, #6978, #6768, #6719, #6669, #6658, #6656, #6655, #6538, #6507, #6504 @harupy; #7310, #7308, #7300, #7290, #7239, #7220, #7127, #7091, #6713 @BenWilson2; #7332, #7299, #7271, #7209, #7180, #7179, #7158, #7147, #7114, @prithvikannan; #7275, #7245, #7134, #7059, @jinzhang21; #7306, #7298, #7287, #7272, #7258, #7236, @ayushthe1; #7279, @tk1012; #7219, @rddefauw; #7333, #7218, #7208, #7188, #7190, #7176, #7137, #7136, #7130, #7124, #7079, #7052, #6541 @dbczumar; #6640, @WeichenXu123; #7200, @hubertzub-db; #7121, @Gonmeso; #6988, @alonisser; #7141, @pdifranc; #7086, @jerrylian-db; #7286, @shogohida
-
v1.30.0 Changes
October 19, 2022MLflow 1.30.0 includes several major features and improvements
๐ Features:
- ๐ [Pipelines] Introduce hyperparameter tuning support to MLflow Pipelines (#6859, @prithvikannan)
- ๐ [Pipelines] Introduce support for prediction outlier comparison to training data set (#6991, @jinzhang21)
- ๐ [Pipelines] Introduce support for recording all training parameters for reproducibility (#7026, #7094, @prithvikannan)
- ๐ [Pipelines] Add support for
Delta
tables as a datasource in the ingest step (#7010, @sunishsheth2009) - ๐ [Pipelines] Add expanded support for data profiling up to 10,000 columns (#7035, @prithvikanna)
- ๐ [Pipelines] Add support for AutoML in MLflow Pipelines using FLAML (#6959, @mshtelma)
- ๐ง [Pipelines] Add support for simplified transform step execution by allowing for unspecified configuration (#6909, @apurva-koti)
- [Pipelines] Introduce a data preview tab to the transform step card (#7033, @prithvikannan)
- [Tracking] Introduce
run_name
attribute forcreate_run
,get_run
andupdate_run
APIs (#6782, #6798 @apurva-koti) - [Tracking] Add support for searching by
creation_time
andlast_update_time
for thesearch_experiments
API (#6979, @harupy) - [Tracking] Add support for search terms
run_id IN
andrun ID NOT IN
for thesearch_runs
API (#6945, @harupy) - [Tracking] Add support for searching by
user_id
andend_time
for thesearch_runs
API (#6881, #6880 @subramaniam02) - [Tracking] Add support for searching by
run_name
andrun_id
for thesearch_runs
API (#6899, @harupy; #6952, @alexacole) - ๐ [Tracking] Add support for synchronizing run
name
attribute andmlflow.runName
tag (#6971, @BenWilson2) - ๐ [Tracking] Add support for signed tracking server requests using AWSSigv4 and AWS IAM (#7044, @pdifranc)
- โก๏ธ [Tracking] Introduce the
update_run()
API for modifying thestatus
andname
attributes of existing runs (#7013, @gabrielfu) - ๐ [Tracking] Add support for experiment deletion in the
mlflow gc
cli API (#6977, @shaikmoeed) - ๐ [Models] Add support for environment restoration in the
evaluate()
API (#6728, @jerrylian-db) - ๐ [Models] Remove restrictions on binary classification labels in the
evaluate()
API (#7077, @dbczumar) - ๐ [Scoring] Add support for
BooleanType
tomlflow.pyfunc.spark_udf()
(#6913, @BenWilson2) - ๐ง [SQLAlchemy] Add support for configurable
Pool
class options forSqlAlchemyStore
(#6883, @mingyu89)
๐ Bug fixes:
- [Pipelines] Enable Pipeline subprocess commands to create a new
SparkSession
if one does not exist (#6846, @prithvikannan) - [Pipelines] Fix a rendering issue with
bool
column types in Step Card data profiles (#6907, @sunishsheth2009) - ๐ป [Pipelines] Add validation and an exception if required step files are missing (#7067, @mingyu89)
- ๐ง [Pipelines] Change step configuration validation to only be performed during runtime execution of a step (#6967, @prithvikannan)
- [Tracking] Fix infinite recursion bug when inferring the model schema in
mlflow.pyspark.ml.autolog()
(#6831, @harupy) - ๐ [UI] Remove the browser error notification when failing to fetch artifacts (#7001, @kevingreer)
- ๐ฆ [Models] Allow
mlflow-skinny
package to serve as base requirement inMLmodel
requirements (#6974, @BenWilson2) - [Models] Fix an issue with code path resolution for loading SparkML models (#6968, @dbczumar)
- ๐ฒ [Models] Fix an issue with dependency inference in logging SparkML models (#6912, @BenWilson2)
- [Models] Fix an issue involving potential duplicate downloads for SparkML models (#6903, @serena-ruan)
- [Models] Add missing
pos_label
tosklearn.metrics.precision_recall_curve
inmlflow.evaluate()
(#6854, @dbczumar) - โก๏ธ [SQLAlchemy] Fix a bug in
SqlAlchemyStore
whereset_tag()
updates the incorrect tags (#7027, @gabrielfu)
๐ Documentation updates:
- โก๏ธ [Models] Update details regarding the default
Keras
serialization format (#7022, @balvisio)
๐ Small bug fixes and documentation updates:
7093, #7095, #7092, #7064, #7049, #6921, #6920, #6940, #6926, #6923, #6862, @jerrylian-db; #6946, #6954, #6938, @mingyu89; #7047, #7087, #7056, #6936, #6925, #6892, #6860, #6828, @sunishsheth2009; #7061, #7058, #7098, #7071, #7073, #7057, #7038, #7029, #6918, #6993, #6944, #6976, #6960, #6933, #6943, #6941, #6900, #6901, #6898, #6890, #6888, #6886, #6887, #6885, #6884, #6849, #6835, #6834, @harupy; #7094, #7065, #7053, #7026, #7034, #7021, #7020, #6999, #6998, #6996, #6990, #6989, #6934, #6924, #6896, #6895, #6876, #6875, #6861, @prithvikannan; #7081, #7030, #7031, #6965, #6750, @bbarnes52; #7080, #7069, #7051, #7039, #7012, #7004, @dbczumar; #7054, @jinzhang21; #7055, #7037, #7036, #6949, #6951, @apurva-koti; #6815, @michaguenther; #6897, @chaturvedakash; #7025, #6981, #6950, #6948, #6937, #6829, #6830, @BenWilson2; #6982, @vadim; #6985, #6927, @kriscon-db; #6917, #6919, #6872, #6855, @WeichenXu123; #6980, @utkarsh867; #6973, #6935, @wentinghu; #6930, @mingyangge-db; #6956, @RohanBha1; #6916, @av-maslov; #6824, @shrinath-suresh; #6732, @oojo12; #6807, @ikrizanic; #7066, @subramaniam20jan; #7043, @AvikantSrivastava; #6879, @jspablo
-
v1.29.0 Changes
September 16, 2022MLflow 1.29.0 includes several major features and improvements
๐ Features:
- ๐ [Pipelines] Improve performance and fidelity of dataset profiling in the scikit-learn regression Pipeline (#6792, @sunishsheth2009)
- [Pipelines] Add an
mlflow pipelines get-artifact
CLI for retrieving Pipeline artifacts (#6517, @prithvikannan) - [Pipelines] Introduce an option for skipping dataset profiling to the scikit-learn regression Pipeline (#6456, @apurva-koti)
- ๐ป [Pipelines / UI] Display an
mlflow pipelines
CLI command for reproducing a Pipeline run in the MLflow UI (#6376, @hubertzub-db) - [Tracking] Automatically generate friendly names for Runs if not supplied by the user (#6736, @BenWilson2)
- [Tracking] Add
load_text()
,load_image()
andload_dict()
fluent APIs for convenient artifact loading (#6475, @subramaniam02) - [Tracking] Add
creation_time
andlast_update_time
attributes to the Experiment class (#6756, @subramaniam02) - ๐ณ [Tracking] Add official MLflow Tracking Server Dockerfiles to the MLflow repository (#6731, @oojo12)
- ๐ [Tracking] Add
searchExperiments
API to Java client and deprecatelistExperiments
(#6561, @dbczumar) - [Tracking] Add
mlflow_search_experiments
API to R client and deprecatemlflow_list_experiments
(#6576, @dbczumar) - ๐ป [UI] Make URLs clickable in the MLflow Tracking UI (#6526, @marijncv)
- ๐ป [UI] Introduce support for csv data preview within the artifact viewer pane (#6567, @nnethery)
- [Model Registry / Models] Introduce
mlflow.models.add_libraries_to_model()
API for adding libraries to an MLflow Model (#6586, @arjundc-db) - ๐ [Models] Add model validation support to
mlflow.evaluate()
(#6582, @jerrylian-db) - ๐ [Models] Introduce
sample_weights
support tomlflow.evaluate()
(#6806, @dbczumar) - ๐ [Models] Add
pos_label
support tomlflow.evaluate()
for identifying the positive class (#6696, @harupy) - ๐ง [Models] Make the metric name prefix and dataset info configurable in
mlflow.evaluate()
(#6593, @dbczumar) - [Models] Add utility for validating the compatibility of a dataset with a model signature (#6494, @serena-ruan)
- ๐ [Models] Add
predict_proba()
support to the pyfunc representation of scikit-learn models (#6631, @skylarbpayne) - ๐ [Models] Add support for Decimal type inference to MLflow Model schemas (#6600, @shitaoli-db)
- ๐ณ [Models] Add new CLI command for generating Dockerfiles for model serving (#6591, @anuarkaliyev23)
- [Scoring] Add
/health
endpoint to scoring server (#6574, @gabriel-milan) - ๐ [Scoring] Support specifying a
variant_name
during Sagemaker deployment (#6486, @nfarley-soaren) - [Scoring] Support specifying a
data_capture_config
during SageMaker deployment (#6423, @jonwiggins)
๐ Bug fixes:
- [Tracking] Make Run and Experiment deletion and restoration idempotent (#6641, @dbczumar)
- ๐ป [UI] Fix an alignment bug affecting the Experiments list in the MLflow UI (#6569, @sunishsheth2009)
- [Models] Fix a regression in the directory path structure of logged Spark Models that occurred in MLflow 1.28.0 (#6683, @gwy1995)
- [Models] No longer reload the
__main__
module when loading model code (#6647, @Jooakim) - [Artifacts] Fix an
mlflow server
compatibility issue with HDFS when running in--serve-artifacts
mode (#6482, @shidianshifen) - [Scoring] Fix an inference failure with 1-dimensional tensor inputs in TensorFlow and Keras (#6796, @LiamConnell)
๐ Documentation updates:
- [Tracking] Mark the SearchExperiments API as stable (#6551, @dbczumar)
- โ [Tracking / Model Registry] Deprecate the ListExperiments, ListRegisteredModels, and
list_run_infos()
APIs (#6550, @dbczumar) - ๐ [Scoring] Deprecate
mlflow.sagemaker.deploy()
in favor ofSageMakerDeploymentClient.create()
(#6651, @dbczumar)
๐ Small bug fixes and documentation updates:
6803, #6804, #6801, #6791, #6772, #6745, #6762, #6760, #6761, #6741, #6725, #6720, #6666, #6708, #6717, #6704, #6711, #6710, #6706, #6699, #6700, #6702, #6701, #6685, #6664, #6644, #6653, #6629, #6639, #6624, #6565, #6558, #6557, #6552, #6549, #6534, #6533, #6516, #6514, #6506, #6509, #6505, #6492, #6490, #6478, #6481, #6464, #6463, #6460, #6461, @harupy; #6810, #6809, #6727, #6648, @BenWilson2; #6808, #6766, #6729, @jerrylian-db; #6781, #6694, @marijncv; #6580, #6661, @bbarnes52; #6778, #6687, #6623, @shraddhafalane; #6662, #6737, #6612, #6595, @sunishsheth2009; #6777, @aviralsharma07; #6665, #6743, #6573, @liangz1; #6784, @apurva-koti; #6753, #6751, @mingyu89; #6690, #6455, #6484, @kriscon-db; #6465, #6689, @hubertzub-db; #6721, @WeichenXu123; #6722, #6718, #6668, #6663, #6621, #6547, #6508, #6474, #6452, @dbczumar; #6555, #6584, #6543, #6542, #6521, @dsgibbons; #6634, #6596, #6563, #6495, @prithvikannan; #6571, @smurching; #6630, #6483, @serena-ruan; #6642, @thinkall; #6614, #6597, @jinzhang21; #6457, @cnphil; #6570, #6559, @kumaryogesh17; #6560, #6540, @iamthen0ise; #6544, @Monkero; #6438, @ahlag; #3292, @dolfinus; #6637, @ninabacc-db; #6632, @arpitjasa-db
-
v1.28.0 Changes
August 09, 2022MLflow 1.28.0 includes several major features and improvements:
๐ Features:
- ๐ง [Pipelines] Log the full Pipeline runtime configuration to MLflow Tracking during Pipeline execution (#6359, @jinzhang21)
- ๐ง [Pipelines] Add
pipeline.yaml
configurations to specify the Model Registry backend used for model registration (#6284, @sunishsheth2009) - ๐ [Pipelines] Support optionally skipping the
transform
step of the scikit-learn regression pipeline (#6362, @sunishsheth2009) - ๐ป [Pipelines] Add UI links to Runs and Models in Pipeline Step Cards on Databricks (#6294, @dbczumar)
- [Tracking] Introduce
mlflow.search_experiments()
API for searching experiments by name and by tags (#6333, @WeichenXu123; #6227, #6172, #6154, @harupy) - ๐ [Tracking] Increase the maximum parameter value length supported by File and SQL backends to 500 characters (#6358, @johnyNJ)
- [Tracking] Introduce an
--older-than
flag tomlflow gc
for removing runs based on deletion time (#6354, @Jason-CKY) - [Tracking] Add
MLFLOW_SQLALCHEMYSTORE_POOL_RECYCLE
environment variable for recycling SQLAlchemy connections (#6344, @postrational) - ๐ป [UI] Display deeply nested runs in the Runs Table on the Experiment Page (#6065, @tospe)
- ๐ป [UI] Add box plot visualization for metrics to the Compare Runs page (#6308, @ahlag)
- ๐ป [UI] Display tags on the Compare Runs page (#6164, @CaioCavalcanti)
- ๐ป [UI] Use scientific notation for axes when viewing metric plots in log scale (#6176, @RajezMariner)
- ๐ป [UI] Add button to Metrics page for downloading metrics as CSV (#6048, @rafaelvp-db)
- ๐ป [UI] Include NaN and +/- infinity values in plots on the Metrics page (#6422, @hubertzub-db)
- [Tracking / Model Registry] Introduce environment variables to control retry behavior and timeouts for REST API requests (#5745, @peterdhansen)
- [Tracking / Model Registry] Make
MlflowClient
importable asmlflow.MlflowClient
(#6085, @subramaniam02) - ๐ [Model Registry] Add support for searching registered models and model versions by tags (#6413, #6411, #6320, @WeichenXu123)
- [Model Registry] Add
stage
parameter toset_model_version_tag()
(#6185, @subramaniam02) - [Model Registry] Add
--registry-store-uri
flag tomlflow server
for specifying the Model Registry backend URI (#6142, @Secbone) - ๐ [Models] Improve performance of Spark Model logging on Databricks (#6282, @bbarnes52)
- [Models] Include Pandas Series names in inferred model schemas (#6361, @RynoXLI)
- ๐ [Scoring] Make
model_uri
optional inmlflow models build-docker
to support building generic model serving images (#6302, @harupy) - ๐ฒ [R] Support logging of NA and NaN parameter values (#6263, @nathaneastwood)
๐ Bug fixes and documentation updates:
- ๐ค [Pipelines] Improve scikit-learn regression pipeline latency by limiting dataset profiling to the first 100 columns (#6297, @sunishsheth2009)
- ๐ง [Pipelines] Use
xdg-open
instead ofopen
for viewing Pipeline results on Linux systems (#6326, @strangiato) - [Pipelines] Fix a bug that skipped Step Card rendering in Jupyter Notebooks (#6378, @apurva-koti)
- [Tracking] Use the 401 HTTP response code in authorization failure REST API responses, instead of 500 (#6106, @balvisio)
- [Tracking] Correctly classify artifacts as files and directories when using Azure Blob Storage (#6237, @nerdinand)
- ๐ [Tracking] Fix a bug in the File backend that caused run metadata to be lost in the event of a failed write (#6388, @dbczumar)
- ๐ฒ [Tracking] Adjust
mlflow.pyspark.ml.autolog()
to only log model signatures for supported input / output data types (#6365, @harupy) - ๐ฒ [Tracking] Adjust
mlflow.tensorflow.autolog()
to log TensorFlow early stopping callback info whenlog_models=False
is specified (#6170, @WeichenXu123) - ๐ฒ [Tracking] Fix signature and input example logging errors in
mlflow.sklearn.autolog()
for models containing transformers (#6230, @dbczumar) - [Tracking] Fix a failure in
mlflow gc
that occurred when removing a run whose artifacts had been previously deleted (#6165, @dbczumar) - ๐ [Tracking] Add missing
sqlparse
library to MLflow Skinny client, which is required for search support (#6174, @dbczumar) - [Tracking / Model Registry] Fix an
mlflow server
bug that rejected parameters and tags with empty string values (#6179, @dbczumar) - [Model Registry] Fix a failure preventing model version schemas from being downloaded with
--serve-arifacts
enabled (#6355, @abbas123456) - ๐ [Scoring] Patch the Java Model Server to support MLflow Models logged on recent versions of the Databricks Runtime (#6337, @dbczumar)
- ๐ [Scoring] Verify that either the deployment name or endpoint is specified when invoking the
mlflow deployments predict
CLI (#6323, @dbczumar) - [Scoring] Properly encode datetime columns when performing batch inference with
mlflow.pyfunc.spark_udf()
(#6244, @harupy) - [Projects] Fix an issue where local directory paths were misclassified as Git URIs when running Projects (#6218, @ElefHead)
- ๐ฒ [R] Fix metric logging behavior for +/- infinity values (#6271, @nathaneastwood)
- ๐ [Docs] Move Python API docs for
MlflowClient
frommlflow.tracking
tomlflow.client
(#6405, @dbczumar) - ๐ [Docs] Document that MLflow Pipelines requires Make (#6216, @dbczumar)
- ๐ [Docs] Improve documentation for developing and testing MLflow JS changes in
CONTRIBUTING.rst
(#6330, @ahlag)
โก๏ธ Small bug fixes and doc updates (#6322, #6321, #6213, @KarthikKothareddy; #6409, #6408, #6396, #6402, #6399, #6398, #6397, #6390, #6381, #6386, #6385, #6373, #6375, #6380, #6374, #6372, #6363, #6353, #6352, #6350, #6351, #6349, #6347, #6287, #6341, #6342, #6340, #6338, #6319, #6314, #6316, #6317, #6318, #6315, #6313, #6311, #6300, #6292, #6291, #6289, #6290, #6278, #6279, #6276, #6272, #6252, #6243, #6250, #6242, #6241, #6240, #6224, #6220, #6208, #6219, #6207, #6171, #6206, #6199, #6196, #6191, #6190, #6175, #6167, #6161, #6160, #6153, @harupy; #6193, @jwgwalton; #6304, #6239, #6234, #6229, @sunishsheth2009; #6258, @xanderwebs; #6106, @balvisio; #6303, @bbarnes52; #6117, @wenfeiy-db; #6389, #6214, @apurva-koti; #6412, #6420, #6277, #6266, #6260, #6148, @WeichenXu123; #6120, @ameya-parab; #6281, @nathaneastwood; #6426, #6415, #6417, #6418, #6257, #6182, #6157, @dbczumar; #6189, @shrinath-suresh; #6309, @SamirPS; #5897, @temporaer; #6251, @herrmann; #6198, @sniafas; #6368, #6158, @jinzhang21; #6236, @subramaniam02; #6036, @serena-ruan; #6430, @ninabacc-db)
-
v1.27.0 Changes
June 27, 2022MLflow 1.27.0 includes several major features and improvements:
[Pipelines] With MLflow 1.27.0, we are excited to announce the release of MLflow Pipelines, an opinionated framework for structuring MLOps workflows that simplifies and standardizes machine learning application development and productionization. MLflow Pipelines makes it easy for data scientists to follow best practices for creating production-ready ML deliverables, allowing them to focus on developing excellent models. ๐ MLflow Pipelines also enables ML engineers and DevOps teams to seamlessly deploy models to production ๐ and incorporate them into applications. To get started with MLflow Pipelines, check out the docs at โ https://mlflow.org/docs/latest/pipelines.html. (#6115)
๐ป [UI] Introduce UI support for searching and comparing runs across multiple Experiments (#5971, @r3stl355)
More features:
- ๐ฒ [Tracking] When using batch logging APIs, automatically split large sets of metrics, tags, and params into multiple requests (#6052, @nzw0301)
- ๐ [Tracking] When an Experiment is deleted, SQL-based backends also move the associate Runs to the "deleted" lifecycle stage (#6064, @AdityaIyengar27)
- ๐ฒ [Tracking] Add support for logging single-element
ndarray
and tensor instances as metrics via themlflow.log_metric()
API (#5756, @ntakouris) - ๐ [Models] Add support for
CatBoostRanker
models to themlflow.catboost
flavor (#6032, @danielgafni) - [Models] Integrate SHAP's
KernelExplainer
withmlflow.evaluate()
, enabling model explanations on categorical data (#6044, #5920, @WeichenXu123) - ๐ฒ [Models] Extend
mlflow.evaluate()
to automatically log thescore()
outputs of scikit-learn models as metrics (#5935, #5903, @WeichenXu123)
๐ Bug fixes and documentation updates:
- ๐ป [UI] Fix broken model links in the Runs table on the MLflow Experiment Page (#6014, @hctpbl)
- [Tracking/Installation] Require
sqlalchemy>=1.4.0
upon MLflow installation, which is necessary for usage of SQL-based MLflow Tracking backends (#6024, @sniafas) - [Tracking] Fix a regression that caused
mlflow server
to rejectLogParam
API requests containing empty string values (#6031, @harupy) - [Tracking] Fix a failure in scikit-learn autologging that occurred when
matplotlib
was not installed on the host system (#5995, @fa9r) - [Tracking] Fix a failure in TensorFlow autologging that occurred when training models on
tf.data.Dataset
inputs (#6061, @dbczumar) - [Artifacts] Address artifact download failures from SFTP locations that occurred due to mismanaged concurrency (#5840, @rsundqvist)
- โช [Models] Fix a bug where MLflow Models did not restore bundled code properly if multiple models use the same code module name (#5926, @BFAnas)
- โช [Models] Address an issue where
mlflow.sklearn.model()
did not properly restore bundled model code (#6037, @WeichenXu123) - [Models] Fix a bug in
mlflow.evaluate()
that caused input data objects to be mutated when evaluating certain scikit-learn models (#6141, @dbczumar) - [Models] Fix a failure in
mlflow.pyfunc.spark_udf
that occurred when the UDF was invoked on an empty RDD partition (#6063, @WeichenXu123) - ๐ [Models] Fix a failure in
mlflow models build-docker
that occurred whenenv-manager=local
was specified (#6046, @bneijt) - [Projects] Improve robustness of the git repository check that occurs prior to MLflow Project execution (#6000, @dkapur17)
- [Projects] Address a failure that arose when running a Project that does not have a
master
branch (#5889, @harupy) - โ๏ธ [Docs] Correct several typos throughout the MLflow docs (#5959, @ryanrussell)
โก๏ธ Small bug fixes and doc updates (#6041, @drsantos89; #6138, #6137, #6132, @sunishsheth2009; #6144, #6124, #6125, #6123, #6057, #6060, #6050, #6038, #6029, #6030, #6025, #6018, #6019, #5962, #5974, #5972, #5957, #5947, #5907, #5938, #5906, #5932, #5919, #5914, #5888, #5890, #5886, #5873, #5865, #5843, @harupy; #6113, @comojin1994; #5930, @yashaswikakumanu; #5837, @shrinath-suresh; #6067, @deepyaman; #5997, @idlefella; #6021, @BenWilson2; #5984, @Sumanth077; #5929, @krunal16-c; #5879, @kugland; #5875, @ognis1205; #6006, @ryanrussell; #6140, @jinzhang21; #5983, @elk15; #6022, @apurva-koti; #5982, @EB-Joel; #5981, #5980, @punitkashyup; #6103, @ikrizanic; #5988, #5969, @SaumyaBhushan; #6020, #5991, @WeichenXu123; #5910, #5912, @Dark-Knight11; #6005, @Asinsa; #6023, @subramaniam02; #5999, @Regis-Caelum; #6007, @CaioCavalcanti; #5943, @kvaithin; #6017, #6002, @NeoKish; #6111, @T1b4lt; #5986, @seyyidibrahimgulec; #6053, @Zohair-coder; #6146, #6145, #6143, #6139, #6134, #6136, #6135, #6133, #6071, #6070, @dbczumar; #6026, @rotate2050)
-
v1.26.1 Changes
May 27, 2022๐ MLflow 1.26.1 is a patch release containing the following bug fixes:
- [Installation] Fix compatibility issue with
protobuf >= 4.21.0
(#5945, @harupy) - [Models] Fix
get_model_dependencies
behavior formodels:
URIs containing artifact paths (#5921, @harupy) - โช [Models] Revert a problematic change to
artifacts
persistence inmlflow.pyfunc.log_model()
that was introduced in MLflow 1.25.0 (#5891, @kyle-jarvis) - [Models] Close associated image files when
EvaluationArtifact
outputs frommlflow.evaluate()
are garbage collected (#5900, @WeichenXu123)
โก๏ธ Small bug fixes and updates (#5874, #5942, #5941, #5940, #5938, @harupy; #5893, @PrajwalBorkar; #5909, @yashaswikakumanu; #5937, @BenWilson2)
- [Installation] Fix compatibility issue with
-
v1.26.0 Changes
May 16, 2022MLflow 1.26.0 includes several major features and improvements:
๐ Features:
- ๐ [CLI] Add endpoint naming and options configuration to the deployment CLI (#5731, @trangevi)
- ๐ [Build,Doc] Add development environment setup script for Linux and MacOS x86 Operating Systems (#5717, @BenWilson2)
- [Tracking] Update
mlflow.set_tracking_uri
to add support for paths defined aspathlib.Path
in addition to existingstr
path declarations (#5824, @cacharle) - ๐ค [Scoring] Add custom timeout override option to the scoring server CLI to support high latency models (#5663, @sniafas)
- ๐ป [UI] Add sticky header to experiment run list table to support column name visibility when scrolling beyond page fold (#5818, @hubertzub-db)
- ๐ [Artifacts] Add GCS support for MLflow garbage collection (#5811, @aditya-iyengar-rtl-de)
- [Evaluate] Add
pos_label
argument foreval_and_log_metrics
API to support accurate binary classifier evaluation metrics (#5807, @yxiong) - โ [UI] Add fields for latest, minimum and maximum metric values on metric display page (#5574, @adamreeve)
- ๐ฒ [Models] Add support for
input_example
andsignature
logging for pyspark ml flavor when using autologging (#5719, @bali0019) - ๐ [Models] Add
virtualenv
environment manager support formlflow models docker-build
CLI (#5728, @harupy) - [Models] Add support for wildcard module matching in log_model_allowlist for PySpark models (#5723, @serena-ruan)
- ๐ [Projects] Add
virtualenv
environment manager support for MLflow projects (#5631, @harupy) - ๐ [Models] Add
virtualenv
environment manager support for MLflow Models (#5380, @harupy) - ๐ [Models] Add
virtualenv
environment manager support formlflow.pyfunc.spark_udf
(#5676, @WeichenXu123) - ๐ฒ [Models] Add support for
input_example
andsignature
logging fortensorflow
flavor when using autologging (#5510, @bali0019) - [Server-infra] Add JSON Schema Type Validation to enable raising 400 errors on malformed requests to REST API endpoints (#5458, @mrkaye97)
- ๐ [Scoring] Introduce abstract
endpoint
interface for mlflow deployments (#5378, @trangevi) - ๐ป [UI] Add
End Time
andDuration
fields to run comparison page (#3378, @RealArpanBhattacharya) - ๐ [Serving] Add schema validation support when parsing input csv data for model serving (#5531, @vvijay-bolt)
๐ Bug fixes and documentation updates:
- [Models] Fix REPL ID propagation from datasource listener to publisher for Spark data sources (#5826, @dbczumar)
- ๐ [UI] Update
ag-grid
and implementgetRowId
to improve performance in the runs table visualization (#5725, @adamreeve) - ๐ [Serving] Fix
tf-serving
parsing to support columnar-based formatting (#5825, @arjundc-db) - โก๏ธ [Artifacts] Update
log_artifact
to support models larger than 2GB in HDFS (#5812, @hitchhicker) - ๐ [Models] Fix autologging to support
lightgbm
metric names with "@" symbols within their names (#5785, @mengchendd) - [Models] Pyfunc: Fix code directory resolution of subdirectories (#5806, @dbczumar)
- ๐ [Server-Infra] Fix mlflow-R server starting failure on windows (#5767, @serena-ruan)
- ๐ [Docs] Add documentation for
virtualenv
environment manager support for MLflow projects (#5727, @harupy) - ๐ป [UI] Fix artifacts display sizing to support full width rendering in preview pane (#5606, @szczeles)
- [Models] Fix local hostname issues when loading spark model by binding driver address to localhost (#5753, @WeichenXu123)
- [Models] Fix autologging validation and batch_size calculations for
tensorflow
flavor (#5683, @MarkYHZhang) - ๐ฒ [Artifacts] Fix
SqlAlchemyStore.log_batch
implementation to make it log data in batches (#5460, @erensahin)
โก๏ธ Small bug fixes and doc updates (#5858, #5859, #5853, #5854, #5845, #5829, #5842, #5834, #5795, #5777, #5794, #5766, #5778, #5765, #5763, #5768, #5769, #5760, #5727, #5748, #5726, #5721, #5711, #5710, #5708, #5703, #5702, #5696, #5695, #5669, #5670, #5668, #5661, #5638, @harupy; #5749, @arpitjasa-db; #5675, @Davidswinkels; #5803, #5797, @ahlag; #5743, @kzhang01; #5650, #5805, #5724, #5720, #5662, @BenWilson2; #5627, @cterrelljones; #5646, @kutal10; #5758, @davideli-db; #5810, @rahulporuri; #5816, #5764, @shrinath-suresh; #5869, #5715, #5737, #5752, #5677, #5636, @WeichenXu123; #5735, @subramaniam02; #5746, @akaigraham; #5734, #5685, @lucalves; #5761, @marcelatoffernet; #5707, @aashish-khub; #5808, @ketangangal; #5730, #5700, @shaikmoeed; #5775, @dbczumar; #5747, @zhixuanevelynwu)
-
v1.25.1 Changes
April 13, 2022๐ MLflow 1.25.1 is a patch release containing the following bug fixes:
- [Models] Fix a
pyfunc
artifact overwrite bug for when multiple artifacts are saved in sub-directories (#5657, @kyle-jarvis) - ๐ท [Scoring] Fix permissions issue for Spark workers accessing model artifacts from a temp directory created by the driver (#5684, @WeichenXu123)
- [Models] Fix a
-
v1.25.0 Changes
April 11, 2022MLflow 1.25.0 includes several major features and improvements:
๐ Features:
- [Tracking] Introduce a new fluent API
mlflow.last_active_run()
that provides the most recent fluent active run (#5584, @MarkYHZhang) - [Tracking] Add
experiment_names
argument to themlflow.search_runs()
API to support searching runs by experiment names (#5564, @r3stl355) - [Tracking] Add a
description
parameter tomlflow.start_run()
(#5534, @dogeplusplus) - [Tracking] Add
log_every_n_step
parameter tomlflow.pytorch.autolog()
to control metric logging frequency (#5516, @adamreeve) - ๐ฒ [Tracking] Log
pyspark.ml.param.Params
values as MLflow parameters during PySpark autologging (#5481, @serena-ruan) - ๐ [Tracking] Add support for
pyspark.ml.Transformer
s to PySpark autologging (#5466, @serena-ruan) - [Tracking] Add input example and signature autologging for Keras models (#5461, @bali0019)
- โ
[Models] Introduce
mlflow.diviner
flavor for large-scale time series forecasting (#5553, @BenWilson2) - [Models] Add
pyfunc.get_model_dependencies()
API to retrieve reproducible environment specifications for MLflow Models with the pyfunc flavor (#5503, @WeichenXu123) - ๐ [Models] Add
code_paths
argument to all model flavors to support packaging custom module code with MLflow Models (#5448, @stevenchen-db) - ๐ [Models] Support creating custom artifacts when evaluating models with
mlflow.evaluate()
(#5405, #5476 @MarkYHZhang) - [Models] Add
mlflow_version
field to MLModel specification (#5515, #5576, @r3stl355) - ๐ฒ [Models] Add support for logging models to preexisting destination directories (#5572, @akshaya-a)
- ๐ง [Scoring / Projects] Introduce
--env-manager
configuration for specifying environment restoration tools (e.g.conda
) and deprecate--no-conda
(#5567, @harupy) - ๐ [Scoring] Support restoring model dependencies in
mlflow.pyfunc.spark_udf()
to ensure accurate predictions (#5487, #5561, @WeichenXu123) - ๐ [Scoring] Add support for
numpy.ndarray
type inputs to the TensorFlow pyfuncpredict()
function (#5545, @WeichenXu123) - ๐ [Scoring] Support deployment of MLflow Models to Sagemaker Serverless (#5610, @matthewmayo)
- ๐ป [UI] Add MLflow version to header beneath logo (#5504, @adamreeve)
- [Artifacts] Introduce a
mlflow.artifacts.download_artifacts()
API mirroring the functionality of themlflow artifacts download
CLI (#5585, @dbczumar) - [Artifacts] Introduce environment variables for controlling GCS artifact upload/download chunk size and timeouts (#5438, #5483, @mokrueger)
๐ Bug fixes and documentation updates:
- ๐ [Tracking/SQLAlchemy] Create an index on
run_uuid
for PostgreSQL to improve query performance (#5446, @harupy) - ๐ [Tracking] Remove client-side validation of metric, param, tag, and experiment fields (#5593, @BenWilson2)
- ๐ [Projects] Support setting the name of the MLflow Run when executing an MLflow Project (#5187, @bramrodenburg)
- ๐ [Scoring] Use pandas
split
orientation for DataFrame inputs to SageMaker deploymentpredict()
API to preserve column ordering (#5522, @dbczumar) - [Server-Infra] Fix runs search compatibility bugs with PostgreSQL, MySQL, and MSSQL (#5540, @harupy)
- [CLI] Fix a bug in the
mlflow-skinny
client that causedmlflow --version
to fail (#5573, @BenWilson2) - ๐ [Docs] Update guidance and examples for model deployment to AzureML to recommend using the
mlflow-azureml
package (#5491, @santiagxf)
โก๏ธ Small bug fixes and doc updates (#5591, #5629, #5597, #5592, #5562, #5477, @BenWilson2; #5554, @juntai-zheng; #5570, @tahesse; #5605, @guelate; #5633, #5632, #5625, #5623, #5615, #5608, #5600, #5603, #5602, #5596, #5587, #5586, #5580, #5577, #5568, #5290, #5556, #5560, #5557, #5548, #5547, #5538, #5513, #5505, #5464, #5495, #5488, #5485, #5468, #5455, #5453, #5454, #5452, #5445, #5431, @harupy; #5640, @nchittela; #5520, #5422, @Ark-kun; #5639, #5604, @nishipy; #5543, #5532, #5447, #5435, @WeichenXu123; #5502, @singankit; #5500, @Sohamkayal4103; #5449, #5442, @apurva-koti; #5552, @vinijaiswal; #5511, @adamreeve; #5428, @jinzhang21; #5309, @sunishsheth2009; #5581, #5559, @Kr4is; #5626, #5618, #5529, @sisp; #5652, #5624, #5622, #5613, #5509, #5459, #5437, @dbczumar; #5616, @liangz1)
- [Tracking] Introduce a new fluent API
-
v1.24.0 Changes
February 27, 2022MLflow 1.24.0 includes several major features and improvements:
๐ Features:
- ๐ [Tracking] Support uploading, downloading, and listing artifacts through the MLflow server via
mlflow server --serve-artifacts
(#5320, @BenWilson2, @harupy) - [Tracking] Add the
registered_model_name
argument tomlflow.autolog()
for automatic model registration during autologging (#5395, @WeichenXu123) - ๐ป [UI] Improve and restructure the Compare Runs page. Additions include "show diff only" toggles and scrollable tables (#5306, @WeichenXu123)
- [Models] Introduce
mlflow.pmdarima
flavor for pmdarima models (#5373, @BenWilson2) - โ [Models] When loading an MLflow Model, print a warning if a mismatch is detected between the current environment and the Model's dependencies (#5368, @WeichenXu123)
- ๐ [Models] Support computing custom scalar metrics during model evaluation with
mlflow.evaluate()
(#5389, @MarkYHZhang) - ๐ [Scoring] Add support for deploying and evaluating SageMaker models via the
MLflow Deployments API
(#4971, #5396, @jamestran201)
๐ Bug fixes and documentation updates:
- ๐ป [Tracking / UI] Fix artifact listing and download failures that occurred when operating the MLflow server in
--serve-artifacts
mode (#5409, @dbczumar) - ๐ [Tracking] Support environment-variable-based authentication when making artifact requests to the MLflow server in
--serve-artifacts
mode (#5370, @TimNooren) - [Tracking] Fix bugs in hostname and path resolution when making artifacts requests to the MLflow server in
--serve-artifacts
mode (#5384, #5385, @mert-kirpici) - [Tracking] Fix an import error that occurred when
mlflow.log_figure()
was used withoutmatplotlib.figure
imported (#5406, @WeichenXu123) - ๐ฒ [Tracking] Correctly log XGBoost metrics containing the
@
symbol during autologging (#5403, @maxfriedrich) - [Tracking] Fix a SQL Server database error that occurred during Runs search (#5382, @dianacarvalho1)
- [Tracking] When downloading artifacts from HDFS, store them in the user-specified destination directory (#5210, @DimaClaudiu)
- ๐ [Tracking / Model Registry] Improve performance of large artifact and model downloads (#5359, @mehtayogita)
- [Models] Fix fast.ai PyFunc inference behavior for models with 2D outputs (#5411, @santiagxf)
- [Models] Record Spark model information to the active run when
mlflow.spark.log_model()
is called (#5355, @szczeles) - โช [Models] Restore onnxruntime execution providers when loading ONNX models with
mlflow.pyfunc.load_model()
(#5317, @ecm200) - ๐ณ [Projects] Increase Docker image push timeout when using Projects with Docker (#5363, @zanitete)
- ๐ฒ [Python] Fix a bug that prevented users from enabling DEBUG-level Python log outputs (#5362, @dbczumar)
- ๐ [Docs] Add a developer guide explaining how to build custom plugins for
mlflow.evaluate()
(#5333, @WeichenXu123)
โก๏ธ Small bug fixes and doc updates (#5298, @wamartin-aml; #5399, #5321, #5313, #5307, #5305, #5268, #5284, @harupy; #5329, @Ark-kun; #5375, #5346, #5304, @dbczumar; #5401, #5366, #5345, @BenWilson2; #5326, #5315, @WeichenXu123; #5236, @singankit; #5302, @timvink; #5357, @maitre-matt; #5347, #5344, @mehtayogita; #5367, @apurva-koti; #5348, #5328, #5310, @liangz1; #5267, @sunishsheth2009)
- ๐ [Tracking] Support uploading, downloading, and listing artifacts through the MLflow server via