We are happy to announce the availability of MLflow 2.1.0!

MLflow 2.1.0 includes several major features and improvements


  • [Recipes] Introduce support for multi-class classification (#7458, @mshtelma)
  • [Recipes] Extend the pyfunc representation of classification models to output scores in addition to labels (#7474, @sunishsheth2009)
  • [UI] Add user ID and lifecycle stage quick search links to the Runs page (#7462, @jaeday)
  • [Tracking] Paginate the GetMetricHistory API (#7523, #7415, @BenWilson2)
  • [Tracking] Add Runs search aliases for Run name and start time that correspond to UI column names (#7492, @apurva-koti)
  • [Tracking] Add a /version endpoint to mlflow server for querying the server’s MLflow version (#7273, @joncarter1)
  • [Model Registry] Add FileStore support for the Model Registry (#6605, @serena-ruan)
  • [Model Registry] Introduce an mlflow.search_registered_models() fluent API (#7428, @TSienki)
  • [Model Registry / Java] Add a getRegisteredModel() method to the Java client (#6602) (#7511, @drod331)
  • [Model Registry / R] Add an mlflow_set_model_version_tag() method to the R client (#7401, @leeweijie)
  • [Models] Introduce a metadata field to the MLmodel specification and log_model() methods (#7237, @jdonzallaz)
  • [Models] Extend Model.load() to support loading MLmodel specifications from remote locations (#7517, @dbczumar)
  • [Models] Pin the major version of MLflow in Models’ requirements.txt and conda.yaml files (#7364, @BenWilson2)
  • [Scoring] Extend mlflow.pyfunc.spark_udf() to support StructType results (#7527, @WeichenXu123)
  • [Scoring] Extend TensorFlow and Keras Models to support multi-dimensional inputs with mlflow.pyfunc.spark_udf()(#7531, #7291, @WeichenXu123)
  • [Scoring] Support specifying deployment environment variables and tags when deploying models to SageMaker (#7433, @jhallard)

Bug fixes:

  • [Recipes] Fix a bug that prevented use of custom early_stop functions during model tuning (#7538, @sunishsheth2009)
  • [Recipes] Fix a bug in the logic used to create a Spark session during data ingestion (#7307, @WeichenXu123)
  • [Tracking] Make the metric names produced by mlflow.autolog() consistent with mlflow.evaluate() (#7418, @wenfeiy-db)
  • [Tracking] Fix an autologging bug that caused nested, redundant information to be logged for XGBoost and LightGBM models (#7404, @WeichenXu123)
  • [Tracking] Correctly classify SQLAlchemy OperationalErrors as retryable HTTP errors (#7240, @barrywhart)
  • [Artifacts] Correctly handle special characters in credentials when using FTP artifact storage (#7479, @HCTsai)
  • [Models] Address an issue that prevented MLeap models from being saved on Windows (#6966, @dbczumar)
  • [Scoring] Fix a permissions issue encountered when using NFS during model scoring with mlflow.pyfunc.spark_udf() (#7427, @WeichenXu123)

Documentation updates:

  • [Docs] Add more examples to the Runs search documentation page (#7487, @apurva-koti)
  • [Docs] Add documentation for Model flavors developed by the community (#7425, @mmerce)
  • [Docs] Add an example for logging and scoring ONNX Models (#7398, @Rusteam)
  • [Docs] Fix a typo in the model scoring REST API example for inputs with the dataframe_split format (#7540, @zhouyangyu)
  • [Docs] Fix a typo in the model scoring REST API example for inputs with the dataframe_records format (#7361, @dbczumar)

For a comprehensive list of changes, see the release change log, and check out the latest documentation on mlflow.org.