changelogs/v1.x.md
MLflow 1.30.0 includes several major features and improvements
Features:
Delta tables as a datasource in the ingest step (#7010, @sunishsheth2009)run_name attribute for create_run, get_run and update_run APIs (#6782, #6798 @apurva-koti)creation_time and last_update_time for the search_experiments API (#6979, @harupy)run_id IN and run ID NOT IN for the search_runs API (#6945, @harupy)user_id and end_time for the search_runs API (#6881, #6880 @subramaniam02)run_name and run_id for the search_runs API (#6899, @harupy; #6952, @alexacole)name attribute and mlflow.runName tag (#6971, @BenWilson2)update_run() API for modifying the status and name attributes of existing runs (#7013, @gabrielfu)mlflow gc cli API (#6977, @shaikmoeed)evaluate() API (#6728, @jerrylian-db)evaluate() API (#7077, @dbczumar)BooleanType to mlflow.pyfunc.spark_udf() (#6913, @BenWilson2)Pool class options for SqlAlchemyStore (#6883, @mingyu89)Bug fixes:
SparkSession if one does not exist (#6846, @prithvikannan)bool column types in Step Card data profiles (#6907, @sunishsheth2009)mlflow.pyspark.ml.autolog() (#6831, @harupy)mlflow-skinny package to serve as base requirement in MLmodel requirements (#6974, @BenWilson2)pos_label to sklearn.metrics.precision_recall_curve in mlflow.evaluate() (#6854, @dbczumar)SqlAlchemyStore where set_tag() updates the incorrect tags (#7027, @gabrielfu)Documentation updates:
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
MLflow 1.29.0 includes several major features and improvements
Features:
mlflow pipelines get-artifact CLI for retrieving Pipeline artifacts (#6517, @prithvikannan)mlflow pipelines CLI command for reproducing a Pipeline run in the MLflow UI (#6376, @hubertzub-db)load_text(), load_image() and load_dict() fluent APIs for convenient artifact loading (#6475, @subramaniam02)creation_time and last_update_time attributes to the Experiment class (#6756, @subramaniam02)searchExperiments API to Java client and deprecate listExperiments (#6561, @dbczumar)mlflow_search_experiments API to R client and deprecate mlflow_list_experiments (#6576, @dbczumar)mlflow.models.add_libraries_to_model() API for adding libraries to an MLflow Model (#6586, @arjundc-db)mlflow.evaluate() (#6582, @jerrylian-db)sample_weights support to mlflow.evaluate() (#6806, @dbczumar)pos_label support to mlflow.evaluate() for identifying the positive class (#6696, @harupy)mlflow.evaluate() (#6593, @dbczumar)predict_proba() support to the pyfunc representation of scikit-learn models (#6631, @skylarbpayne)/health endpoint to scoring server (#6574, @gabriel-milan)variant_name during Sagemaker deployment (#6486, @nfarley-soaren)data_capture_config during SageMaker deployment (#6423, @jonwiggins)Bug fixes:
__main__ module when loading model code (#6647, @Jooakim)mlflow server compatibility issue with HDFS when running in --serve-artifacts mode (#6482, @shidianshifen)Documentation updates:
list_run_infos() APIs (#6550, @dbczumar)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
MLflow 1.28.0 includes several major features and improvements:
Features:
pipeline.yaml configurations to specify the Model Registry backend used for model registration (#6284, @sunishsheth2009)transform step of the scikit-learn regression pipeline (#6362, @sunishsheth2009)mlflow.search_experiments() API for searching experiments by name and by tags (#6333, @WeichenXu123; #6227, #6172, #6154, @harupy)--older-than flag to mlflow gc for removing runs based on deletion time (#6354, @Jason-CKY)MLFLOW_SQLALCHEMYSTORE_POOL_RECYCLE environment variable for recycling SQLAlchemy connections (#6344, @postrational)MlflowClient importable as mlflow.MlflowClient (#6085, @subramaniam02)stage parameter to set_model_version_tag() (#6185, @subramaniam02)--registry-store-uri flag to mlflow server for specifying the Model Registry backend URI (#6142, @Secbone)model_uri optional in mlflow models build-docker to support building generic model serving images (#6302, @harupy)Bug fixes and documentation updates:
xdg-open instead of open for viewing Pipeline results on Linux systems (#6326, @strangiato)mlflow.pyspark.ml.autolog() to only log model signatures for supported input / output data types (#6365, @harupy)mlflow.tensorflow.autolog() to log TensorFlow early stopping callback info when log_models=False is specified (#6170, @WeichenXu123)mlflow.sklearn.autolog() for models containing transformers (#6230, @dbczumar)mlflow gc that occurred when removing a run whose artifacts had been previously deleted (#6165, @dbczumar)sqlparse library to MLflow Skinny client, which is required for search support (#6174, @dbczumar)mlflow server bug that rejected parameters and tags with empty string values (#6179, @dbczumar)--serve-arifacts enabled (#6355, @abbas123456)mlflow deployments predict CLI (#6323, @dbczumar)mlflow.pyfunc.spark_udf() (#6244, @harupy)MlflowClient from mlflow.tracking to mlflow.client (#6405, @dbczumar)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)
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:
ndarray and tensor instances as metrics via the mlflow.log_metric() API (#5756, @ntakouris)CatBoostRanker models to the mlflow.catboost flavor (#6032, @danielgafni)KernelExplainer with mlflow.evaluate(), enabling model explanations on categorical data (#6044, #5920, @WeichenXu123)mlflow.evaluate() to automatically log the score() outputs of scikit-learn models as metrics (#5935, #5903, @WeichenXu123)Bug fixes and documentation updates:
sqlalchemy>=1.4.0 upon MLflow installation, which is necessary for usage of SQL-based MLflow Tracking backends (#6024, @sniafas)mlflow server to reject LogParam API requests containing empty string values (#6031, @harupy)matplotlib was not installed on the host system (#5995, @fa9r)tf.data.Dataset inputs (#6061, @dbczumar)mlflow.sklearn.model() did not properly restore bundled model code (#6037, @WeichenXu123)mlflow.evaluate() that caused input data objects to be mutated when evaluating certain scikit-learn models (#6141, @dbczumar)mlflow.pyfunc.spark_udf that occurred when the UDF was invoked on an empty RDD partition (#6063, @WeichenXu123)mlflow models build-docker that occurred when env-manager=local was specified (#6046, @bneijt)master branch (#5889, @harupy)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)
MLflow 1.26.1 is a patch release containing the following bug fixes:
protobuf >= 4.21.0 (#5945, @harupy)get_model_dependencies behavior for models: URIs containing artifact paths (#5921, @harupy)artifacts persistence in mlflow.pyfunc.log_model() that was introduced in MLflow 1.25.0 (#5891, @kyle-jarvis)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)
MLflow 1.26.0 includes several major features and improvements:
Features:
mlflow.set_tracking_uri to add support for paths defined as pathlib.Path in addition to existing str path declarations (#5824, @cacharle)pos_label argument for eval_and_log_metrics API to support accurate binary classifier evaluation metrics (#5807, @yxiong)input_example and signature logging for pyspark ml flavor when using autologging (#5719, @bali0019)virtualenv environment manager support for mlflow models docker-build CLI (#5728, @harupy)virtualenv environment manager support for MLflow projects (#5631, @harupy)virtualenv environment manager support for MLflow Models (#5380, @harupy)virtualenv environment manager support for mlflow.pyfunc.spark_udf (#5676, @WeichenXu123)input_example and signature logging for tensorflow flavor when using autologging (#5510, @bali0019)endpoint interface for mlflow deployments (#5378, @trangevi)End Time and Duration fields to run comparison page (#3378, @RealArpanBhattacharya)Bug fixes and documentation updates:
ag-grid and implement getRowId to improve performance in the runs table visualization (#5725, @adamreeve)tf-serving parsing to support columnar-based formatting (#5825, @arjundc-db)log_artifact to support models larger than 2GB in HDFS (#5812, @hitchhicker)lightgbm metric names with "@" symbols within their names (#5785, @mengchendd)virtualenv environment manager support for MLflow projects (#5727, @harupy)tensorflow flavor (#5683, @MarkYHZhang)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)
MLflow 1.25.1 is a patch release containing the following bug fixes:
pyfunc artifact overwrite bug for when multiple artifacts are saved in sub-directories (#5657, @kyle-jarvis)MLflow 1.25.0 includes several major features and improvements:
Features:
mlflow.last_active_run() that provides the most recent fluent active run (#5584, @MarkYHZhang)experiment_names argument to the mlflow.search_runs() API to support searching runs by experiment names (#5564, @r3stl355)description parameter to mlflow.start_run() (#5534, @dogeplusplus)log_every_n_step parameter to mlflow.pytorch.autolog() to control metric logging frequency (#5516, @adamreeve)pyspark.ml.param.Params values as MLflow parameters during PySpark autologging (#5481, @serena-ruan)pyspark.ml.Transformers to PySpark autologging (#5466, @serena-ruan)mlflow.diviner flavor for large-scale time series forecasting (#5553, @BenWilson2)pyfunc.get_model_dependencies() API to retrieve reproducible environment specifications for MLflow Models with the pyfunc flavor (#5503, @WeichenXu123)code_paths argument to all model flavors to support packaging custom module code with MLflow Models (#5448, @stevenchen-db)mlflow.evaluate() (#5405, #5476 @MarkYHZhang)mlflow_version field to MLModel specification (#5515, #5576, @r3stl355)--env-manager configuration for specifying environment restoration tools (e.g. conda) and deprecate --no-conda (#5567, @harupy)mlflow.pyfunc.spark_udf() to ensure accurate predictions (#5487, #5561, @WeichenXu123)numpy.ndarray type inputs to the TensorFlow pyfunc predict() function (#5545, @WeichenXu123)mlflow.artifacts.download_artifacts() API mirroring the functionality of the mlflow artifacts download CLI (#5585, @dbczumar)Bug fixes and documentation updates:
run_uuid for PostgreSQL to improve query performance (#5446, @harupy)split orientation for DataFrame inputs to SageMaker deployment predict() API to preserve column ordering (#5522, @dbczumar)mlflow-skinny client that caused mlflow --version to fail (#5573, @BenWilson2)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)
MLflow 1.24.0 includes several major features and improvements:
Features:
mlflow server --serve-artifacts (#5320, @BenWilson2, @harupy)registered_model_name argument to mlflow.autolog() for automatic model registration during autologging (#5395, @WeichenXu123)mlflow.pmdarima flavor for pmdarima models (#5373, @BenWilson2)mlflow.evaluate() (#5389, @MarkYHZhang)MLflow Deployments API (#4971, #5396, @jamestran201)Bug fixes and documentation updates:
--serve-artifacts mode (#5409, @dbczumar)--serve-artifacts mode (#5370, @TimNooren)--serve-artifacts mode (#5384, #5385, @mert-kirpici)mlflow.log_figure() was used without matplotlib.figure imported (#5406, @WeichenXu123)@ symbol during autologging (#5403, @maxfriedrich)mlflow.spark.log_model() is called (#5355, @szczeles)mlflow.pyfunc.load_model() (#5317, @ecm200)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)
MLflow 1.23.1 is a patch release containing the following bug fixes:
models:/ URIs (#5312, @lichenran1234)MLflow 1.23.0 includes several major features and improvements:
Features:
mlflow.evaluate() API for evaluating MLflow Models, providing performance and explainability insights. For an overview, see https://mlflow.org/docs/latest/models.html#model-evaluation (#5069, #5092, #5256, @WeichenXu123)log_model() APIs now return information about the logged MLflow Model, including artifact location, flavors, and schema (#5230, @liangz1)mlflow.models.Model.load_input_example() Python API for loading MLflow Model input examples (#5212, @maitre-matt)latest in model URI to get the latest version of a model regardless of the stage (#5027, @lichenran1234)mlflow.lightgbm.autolog() (#5130, #5200, #5271 @jwyyy)Bug fixes and documentation updates:
mlflow.pytorch.load_model() were not applied for scripted models (#5163, @schmidt-jake)mlflow_create_model_version() API that caused model source to be set incorrectly (#5185, @bramrodenburg)mlflow.start_run() modified user-supplied tags dictionary (#5191, @matheusMoreno)Small bug fixes and doc updates (#5275, #5264, #5244, #5249, #5255, #5248, #5243, #5240, #5239, #5232, #5234, #5235, #5082, #5220, #5219, #5226, #5217, #5194, #5188, #5132, #5182, #5183, #5180, #5177, #5165, #5164, #5162, #5015, #5136, #5065, #5125, #5106, #5127, #5120, @harupy; #5045, @BenWilson2; #5156, @pbezglasny; #5202, @jwyyy; #3863, @JoshuaAnickat; #5205, @abhiramr; #4604, @OSobky; #4256, @einsmein; #5140, @AveshCSingh; #5273, #5186, #5176, @WeichenXu123; #5260, #5229, #5206, #5174, #5160, @liangz1)
MLflow 1.22.0 includes several major features and improvements:
Features:
@experimental decorators (#5028, @liangz1)experiment_id parameter to mlflow.set_experiment() (#5012, @dbczumar)mlflow.xgboost.autolog() (#5078, @jwyyy)Bug fixes and documentation updates:
Creator field from Model Version page if user information is absent (#5089, @jinzhang21)mlflow to conda.yaml even if a hashed version was already present (#5058, @maitre-matt)resources specification in MLflow Projects + Kubernetes example (#4948, @jianyuan)Small bug fixes and doc updates (#5119, #5107, #5105, #5103, #5085, #5088, #5051, #5081, #5039, #5073, #5072, #5066, #5064, #5063, #5060, #4718, #5053, #5052, #5041, #5043, #5047, #5036, #5037, #5029, #5031, #5032, #5030, #5007, #5019, #5014, #5008, #4998, #4985, #4984, #4970, #4966, #4980, #4967, #4978, #4979, #4968, #4976, #4975, #4934, #4956, #4938, #4950, #4946, #4939, #4913, #4940, #4935, @harupy; #5095, #5070, #5002, #4958, #4945, @BenWilson2; #5099, @chaosddp; #5005, @you-n-g; #5042, #4952, @shrinath-suresh; #4962, #4995, @WeichenXu123; #5010, @lichenran1234; #5000, @wentinghu; #5111, @alexott; #5102, #5024, #5011, #4959, @dbczumar; #5075, #5044, #5026, #4997, #4964, #4989, @liangz1; #4999, @stevenchen-db)
MLflow 1.21.0 includes several major features and improvements:
Features:
start_time and duration information to exported runs CSV (#4851, @marijncv)mlflow gc CLI (#4670, @afaul)>=2.4.1) (#4715, @jinzhang21)mlflow.prophet model flavor for Prophet time series models (#4773, @BenWilson2)MLFLOW_CONDA_CREATE_ENV_CMD for customizing Conda environment creation (#4746, @giacomov)Bug fixes and documentation updates:
null was displayed in the runs table column ordering dropdown (#4924, @harupy)Small bug fixes and doc updates (#4928, #4919, #4927, #4922, #4914, #4899, #4893, #4894, #4884, #4864, #4823, #4841, #4817, #4796, #4797, #4767, #4768, #4757, @harupy; #4863, #4838, @marijncv; #4834, @ksaur; #4772, @louisguitton; #4801, @twsl; #4929, #4887, #4856, #4843, #4789, #4780, @WeichenXu123; #4769, @Ark-kun; #4898, #4756, @apurva-koti; #4784, @lakshikaparihar; #4855, @ianshan0915; #4790, @eedeleon; #4931, #4857, #4846, 4777, #4748, @dbczumar)
MLflow 1.20.2 is a patch release containing the following features and bug fixes:
Features:
Bug fixes and documentation updates:
2.6.0 (#4766, @dbczumar)Small bug fixes and doc updates (#4770, @WeichenXu123)
MLflow 1.20.1 is a patch release containing the following bug fixes:
importlib_metadata.packages_distributions upon mlflow.utils.requirements_utils import (#4741, @dbczumar)importlib_metadata==4.7.0 (#4740, @dbczumar)MLflow 1.20.0 includes several major features and improvements:
Features:
sklearn.metrics.mean_squared_error, are called (#4491, #4628 #4638, @WeichenXu123)Evaluator.evaluate(), are called (#4686, @WeichenXu123)pip_requirements and extra_pip_requirements to mlflow.*.log_model and mlflow.*.save_model for directly specifying the pip requirements of the model to log / save (#4519, #4577, #4602, @harupy)stdMetrics entries to the training metrics recorded during PySpark CrossValidator autologging (#4672, @WeichenXu123)mlflow.*.log_model and mlflow.*.save_model now automatically infer the pip requirements of the model to log / save based on the current software environment (#4518, @harupy)Bug fixes and documentation updates:
requirements_file argument for mlflow.*.save_model and mlflow.*.log_model (#4620, @harupy)Content-Type header with the charset parameter (#4609, @Ark-kun)cross_val_* APIs, which are incompatible with autologging (#4590, @WeichenXu123)mlflow.azureml.cli.build_image and mlflow.azureml.build_image (#4646, @trangevi)Small bug fixes and doc updates (#4730, #4722, #4725, #4723, #4703, #4710, #4679, #4694, #4707, #4708, #4706, #4705, #4625, #4701, #4700, #4662, #4699, #4682, #4691, #4684, #4683, #4675, #4666, #4648, #4653, #4651, #4641, #4649, #4627, #4637, #4632, #4634, #4621, #4619, #4622, #4460, #4608, #4605, #4599, #4600, #4581, #4583, #4565, #4575, #4564, #4580, #4572, #4570, #4574, #4576, #4568, #4559, #4537, #4542, @harupy; #4698, #4573, @Ark-kun; #4674, @kvmakes; #4555, @vagoston; #4644, @zhengjxu; #4690, #4588, @apurva-koti; #4545, #4631, #4734, @WeichenXu123; #4633, #4292, @shrinath-suresh; #4711, @jinzhang21; #4688, @murilommen; #4635, @ryan-duve; #4724, #4719, #4640, #4639, #4629, #4612, #4613, #4586, @dbczumar)
MLflow 1.19.0 includes several major features and improvements:
Features:
Add support for plotting per-class feature importance computed on linear boosters in XGBoost autologging (#4523, @dbczumar)
Add mlflow_create_registered_model and mlflow_delete_registered_model for R to create/delete registered models.
Add support for setting tags while resuming a run (#4497, @dbczumar)
MLflow UI updates (#4490, @sunishsheth2009)
Bug fixes and documentation updates:
NaN and empty values (#3409, @harupy)Small bug fixes and doc updates (#4541, #4534, #4533, #4517, #4508, #4513, #4512, #4509, #4503, #4486, #4493, #4469, @harupy; #4458, @KasirajanA; #4501, @jimmyxu-db; #4521, #4515, @jerrylian-db; #4359, @shrinath-suresh; #4544, @WeichenXu123; #4549, @smurching; #4554, @derkomai; #4506, @tomasatdatabricks; #4551, #4516, #4494, @dbczumar; #4511, @keypointt)
MLflow 1.18.0 includes several major features and improvements:
Features:
Bug fixes and documentation updates:
KubernetesSubmittedRun.get_status() for Kubernetes MLflow Project runs (#3962) (#4159, @jcasse)mlflow models serve to crash on Windows 10 (#4377, @simonvanbernem)disable_for_unsupported_versions autologging argument that caused library versions to be incorrectly compared (#4303, @WeichenXu123)Small bug fixes and doc updates (#4405, @mohamad-arabi; #4455, #4461, #4459, #4464, #4453, #4444, #4449, #4301, #4424, #4418, #4417, #3759, #4398, #4389, #4386, #4385, #4384, #4380, #4373, #4378, #4372, #4369, #4348, #4364, #4363, #4349, #4350, #4174, #4285, #4341, @harupy; #4446, @kHarshit; #4471, @AveshCSingh; #4435, #4440, #4368, #4360, @WeichenXu123; #4431, @apurva-koti; #4428, @stevenchen-db; #4467, #4402, #4261, @dbczumar)
MLflow 1.17.0 includes several major features and improvements:
Features:
mlflow.pyspark.ml.autolog() (#4270, @WeichenXu123)Bug fixes and documentation updates:
datetime.date objects as part of model input examples (#4313, @vperiyasamy)Small bug fixes and doc updates (#4276, #4263, @WeichenXu123; #4289, #4302, #3599, #4287, #4284, #4265, #4266, #4275, #4268, @harupy; #4335, #4297, @dbczumar; #4324, #4320, @tleyden)
MLflow 1.16.0 includes several major features and improvements:
Features:
mlflow.pyspark.ml.autolog() API for autologging of pyspark.ml estimators (#4228, @WeichenXu123)mlflow.catboost.log_model, mlflow.catboost.save_model, mlflow.catboost.load_model APIs for CatBoost model persistence (#2417, @harupy)mlflow.pyfunc.spark_udf to use column names from model signature by default (#4236, @Loquats)datetime data type for model signatures (#4241, @vperiyasamy)mlflow.sklearn.eval_and_log_metrics API that computes and logs metrics for the given scikit-learn model and labeled dataset. (#4218, @alkispoly-db)Bug fixes and documentation updates:
Small bug fixes and doc updates (#4255, #4252, #4254, #4253, #4242, #4247, #4243, #4237, #4233, @harupy; #4225, @dmatrix; #4207, @shrinath-suresh; #4264, @WeichenXu123; #3884, #3866, #3885, @ankan94; #4274, #4216, @dbczumar)
MLflow 1.15.0 includes several features, bug fixes and improvements. Notably, it includes a number of improvements to MLflow autologging:
Features:
silent=False option to all autologging APIs, to allow suppressing MLflow warnings and logging statements during autologging setup and training (#4173, @dbczumar)disable_for_unsupported_versions=False option to all autologging APIs, to disable autologging for versions of ML frameworks that have not been explicitly tested against the current version of the MLflow client (#4119, @WeichenXu123)Bug fixes:
mlflow_get_experiment API now returns the same tag structure as mlflow_list_experiments and mlflow_get_run (#4017, @lorenzwalthert)mlflow.tensorflow.autolog would previously mutate the user-specified callbacks list when fitting tf.keras models (#4195, @dbczumar)mlflow.register_model) now fails if the model version status is not READY (#4114, @ankit-db)Small bug fixes and doc updates (#4191, #4149, #4162, #4157, #4155, #4144, #4141, #4138, #4136, #4133, #3964, #4130, #4118, @harupy; #4139, @WeichenXu123; #4193, @smurching; #4029, @architkulkarni; #4134, @xhochy; #4116, @wenleix; #4160, @wentinghu; #4203, #4184, #4167, @dbczumar)
MLflow 1.14.1 is a patch release containing the following bug fix:
MLflow 1.14.0 includes several major features and improvements:
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)mlflow.shap.log_explainer, mlflow.shap.load_explainer APIs for logging and loading shap.Explainer instances (#3989, @vivekchettiar)mlflow-skinny PyPI package (#4049, @eedeleon)RequestHeaderProvider plugin interface for passing custom request headers with REST API requests made by the MLflow Python client (#4042, @jimmyxu-db)mlflow.keras.log_model now saves models in the TensorFlow SavedModel format by default instead of the older Keras H5 format (#4043, @harupy)mlflow_log_model now supports logging MLeap models in R (#3819, @yitao-li)mlflow.pytorch.log_state_dict, mlflow.pytorch.load_state_dict for logging and loading PyTorch state dicts (#3705, @shrinath-suresh)mlflow gc can now garbage-collect artifacts stored in S3 (#3958, @sklingel)Bug fixes and documentation updates:
tensorflow.compat.v1.estimator.Estimator (#4097, @mohamad-arabi)mlflow.models.infer_signature to handle dataframes containing pandas.api.extensions.ExtensionDtype (#4069, @caleboverman)mlflow_restore_run doesn't propagate the client parameter to mlflow_get_run (#4003, @yitao-li)mlflow_list_experiments to fail listing experiments with tags (#3942, @lorenzwalthert)mlflow_load_model doesn't load metadata associated to MLflow model flavor in R (#3872, @yitao-li)mlflow.spark.log_model, mlflow.spark.load_model APIs 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)
MLflow 1.13.1 is a patch release containing bug fixes and small changes:
mlflow.autolog() (#3917, @dbczumar)allow_null_for_run_id migration failure affecting MySQL databases (#3836, @t-henri)transition_model_version_stage when uncanonical stage name is passed (#3929, @harupy)MLflow 1.13 includes several major features and improvements:
Features:
New fluent APIs for logging in-memory objects as artifacts:
mlflow.log_text which logs text as an artifact (#3678, @harupy)mlflow.log_dict which logs a dictionary as an artifact (#3685, @harupy)mlflow.log_figure which logs a figure object as an artifact (#3707, @harupy)mlflow.log_image which logs an image object as an artifact (#3728, @harupy)UI updates / fixes (#3867, @smurching):
description field to model version tableAutologging enhancements:
disable configuration option for autologging (#3682, #3815, dbczumar; #3838, @mohamad-arabi; #3854, #3855, #3861, @harupy)exclusive configuration option for autologging (#3851, @apurva-koti; #3869, @dbczumar)log_models configuration option for autologging (#3663, @mohamad-arabi)More features and improvements:
SavedModel format (#3552, @skylarbpayne)statsmodels flavor (#3304, @olbapjose)mlflow.azureml.deploy now integrates better with the AzureML tracking/registry. (#3419, @trangevi)Bug fixes and documentation updates:
tf.keras training sessions (#3853, @dbczumar)tf.Keras metric history entries when initial_epoch is different from zero. (#3575, @garciparedes)filterwwarnings module at import time (#3621, @jogo)h5py library incompatibility for exported Keras models (#3667, @tomasatdatabricks)Small changes, bug fixes and doc updates (#3887, #3882, #3845, #3833, #3830, #3828, #3826, #3825, #3800, #3809, #3807, #3786, #3794, #3731, #3776, #3760, #3771, #3754, #3750, #3749, #3747, #3736, #3701, #3699, #3698, #3658, #3675, @harupy; #3723, @mohamad-arabi; #3650, #3655, @shrinath-suresh; #3850, #3753, #3725, @dmatrix; ##3867, #3670, #3664, @smurching; #3681, @sueann; #3619, @andrewnitu; #3837, @javierluraschi; #3721, @szczeles; #3653, @arthury1n; #3883, #3874, #3870, #3877, #3878, #3815, #3859, #3844, #3703, @dbczumar; #3768, @wentinghu; #3784, @HCoban; #3643, #3649, @arjundc-db; #3864, @AveshCSingh, #3756, @yitao-li)
MLflow 1.12.1 is a patch release containing bug fixes and small changes:
run_link for cross-workspace model versions (#3681, @sueann)MLflow 1.12.0 includes several major features and improvements, in particular a number of improvements to autologging and MLflow's Pytorch integrations:
Features:
Autologging:
mlflow.autolog which enables autologging for all supported integrations (#3561, #3590, @andrewnitu)mlflow.pytorch.autolog API for automatic logging of metrics, params, and models from Pytorch Lightning training (#3601, @shrinath-suresh, #3636, @karthik-77). This API is also enabled by mlflow.autolog.mlflow.sklearn.autolog now supports logging metrics (e.g. accuracy) and plots (e.g. confusion matrix heat map) (#3423, #3327, @willzhan-db, @harupy)PyTorch:
mlflow.pytorch.log_model, mlflow.pytorch.load_model now support logging/loading TorchScript models (#3557, @shrinath-suresh)mlflow.pytorch.log_model supports passing requirements_file & extra_files arguments to log additional artifacts along with a model (#3436, @shrinath-suresh)More features and improvements:
mlflow.shap.log_explanation for logging model explanations generated by SHAP (#3513, @harupy)log_model and create_model_version now supports an await_creation_for argument (#3376, @andychow-db)MLFLOW_S3_IGNORE_TLS environment variable to enable skipping TLS verification of S3 endpoint (#3345, @dolfinus)Bug fixes and documentation updates:
AttributeError in keras autologgging (#3611, @sephib)lightgbm.Dataset(None) fails after running mlflow.lightgbm.autolog (#3594, @harupy)xgboost.DMatrix(None) fails after running mlflow.xgboost.autolog (#3584, @harupy)docker_args in non-synchronous mlflow project runs (#3563, @alfozan)FTPArtifactRepository.log_artifacts with artifact_path keyword argument (issue #3388) (#3391, @kzm4269)atexit.register(_flush_queue) in __main__ scope of mlflow/tensorflow.py (#3410, @harupy)mlflow-torchserve plugin (#3634, @karthik-77)mlflow-elasticsearchstore to the doc (#3462, @AxelVivien25)mlflow-yarn backend (#3373, @fhoering)Small bug fixes and doc updates (#3607, #3616, #3534, #3598, #3542, #3568, #3349, #3554, #3544, #3541, #3533, #3535, #3516, #3512, #3497, #3522, #3521, #3492, #3502, #3434, #3422, #3394, #3387, #3294, #3324, #3654, @harupy; #3451, @jgc128; #3638, #3632, #3608, #3452, #3399, @shrinath-suresh; #3495, #3459, #3662, #3668, #3670 @smurching; #3488, @edgan8; #3639, @karthik-77; #3589, #3444, #3276, @lorenzwalthert; #3538, #3506, #3509, #3507, #3510, #3508, @rahulporuri; #3504, @sbrugman; #3486, #3466, @apurva-koti; #3477, @juntai-zheng; #3617, #3609, #3605, #3603, #3560, @dbczumar; #3411, @danielvdende; #3377, @willzhan-db; #3420, #3404, @andrewnitu; #3591, @mateiz; #3465, @abawchen; #3543, @emptalk; #3302, @bramrodenburg; #3468, @ghisvail; #3496, @extrospective; #3549, #3501, #3435, @yitao-li; #3243, @OlivierBondu; #3439, @andrewnitu; #3651, #3635 @SeanNaren, #3470, @ankit-db)
MLflow 1.11.0 includes several major features and improvements:
Features:
mlflow.sklearn.autolog() API for automatic logging of metrics, params, and models from scikit-learn model training (#3287, @harupy; #3323, #3358 @dbczumar)description (#3271, @sueann)mlflow_log_model and mlflow_load_model APIs now support XGBoost models (#3085, @lorenzwalthert)mlflow.list_run_infos fluent API for listing run metadata (#3183, @trangevi)mlflow.<flavor>.load_model against remote Databricks model registries (#3330, @sueann)Bug fixes and documentation updates:
list_artifacts returned incorrect results on GCS, preventing e.g. loading SparkML models from GCS (#3242, @santosh1994)MlflowClient to a DBFS location in a Databricks tracking server specified through the tracking_uri parameter during the initialization of MlflowClient now works properly (#3220, @sueann)FTPArtifactRepository returned artifact locations as absolute paths, rather than paths relative to the artifact repository root (#3210, @shaneing), and bug where calling log_artifacts against an FTP artifact location copied the logged directory itself into the FTP location, rather than the contents of the directory.order_by arguments to MLflow search APIs when ordering by fields whose names contain spaces (#3118, @jdlesage)mlflow.spark.log_model did not save model signature and input examples (#3151, @harupy)Small bug fixes and doc updates (#3326, #3344, #3314, #3289, #3225, #3288, #3279, #3265, #3263, #3260, #3255, #3267, #3266, #3264, #3256, #3253, #3231, #3245, #3191, #3238, #3192, #3188, #3189, #3180, #3178, #3166, #3181, #3142, #3165, #2960, #3129, #3244, #3359 @harupy; #3236, #3141, @AveshCSingh; #3295, #3163, @arjundc-db; #3241, #3200, @zhidongqu-db; #3338, #3275, @sueann; #3020, @magnus-m; #3322, #3219, @dmatrix; #3341, #3179, #3355, #3360, #3363 @smurching; #3124, @jdlesage; #3232, #3146, @ankitmathur-db; #3140, @andreakress; #3062, @cafeal; #3193, @tomasatdatabricks; 3115, @fhoering; #3328, @apurva-koti; #3046, @OlivierBondu; #3194, #3158, @dmatrix; #3250, @shivp950; #3259, @simonhessner; #3357 @dbczumar)
MLflow 1.10.0 includes several major features and improvements, in particular the release of several new model registry Python client APIs.
Features:
MlflowClient.transition_model_version_stage now supports an
archive_existing_versions argument for archiving existing staging or production model
versions when transitioning a new model version to staging or production (#3095, @harupy)set_registry_uri, get_registry_uri APIs. Setting the model registry URI causes
fluent APIs like mlflow.register_model to communicate with the model registry at the specified
URI (#3072, @sueann)MlflowClient.search_registered_models API (#2939, #3023, #3027 @ankitmathur-db; #2966, @mparkhe)MlflowClient.create_registered_model, MlflowClient.create_model_version,
MlflowClient.set_registered_model_tag, MlflowClient.set_model_version_tag,
MlflowClient.delete_registered_model_tag, and MlflowClient.delete_model_version_tag APIs (#3094, @zhidongqu-db)Bug fixes and documentation updates:
aws ecr get-login command in mlflow.sagemaker (#3036, @mrugeles)Small bug fixes and doc updates (#3112, #3102, #3089, #3103, #3096, #3090, #3049, #3080, #3070, #3078, #3083, #3051, #3050, #2875, #2982, #2949, #3121 @harupy; #3082, @ankitmathur-db; #3084, #3019, @smurching)
MLflow 1.9.1 is a patch release containing a number of bug-fixes and improvements:
Bug fixes and improvements:
AttributeError when pickling an instance of the Python MlflowClient class (#2955, @Polyphenolx)Small bug fixes and doc updates (#2998, @dbczumar; #2999, @arjundc-db)
MLflow 1.9.0 includes numerous major features and improvements, and a breaking change to experimental APIs:
Breaking Changes:
new_name argument to MlflowClient.update_registered_model
has been removed. Call MlflowClient.rename_registered_model instead. (#2946, @mparkhe)stage argument to MlflowClient.update_model_version
has been removed. Call MlflowClient.transition_model_version_stage instead. (#2946, @mparkhe)Features (MLflow Models and Flavors)
log_model and save_model APIs now support saving model signatures (the model's input and output schema)
and example input along with the model itself (#2698, #2775, @tomasatdatabricks). Model signatures are used
to reorder and validate input fields when scoring/serving models using the pyfunc flavor, mlflow models
CLI commands, or mlflow.pyfunc.spark_udf (#2920, @tomasatdatabricks and @aarondav)mlflow.fastai (#2619, #2689 @antoniomdk)mlflow.deployments API and CLI for deploying models to custom serving tools, e.g. RedisAI
(#2327, @hhsecond)Features (MLflow Projects)
KUBE_MLFLOW_TRACKING_URI for passing a different tracking server to the kubernetes job (#2874, @catapulta)Features (UI)
Features (Tracking Client and Server)
/health (#2725, @crflynn)Bug fixes and documentation updates:
NaN
values in metrics plot (#2773, @dbczumar), truncate run ID in the run name when
comparing multiple runs (#2508, @harupy)mlflow db upgrade (#2849, @hajapy)log_artifact, log_model APIs to consistently use posix paths, rather than OS-dependent
paths, when computing artifact subpaths. (#2784, @mikeoconnor0308)ValueError when scoring tf.keras 1.X models using mlflow.pyfunc.predict (#2762, @juntai-zheng)mlflow.end_run will now clear the active run even if the run cannot be marked as
terminated (e.g. because it's been deleted), (#2693, @ahmed-shariff)mlflow.spacy APIs (#2771, @harupy)Small bug fixes and doc updates (#2919, @willzhan-db; #2940, #2942, #2941, #2943, #2927, #2929, #2926, #2914, #2928, #2913, #2852, #2876, #2808, #2810, #2442, #2780, #2758, #2732, #2734, #2431, #2733, #2716, @harupy; #2915, #2897, @jwgwalton; #2856, @jkthompson; #2962, @hhsecond; #2873, #2829, #2582, @dmatrix; #2908, #2865, #2880, #2866, #2833, #2785, #2723, @smurching; #2906, @dependabot[bot]; #2724, @aarondav; #2896, @ezeeetm; #2864, @tallen94; #2726, @crflynn; #2710, #2951 @mparkhe; #2935, #2921, @ankitmathur-db; #2963, #2739, @dbczumar; #2853, @stat4jason; #2709, #2792, @juntai-zheng @juntai-zheng; #2749, @HiromuHota; #2957, #2911, #2718, @arjundc-db; #2885, @willzhan-db; #2803, #2761, @pogil; #2392, @jnmclarty; #2794, @Zethson; #2766, #2916 @shubham769)
MLflow 1.8.0 includes several major features and improvements:
Features:
mlflow.azureml.deploy API for deploying MLflow models to AzureML (#2375 @csteegz, #2711, @akshaya-a)'params.framework LIKE '%sklearn%') with the SearchRuns API & UI when running against a SQLite backend (#2217, @t-henri; #2708, @mparkhe)mlflow.spacy module with support for logging and loading spaCy models (#2242, @arocketman)docker run when running docker-based MLflow projects (#2608, @ksanjeevan)mlflow sagemaker build-and-push-container CLI & API (#2500, @AndreyBulezyuk)/health that always returns a 200 response status code, to be used to verify health of the server (#2725, @crflynn)Bug fixes:
mlflow azureml build_image CLI (#2712, @dbczumar)examples/flower_classifier/score_images_rest.py with multiple bug fixes (#2647, @tfurmston)mlflow models build-docker (#2699, @HiromuHota)mlflow.tensorflow.autolog causing erroneous deletion of TensorBoard logging directory (#2670, @dbczumar)mlflow gc subcommand in mlflow --help (#2679, @dbczumar)mlflow models build-docker was failing due to incorrect Miniconda download URL (#2685, @michaeltinsley)MLFLOW_S3_ENDPOINT_URL was ignored (#2629, @poppash)mlflow::mlflow_run() API (#2665, @lorenzwalthert)_mlflow_conda_env (#2646, @tfurmston)mlflow.pyfunc.log_model (#2618, @dbczumar)Documentation updates:
load_model utility (#2666, @pogil)log_metric to match REST API (#2654, @mparkhe)log_model function in sklearn_elasticnet_wine/train.py example (#2609, @netanel246)Small bug fixes and doc updates (#2594, @Trollgeir; #2703,#2709, @juntai-zheng; #2538, #2632, @keigohtr; #2656, #2553, @lorenzwalthert; #2622, @pingsutw; #1391, @sueann; #2613, #2598, #2534, #2723, @smurching; #2652, #2710, @mparkhe; #2706, #2653, #2639, @tomasatdatabricks; #2611, @9dogs; #2700, #2705, @aarondav; #2675, #2540, @mengxr; #2686, @RensDimmendaal; #2694, #2695, #2532, @dbczumar; #2733, #2716, @harupy; #2726, @crflynn; #2582, #2687, @dmatrix)
MLflow 1.7.2 is a patch release containing a minor change:
MLflow 1.7.1 is a patch release containing bug fixes and small changes:
Other bugfixes and doc updates (#2595, @mparkhe; #2567, @jdlesage)
MLflow 1.7.0 includes several major features and improvements, and some notable breaking changes:
MLflow support for Python 2 is now deprecated and will be dropped in a future release. At that point, existing Python 2 workflows that use MLflow will continue to work without modification, but Python 2 users will no longer get access to the latest MLflow features and bugfixes. We recommend that you upgrade to Python 3 - see https://docs.python.org/3/howto/pyporting.html for a migration guide.
Breaking changes to Model Registry REST APIs:
Model Registry REST APIs have been updated to be more consistent with the other MLflow APIs. With this release Model Registry APIs are intended to be stable until the next major version.
Other Features:
mlflow gc CLI for permanent deletion of runs (#2265, @t-henri)LogModel REST API endpoint for capturing model metadata, and call it from the Python and R clients (#2369, #2430, #2468 @tomasatdatabricks)Bug fixes and documentation updates:
UpdateExperiment REST API endpoint (#2357, @ggliem)Small bug fixes and doc updates (#2378, #2449, #2402, #2397, #2391, #2387, #2523, #2527 @harupy; #2314, @juntai-zheng; #2404, @andychow-db; #2343, @pogil; #2366, #2370, #2364, #2356, @AveshCSingh; #2373, #2365, #2363, @smurching; #2358, @jcuquemelle; #2490, @RensDimmendaal; #2506, @dbczumar; #2234 @Zangr; #2359 @lbernickm; #2525, @mparkhe)
MLflow 1.6.0 includes several new features, including a better runs table interface, a utility for easier parameter tuning, and automatic logging from XGBoost, LightGBM, and Spark. It also implements a long-awaited fix allowing @ symbols in database URLs. A complete list is below:
Features:
ag-grid which adds functionality for nested runs, serverside sorting, column reordering, highlighting, and more. (#2251, @Zangr)mlflow models build-docker (#2256, @andychow-db)Bug fixes and documentation updates:
Small bug fixes and doc updates (#2293, #2328, #2244, @harupy; #2269, #2332, #2306, #2307, #2292, #2267, #2191, #2231, @juntai-zheng; #2325, @shubham769; #2291, @sueann; #2315, #2249, #2288, #2278, #2253, #2181, @smurching; #2342, @tomasatdatabricks; #2245, @dependabot[bot]; #2338, @jcuquemelle; #2285, @avflor; #2340, @pogil; #2237, #2226, #2243, #2272, #2286, @dbczumar; #2281, @renaudhager; #2246, @avaucher; #2258, @lorenzwalthert; #2261, @smith-kyle; 2352, @dbczumar)
MLflow 1.5.0 includes several major features and improvements:
New Model Flavors and Flavor Updates:
mlflow.tensorflow.autolog() and mlflow.keras.autolog() (#2088) are now automatically ended after training and/or exporting your model. See the docs for more details (#2094, @juntai-zheng)More features and improvements:
mlflow server CLI command, you can now expose metrics on /metrics for Prometheus via the optional --activate-parameter argument (#2097, @t-henri)mlflow ui CLI command now has a --host/-h option to specify user-input IPs to bind to (#2176, @gandroz)mlflow models prepare-env command to do any preparation necessary to initialize an environment. This allows distinguishing configuration and user errors during predict/serve time (#2040, @aarondav)autolog() (#2119, @juntai-zheng)log_params() will recognize Spark ML params as keys and will now extract only the name attribute (#2064, @tomasatdatabricks)mlflow.tracking.is_tracking_uri_set() (#2026, @fhoering)Bug fixes and documentation updates:
mlflow.keras.save_model() usage with DBFS (#2216, @andychow-db)mlflow_list_artifacts() (R package) (#2200, @lorenzwalthert)models serve, models predict CLI commands against models:/ URIs (#2067, @smurching)active_run() docs to clarify it cannot be used accessing current run data (#2138, @juntai-zheng)Small bug fixes and doc updates (#2142, #2121, #2105, #2069, #2083, #2061, #2022, #2036, #1972, #2034, #1998, #1959, @harupy; #2202, @t-henri; #2085, @stbof; #2098, @AdamBarnhard; #2180, #2109, #1977, #2039, #2062, @smurching; #2013, @aestene; #2146, @joelcthomas; #2161, #2120, #2100, #2095, #2088, #2076, #2057, @juntai-zheng; #2077, #2058, #2027, @sueann; #2149, @zanitete; #2204, #2188, @andychow-db; #2110, #2053, @jdlesage; #2003, #1953, #2004, @Djailla; #2074, @nlml; #2116, @Silas-Asamoah; #1104, @jimthompson5802; #2072, @cclauss; #2221, #2207, #2157, #2132, #2114, #2063, #2065, #2055, @dbczumar; #2033, @cthoyt; #2048, @philip-khor; #2002, @jspoorta; #2000, @christang; #2078, @dennyglee; #1986, @vguerra; #2020, @dependabot[bot])
MLflow 1.4.0 includes several major features:
Model Registry (Beta). Adds an experimental model registry feature, where you can manage, version, and keep lineage of your production models. (#1943, @mparkhe, @Zangr, @sueann, @dbczumar, @smurching, @gioa, @clemens-db, @pogil, @mateiz; #1988, #1989, #1995, #2021, @mparkhe; #1983, #1982, #1967, @dbczumar)
TensorFlow updates
tf.estimator and tf.keras models has been updated to be compatible with TensorFlow 2.0. The same functionalities of autologging in TensorFlow 1.x are available in TensorFlow 2.0, namely when fitting tf.keras models and when exporting saved tf.estimator models. (#1910, @juntai-zheng)mlflow/examples/tensorflow. (#1946, @juntai-zheng)More features and improvements:
get_run, get_experiment, get_experiment_by_name to the fluent API (#1923, @fhoering)Bug fixes and documentation updates:
MLproject files case-insensitive (#1981, @smurching)models serve command now works in Windows (#1949, @rboyes)Small bug fixes and doc updates (#1932, #1935, @harupy; #1907, @marnixkoops; #1911, @HackyRoot; #1931, @jmcarp; #2007, @deniskovalenko; #1966, #1955, #1952, @Djailla; #1915, @sueann; #1978, #1894, @smurching; #1940, #1900, #1904, @mparkhe; #1914, @jerrygb; #1857, @mengxr; #2009, @dbczumar)
MLflow 1.3.0 includes several major features and improvements:
Features:
GetExperimentByName REST API endpoint, used in the Python client to speed up set_experiment and get_experiment_by_name (#1775, @smurching)mlflow.delete_run, mlflow.delete_experiment fluent APIs in the Python client(#1396, @MerelTheisenQB)mlflow experiments csv) to export runs of an experiment into a CSV (#1705, @jdlesage)mlflow.log_artifact in the Python fluent API (#1697, @apurva-koti)fit_generator Keras API (#1757, @charnger)Bug fixes and documentation updates:
mlflow_list_artifact API no longer throws when listing artifacts for an empty run (#1862, @smurching)mlflow.start_run API now throws when resuming a run whose experiment ID differs from the
active experiment ID set via mlflow.set_experiment (#1820, @mcminnra).MlflowClient.log_metric now logs metric timestamps with millisecond (as opposed to second) resolution (#1804, @ustcscgyer)Small bug fixes and doc updates (#1848, @pingsutw; #1868, @iver56; #1787, @apurvakoti; #1741, #1737, @apurva-koti; #1876, #1861, #1852, #1801, #1754, #1726, #1780, #1807 @smurching; #1859, #1858, #1851, @tomasatdatabricks; #1841, @ankitmathur-db; #1744, #1746, #1751, @mateiz; #1821, #1730, @dbczumar; #1727, cfmcgrady; #1716, @axsaucedo; #1714, @fhoering; #1405, @ancasarb; #1502, @jimthompson5802; #1720, jke-zq; #1871, @mehdi254; #1782, @stbof)
MLflow 1.2 includes the following major features and improvements:
More features and improvements
mlflow models serve CLI with the GUNICORN_CMD_ARGS environment variable (#1557, @LarsDu)python_version argument to mlflow_install for specifying the Python version (e.g. "3.5") to use within the conda environment created for installing the MLflow CLI. If python_version is unspecified, mlflow_install defaults to using Python 3.6. (#1722, @smurching)Bug fixes and documentation updates
runs field in in the GetExperiment.Response proto has been deprecated & will be removed in MLflow 2.0. Please use the Search Runs API for fetching runs instead (#1647, @dbczumar)LocalArtifactRepository (#1450, @nlaille)--no-conda flag in R no longer requires Anaconda to be installed (#1650, @spadarian).JSON, .YAML) (#1664, @ankitmathur-db)Small bug fixes and doc updates (#1663, #1719, @dbczumar; #1693, @max-allen-db; #1695, #1659, @smurching; #1675, @jdlesage; #1699, @ankitmathur-db; #1696, @aarondav; #1710, #1700, #1656, @apurva-koti)
MLflow 1.1 includes several major features and improvements:
In MLflow Tracking:
mlflow.tensorflow.autolog() will enable automatic logging of metrics and optimizer parameters from TensorFlow to MLflow. The feature will work with TensorFlow versions 1.12 <= v < 2.0. (#1520, #1601, @apurva-koti)mlflow.search_runs API. (#1483, #1548, @max-allen-db)MlflowClient API which simply wraps the REST APIs. The new fluent API allows you to create and log runs similar to how you would using the Python fluent API. (#1508, @andrewmchen)In MLflow Projects:
More features and improvements
In MLflow Tracking:
jupyter-server-proxy or outside of the root path /. Previous to MLflow 1.1, the UI could only be hosted on / since the Javascript makes requests directly to /ajax-api/.... With this patch, MLflow will make requests to ajax-api/... or a path relative to where the HTML is being served. (#1413, @xhochy)In MLflow Models:
mlflow.spark.log_model() to accept descendants of pyspark.Model (#1519, @ankitmathur-db)custom_objects. This field is semantically equivalent to custom_objects parameter of keras.models.load_model() function (#1525, @ankitmathur-db)mlflow models build-docker. #1428, @lennon310)Bug fixes and documentation updates
mlflow db upgrade should now work for MySQL backends. (#1404, @sueann)mlflow server and mlflow ui commands to work with SQLAlchemy URIs that specify a database driver. (#1411, @sueann)tf.keras module. (#1546, @tomasatdatabricks)Small bug fixes and doc updates (#1463, @mateiz; #1641, #1622, #1418, @sueann; #1607, #1568, #1536, #1478, #1406, #1408, @smurching; #1504, @LizaShak; #1490, @acroz; #1633, #1631, #1603, #1589, #1569, #1526, #1446, #1438, @apurva-koti; #1456, @Taur1ne; #1547, #1495, @aarondav; #1610, #1600, #1492, #1493, #1447, @tomasatdatabricks; #1430, @javierluraschi; #1424, @nathansuh; #1488, @henningsway; #1590, #1427, @Zangr; #1629, #1614, #1574, #1521, #1522, @dbczumar; #1577, #1514, @ankitmathur-db; #1588, #1566, @stbof; #1575, #1599, @max-allen-db; #1592, @abaveja313; #1606, @andrewmchen)
MLflow 1.0 includes many significant features and improvements. From this version, MLflow is no longer beta, and all APIs except those marked as experimental are intended to be stable until the next major version. As such, this release includes a number of breaking changes.
Major features, improvements, and breaking changes
Support for recording, querying, and visualizing metrics along a new "step" axis (x coordinate), providing increased flexibility for examining model performance relative to training progress. For example, you can now record performance metrics as a function of the number of training iterations or epochs. MLflow 1.0's enhanced metrics UI enables you to visualize the change in a metric's value as a function of its step, augmenting MLflow's existing UI for plotting a metric's value as a function of wall-clock time. (#1202, #1237, @dbczumar; #1132, #1142, #1143, @smurching; #1211, #1225, @Zangr; #1372, @stbof)
Search improvements. MLflow 1.0 includes additional support in both the API and UI for searching runs within a single experiment or a group of experiments. The search filter API supports a simplified version of the SQL WHERE clause. In addition to searching using run's metrics and params, the API has been enhanced to support a subset of run attributes as well as user and system tags. For details see Search syntax and examples for programmatically searching runs. (#1245, #1272, #1323, #1326, @mparkhe; #1052, @Zangr; #1363, @aarondav)
Logging metrics in batches. MLflow 1.0 now has a runs/log-batch REST API endpoint for logging multiple metrics, params, and tags in a single API request. The endpoint useful for performant logging of multiple metrics at the end of a model training epoch (see example), or logging of many input model parameters at the start of training. You can call this batched-logging endpoint from Python (mlflow.log_metrics, mlflow.log_params, mlflow.set_tags), R (mlflow_log_batch), and Java (MlflowClient.logBatch). (#1214, @dbczumar; see 0.9.1 and 0.9.0 for other changes)
Windows support for MLflow Tracking. The Tracking portion of the MLflow client is now supported on Windows. (#1171, @eedeleon, @tomasatdatabricks)
HDFS support for artifacts. Hadoop artifact repository with Kerberos authorization support was added, so you can use HDFS to log and retrieve models and other artifacts. (#1011, @jaroslawk)
CLI command to build Docker images for serving. Added an mlflow models build-docker CLI command for building a Docker image capable of serving an MLflow model. The model is served at port 8080 within the container by default. Note that this API is experimental and does not guarantee that the arguments nor format of the Docker container will remain the same. (#1329, @smurching, @tomasatdatabricks)
New onnx model flavor for saving, loading, and evaluating ONNX models with MLflow. ONNX flavor APIs are available in the mlflow.onnx module. (#1127, @avflor, @dbczumar; #1388, #1389, @dbczumar)
Major breaking changes:
Some of the breaking changes involve database schema changes in the SQLAlchemy tracking store. If your database instance's schema is not up-to-date, MLflow will issue an error at the start-up of mlflow server or mlflow ui. To migrate an existing database to the newest schema, you can use the mlflow db upgrade CLI command. (#1155, #1371, @smurching; #1360, @aarondav)
[Installation] The MLflow Python package no longer depends on scikit-learn, mleap, or boto3. If you want to use the scikit-learn support, the MLeap support, or s3 artifact repository / sagemaker support, you will have to install these respective dependencies explicitly. (#1223, @aarondav)
[Artifacts] In the Models API, an artifact's location is now represented as a URI. See the documentation for the list of accepted URIs. (#1190, #1254, @dbczumar; #1174, @dbczumar, @sueann; #1206, @tomasatdatabricks; #1253, @stbof)
The affected methods are:
<model-type>.load_model, azureml.build_image, sagemaker.deploy, sagemaker.run_local, pyfunc._load_model_env, pyfunc.load_pyfunc, and pyfunc.spark_udfmlflow_load_model, mlflow_rfunc_predict, mlflow_rfunc_servemlflow models serve, mlflow models predict, mlflow sagemaker, mlflow azureml (with the new --model-uri option)To allow referring to artifacts in the context of a run, MLflow introduces a new URI scheme of the form runs:/<run_id>/relative/path/to/artifact. (#1169, #1175, @sueann)
[CLI] mlflow pyfunc and mlflow rfunc commands have been unified as mlflow models (#1257, @tomasatdatabricks; #1321, @dbczumar)
[CLI] mlflow artifacts download, mlflow artifacts download-from-uri and mlflow download commands have been consolidated into mlflow artifacts download (#1233, @sueann)
[Runs] Expose RunData fields (metrics, params, tags) as dictionaries. Note that the mlflow.entities.RunData constructor still accepts lists of metric/param/tag entities. (#1078, @smurching)
[Runs] Rename run_uuid to run_id in Python, Java, and REST API. Where necessary, MLflow will continue to accept run_uuid until MLflow 1.1. (#1187, @aarondav)
Other breaking changes
CLI:
--file-store option is deprecated in mlflow server and mlflow ui commands. (#1196, @smurching)--host and --gunicorn-opts options are removed in the mlflow ui command. (#1267, @aarondav)mlflow experiments subcommands, notably --experiment-name and --experiment-id are now options (#1235, @sueann)mlflow sagemaker list-flavors has been removed (#1233, @sueann)Tracking:
user property of Runs has been moved to tags (similarly, the run_name, source_type, source_name properties were moved to tags in 0.9.0). (#1230, @acroz; #1275, #1276, @aarondav)mlflow_create_experiment now returns a string experiment ID instead of an experiment, and the other APIs return NULL. (#1246, @smurching)RunInfo.status's type is now string. (#1264, @mparkhe)RunInfo properties from start_run. (#1220, @aarondav)RunInfo fields run_name, source_name, source_version, source_type, and entry_point_name and the SearchRuns field anded_expressions have been removed from the REST API and Python, Java, and R tracking client APIs. They are still available as tags, documented in the REST API documentation. (#1188, @aarondav)Models and deployment:
In Python, require arguments as keywords in log_model, save_model and add_to_model methods in the tensorflow and mleap modules to avoid breaking changes in the future (#1226, @sueann)
Remove the unsupported jars argument from ``spark.log_model` in Python (#1222, @sueann)
Introduce pyfunc.load_model to be consistent with other Models modules. pyfunc.load_pyfunc will be deprecated in the near future. (#1222, @sueann)
Rename dst_path parameter in pyfunc.save_model to path (#1221, @aarondav)
R flavors refactor (#1299, @kevinykuo)
mlflow_predict() has been added in favor of mlflow_predict_model() and mlflow_predict_flavor() which have been removed.mlflow_save_model() is now a generic and mlflow_save_flavor() is no longer needed and has been removed.mlflow_predict() takes ... to pass to underlying predict methods.mlflow_load_flavor() now has the signature function(flavor, model_path) and flavor authors should implement mlflow_load_flavor.mlflow_flavor_{FLAVORNAME}. The flavor argument is inferred from the inputs of user-facing mlflow_load_model() and does not need to be explicitly provided by the user.Projects:
projects.run parameters for generality and consistency. (#1222, @sueann)mlflow_run API for running MLflow projects has been modified to more closely reflect the Python mlflow.run API. In particular, the order of the uri and entry_point arguments has been reversed and the param_list argument has been renamed to parameters. (#1265, @smurching)R:
mlflow_snapshot and mlflow_restore_snapshot APIs. Also, the r_dependencies argument used to specify the path to a packrat r-dependencies.txt file has been removed from all APIs. (#1263, @smurching)mlflow_cli and crate APIs are now private. (#1246, @smurching)Environment variables:
Prefix environment variables with "MLFLOW_" (#1268, @aarondav). Affected variables are:
_MLFLOW_SERVER_FILE_STORE, _MLFLOW_SERVER_ARTIFACT_ROOT, _MLFLOW_STATIC_PREFIXMLFLOW_SAGEMAKER_DEPLOY_IMG_URL, MLFLOW_DEPLOYMENT_FLAVOR_NAMEMLFLOW_SCORING_SERVER_MIN_THREADS, MLFLOW_SCORING_SERVER_MAX_THREADSMore features and improvements
db+driver is now a valid tracking backend URI scheme (#1297, @drewmcdonald; #1374, @mparkhe)GetMetricHistory client API in Python and Java corresponding to the REST API. (#1178, @smurching)view_type argument to MlflowClient.list_experiments() in Python. (#1212, @smurching)mlflow.log_params and mlflow.set_tags in Python can now be non-string types (e.g., numbers), and they are automatically converted to strings. (#1364, @aarondav)SearchRuns API and UI for faster load (#1125, @mparkhe; #1154, @andrewmchen)ArtifactRepository.download_artifacts no longer copies local artifacts (#1307, @andrewmchen; #1383, @dbczumar)gs://bucket/path files are now supported by the mlflow artifacts download CLI command and as parameters of type path in MLProject files. (#1168, @drewmcdonald)mlflow as a dependency by default. In addition, we introduce a flag --install-mlflow users can pass to mlflow models serve and mlflow models predict methods to force installation of the latest version of MLflow into the model's environment. (#1308, @tomasatdatabricks)tensorflow, scikit-learn, and pytorch inside individual methods, ensuring that these modules can be imported and explored even if the dependencies have not been installed on your system. Also, the DEFAULT_CONDA_ENVIRONMENT module variable has been replaced with a get_default_conda_env() function for each flavor. (#1238, @dbczumar)mlflow.keras.load_model that will be passed through to keras.load_model. (#1330, @yorickvP)gunicorn for serving Python models. This does not change the user interface. (#1322, @tomasatdatabricks)preview component. The preview paths will be deprecated in a future version of MLflow. (#1236, @mparkhe)Bug fixes and documentation updates
SQLAlchemyStore (#1167, @smurching)file: URIs for the -—backend-store-uri option in mlflow server and mlflow ui CLI commands (#1171, @eedeleon, @tomasatdatabricks)log_artifact failures due to existing directory on FTP server (#1327, @kafendt)SQLite database file with Docker container (#1347, @tomasatdatabricks; #1375, @aarondav)sendPost and sendGet as experimental (#1186, @aarondav)azureml.build_image as experimental (#1222, #1233 @sueann)mlflow_get_run in R documentation (#1258, @dbczumar)Small bug fixes and doc updates (#1359, #1350, #1331, #1301, #1270, #1271, #1180, #1144, #1135, #1131, #1358, #1369, #1368, #1387, @aarondav; #1373, @akarloff; #1287, #1344, #1309, @stbof; #1312, @hchiuzhuo; #1348, #1349, #1294, #1227, #1384, @tomasatdatabricks; #1345, @withsmilo; #1316, @ancasarb; #1313, #1310, #1305, #1289, #1256, #1124, #1097, #1162, #1163, #1137, #1351, @smurching; #1319, #1244, #1224, #1195, #1194, #1328, @dbczumar; #1213, #1200, @Kublai-Jing; #1304, #1320, @andrewmchen; #1311, @Zangr; #1306, #1293, #1147, @mateiz; #1303, @gliptak; #1261, #1192, @eedeleon; #1273, #1259, @kevinykuo; #1277, #1247, #1243, #1182, #1376, @mparkhe; #1210, @vgod-dbx; #1199, @ashtuchkin; #1176, #1138, #1365, @sueann; #1157, @cclauss; #1156, @clemens-db; #1152, @pogil; #1146, @srowen; #875, #1251, @jimthompson5802)