All Versions
61
Latest Version
Avg Release Cycle
28 days
Latest Release
501 days ago

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 by mlflow.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 and keras models when mlflow.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 by mlflow.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 with mlflow.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 from Get 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 and on_data_{name | hash} suffixes from mlflow.evaluate() metric keys (#7042, @harupy)
    • 0๏ธโƒฃ [Models / Scoring / Projects] Change default environment manager to virtualenv instead of conda 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 of mlflow.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 of custom_artifacts (#7142, @harupy)
    • ๐Ÿ‘ [Models] Extend PyFuncModel spec to support conda and virtualenv 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() and mlflow.sagemaker.delete() in favor of MLflow deployments APIs, such as mlflow deployments -t sagemaker (#6650, @dbczumar)
    • ๐Ÿš€ [Scoring] Rename input argument df to inputs in mlflow.deployments.predict() method (#6681, @BenWilson2)
    • [Projects] Replace the use_conda argument with the env_manager argument within the run 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 of False (#7011, @harupy)
    • ๐Ÿš€ [Integrations/Azure] Remove deprecated mlflow.azureml modules from MLflow in favor of the azure-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 to mlflow.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, 2022

    MLflow 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 for create_run, get_run and update_run APIs (#6782, #6798 @apurva-koti)
    • [Tracking] Add support for searching by creation_time and last_update_time for the search_experiments API (#6979, @harupy)
    • [Tracking] Add support for search terms run_id IN and run ID NOT IN for the search_runs API (#6945, @harupy)
    • [Tracking] Add support for searching by user_id and end_time for the search_runs API (#6881, #6880 @subramaniam02)
    • [Tracking] Add support for searching by run_name and run_id for the search_runs API (#6899, @harupy; #6952, @alexacole)
    • ๐Ÿ”€ [Tracking] Add support for synchronizing run name attribute and mlflow.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 the status and name 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 to mlflow.pyfunc.spark_udf() (#6913, @BenWilson2)
    • ๐Ÿ”ง [SQLAlchemy] Add support for configurable Pool class options for SqlAlchemyStore (#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 in MLmodel 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 to sklearn.metrics.precision_recall_curve in mlflow.evaluate() (#6854, @dbczumar)
    • โšก๏ธ [SQLAlchemy] Fix a bug in SqlAlchemyStore where set_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, 2022

    MLflow 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() and load_dict() fluent APIs for convenient artifact loading (#6475, @subramaniam02)
    • [Tracking] Add creation_time and last_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 deprecate listExperiments (#6561, @dbczumar)
    • [Tracking] Add mlflow_search_experiments API to R client and deprecate mlflow_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 to mlflow.evaluate() (#6806, @dbczumar)
    • ๐Ÿ‘ [Models] Add pos_label support to mlflow.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 of SageMakerDeploymentClient.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, 2022

    MLflow 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 to mlflow 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 as mlflow.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 to set_model_version_tag() (#6185, @subramaniam02)
    • [Model Registry] Add --registry-store-uri flag to mlflow 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 in mlflow 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 of open 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 when log_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 from mlflow.tracking to mlflow.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, 2022

    MLflow 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 the mlflow.log_metric() API (#5756, @ntakouris)
    • ๐Ÿ‘ [Models] Add support for CatBoostRanker models to the mlflow.catboost flavor (#6032, @danielgafni)
    • [Models] Integrate SHAP's KernelExplainer with mlflow.evaluate(), enabling model explanations on categorical data (#6044, #5920, @WeichenXu123)
    • ๐ŸŒฒ [Models] Extend mlflow.evaluate() to automatically log the score() 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 reject LogParam 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 when env-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 for models: URIs containing artifact paths (#5921, @harupy)
    • โช [Models] Revert a problematic change to artifacts persistence in mlflow.pyfunc.log_model() that was introduced in MLflow 1.25.0 (#5891, @kyle-jarvis)
    • [Models] Close associated image files when EvaluationArtifact outputs from mlflow.evaluate() are garbage collected (#5900, @WeichenXu123)

    โšก๏ธ Small bug fixes and updates (#5874, #5942, #5941, #5940, #5938, @harupy; #5893, @PrajwalBorkar; #5909, @yashaswikakumanu; #5937, @BenWilson2)

  • v1.26.0 Changes

    May 16, 2022

    MLflow 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 as pathlib.Path in addition to existing str 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 for eval_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 and signature logging for pyspark ml flavor when using autologging (#5719, @bali0019)
    • ๐Ÿ— [Models] Add virtualenv environment manager support for mlflow 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 for mlflow.pyfunc.spark_udf (#5676, @WeichenXu123)
    • ๐ŸŒฒ [Models] Add support for input_example and signature logging for tensorflow 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 and Duration 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 implement getRowId 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)
  • v1.25.0 Changes

    April 11, 2022

    MLflow 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 the mlflow.search_runs() API to support searching runs by experiment names (#5564, @r3stl355)
    • [Tracking] Add a description parameter to mlflow.start_run() (#5534, @dogeplusplus)
    • [Tracking] Add log_every_n_step parameter to mlflow.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.Transformers 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 pyfunc predict() 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 the mlflow 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 deployment predict() 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 caused mlflow --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)

  • v1.24.0 Changes

    February 27, 2022

    MLflow 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 to mlflow.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 without matplotlib.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)