{"id":1218,"date":"2019-06-13T00:00:00","date_gmt":"2019-06-13T00:00:00","guid":{"rendered":"https:\/\/azure.microsoft.com\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow"},"modified":"2025-06-24T07:18:05","modified_gmt":"2025-06-24T14:18:05","slug":"make-your-data-science-workflow-efficient-and-reproducible-with-mlflow","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/","title":{"rendered":"Make your data science workflow efficient and reproducible with MLflow"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>This blog post was co-authored by Parashar Shah, Senior Program Manager, Applied AI Developer COGS.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image has-custom-border\"><img decoding=\"async\" src=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp\" alt=\"Title card - Make your data science workflow efficient and reproducible with MLFlow\" style=\"border-radius:0px\" title=\"Title card - Make your data science workflow efficient and reproducible with MLFlow\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates. With all the bookkeeping involved, it is easy to miss a test case, or waste time by repeating an experiment unnecessarily. After they finalize the model that they want to use for predictions, they have to do multiple things in order to create a deployment environment and then create a webservice (http endpoint) from their model.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For small proof-of-concept machine learning projects, data scientists might be able to keep track of their project using manual bookkeeping with spreadsheets and versioned copies of training scripts. However, as their project grows, and they work together with other data scientists as a team, they\u2019ll need a better tracking solution that allows them to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Analyze the performance of the model while tuning parameters.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Query the history of experimentation to find the best models to take to production.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Revisit and follow up on promising threads of experimentation.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Automatically link training runs with related metadata.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">View snapshots and audit previous training runs.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Once a data scientist has created a model, a model management, and model deployment solution is needed. This solution should allow for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Storing multiple models and multiple versions of the same model in a common workspace.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Easy deployment and creation of a scalable web service.<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Monitoring the deployed web service.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"azure-machine-learning-and-mlflow\">Azure Machine Learning and MLflow<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/machine-learning-service\/\" target=\"_blank\" rel=\"noopener\">Azure Machine Learning service<\/a> provides data scientists and developers with the functionality to track their experimentation, deploy the model as a webservice, and monitor the webservice through existing Python SDK, CLI, and Azure Portal interfaces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/mlflow.org\/\" target=\"_blank\" rel=\"noopener\">MLflow<\/a> is an open source project that enables data scientists and developers to instrument their machine learning code to track metrics and artifacts. Integration with MLflow is ideal for keeping training code cloud-agnostic while Azure Machine Learning service provides the scalable compute and centralized, secure management and tracking of runs and artifacts.<\/p>\n\n\n\n<figure class=\"wp-block-image has-custom-border\"><img decoding=\"async\" src=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/84a77936-de08-4b15-aec7-e7268aede7e7.webp\" alt=\"A diagram showing MLFlow being used for model tracking and performance metric logging\" style=\"border-radius:0px\" title=\"A diagram showing MLFlow being used for model tracking and performance metric logging\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Data scientists and developers can take their existing code, instrumented using MLflow, and simply submit it as a training run to Azure Machine Learning. Behind the scenes, Azure Machine Learning plug-in for MLflow recognizes they\u2019re within a managed training run and connects MLflow tracking to their Azure Machine Learning Workspace. Once the training run has completed, they can view the metrics and artifacts from the run at Azure Portal. Later, they can query the history of your experimentation to compare the models and find the best ones.<\/p>\n\n\n\n<figure class=\"wp-block-image has-custom-border\"><img decoding=\"async\" src=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/90e16f9f-6b1e-40d1-9c04-e9d0fff55015.webp\" alt=\"A diagram showing MLFlow being used for model deployment\" style=\"border-radius:0px\" title=\"A diagram showing MLFlow being used for model deployment\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Once the best model has been identified it can be deployed to a Kubernetes cluster (Azure Kubernetes service), from within the same environment using MLflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"example-use-case\">Example use case<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">At <a href=\"https:\/\/databricks.com\/session\/accelerating-the-machine-learning-lifecycle-with-mlflow-1-0\" target=\"_blank\" rel=\"noopener\">Spark + AI Summit 2019<\/a>, our team presented an example of training and deploying an image classification model using MLflow integrated with Azure Machine Learning. We used the&nbsp;<a href=\"https:\/\/pytorch.org\/\" target=\"_blank\" rel=\"noopener\">PyTorch<\/a> deep learning library to train a digit classification model against MNIST data, while tracking the metrics using MLflow and monitoring them in Azure Machine Learning Workspace. We then saved the model using MLflow\u2019s framework-aware API for PyTorch and deployed it to Azure Container Instance using Azure Machine Learning Model Management APIs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"where-can-i-use-mlflow-with-azure-machine-learning\">Where can I use MLflow with Azure Machine Learning?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One of the benefits of Azure Machine Learning service is that it lets data scientists and developers scale up and scale out their training by using compute resources on Azure cloud. They can use MLflow with Azure Machine Learning to track runs on:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Their local computer<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Azure Databricks<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Machine Learning Compute cluster<\/li>\n\n\n\n<li class=\"wp-block-list-item\">CPU or GPU enabled virtual machine<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">MLflow can be used with Azure Machine Learning to deploy models to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\">Azure Container Instance (ACI)<\/li>\n\n\n\n<li class=\"wp-block-list-item\">Azure Kubernetes Service (AKS)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"getting-started\">Getting started<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following resources give instructions and examples how to get started:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/machine-learning\/service\/how-to-use-mlflow\" target=\"_blank\" rel=\"noopener\">Microsoft documentation<\/a>\u00a0&#8220;How to use MLflow with Azure Machine Learning service (preview).&#8221;<\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/mlflow.org\/docs\/latest\/index.html\" target=\"_blank\" rel=\"noopener\">MLflow documentation<\/a>\u00a0including a quickstart guide, tutorials, and other key concept information.<\/li>\n\n\n\n<li class=\"wp-block-list-item\"><a href=\"https:\/\/aka.ms\/azureml-mlflow-examples\" target=\"_blank\" rel=\"noopener\">Example Jupyter Notebooks<\/a>\u00a0from our GitHub repository.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","footnotes":"","msx_community_cta_settings":[]},"categories":[1454,1474,1467,1470,1485],"tags":[],"audience":[3057,3055,3056],"content-type":[1511],"product":[1544,1472,1493,1625],"tech-community":[],"topic":[],"coauthors":[497],"class_list":["post-1218","post","type-post","status-publish","format-standard","hentry","category-ai-machine-learning","category-analytics","category-compute","category-containers","category-internet-of-things","audience-data-professionals","audience-developers","audience-it-implementors","content-type-best-practices","product-azure-databricks","product-azure-kubernetes-service-aks","product-azure-machine-learning","product-container-services","review-flag-1680286581-364","review-flag-machi-1680286585-314"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Make your data science workflow efficient and reproducible with MLflow | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Make your data science workflow efficient and reproducible with MLflow | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Azure Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/microsoftazure\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-13T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-24T14:18:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp\" \/>\n<meta name=\"author\" content=\"Roope Astala\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@azure\" \/>\n<meta name=\"twitter:site\" content=\"@azure\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roope Astala\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/roope-astala\/\",\"@type\":\"Person\",\"@name\":\"Roope Astala\"}],\"headline\":\"Make your data science workflow efficient and reproducible with MLflow\",\"datePublished\":\"2019-06-13T00:00:00+00:00\",\"dateModified\":\"2025-06-24T14:18:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/\"},\"wordCount\":719,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp\",\"articleSection\":[\"AI + machine learning\",\"Analytics\",\"Compute\",\"Containers\",\"Internet of things\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/\",\"name\":\"Make your data science workflow efficient and reproducible with MLflow | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp\",\"datePublished\":\"2019-06-13T00:00:00+00:00\",\"dateModified\":\"2025-06-24T14:18:05+00:00\",\"description\":\"When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates.\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI + machine learning\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/ai-machine-learning\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Make your data science workflow efficient and reproducible with MLflow\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"name\":\"Microsoft Azure Blog\",\"description\":\"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.\",\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\",\"name\":\"Microsoft Azure Blog\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"width\":512,\"height\":512,\"caption\":\"Microsoft Azure Blog\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/microsoftazure\",\"https:\/\/x.com\/azure\",\"https:\/\/www.instagram.com\/microsoftdeveloper\/\",\"https:\/\/www.linkedin.com\/company\/16188386\",\"https:\/\/www.youtube.com\/user\/windowsazure\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117\",\"name\":\"shakir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"caption\":\"shakir\"},\"sameAs\":[\"https:\/\/azure.microsoft.com\"],\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Make your data science workflow efficient and reproducible with MLflow | Microsoft Azure Blog","description":"When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/","og_locale":"en_US","og_type":"article","og_title":"Make your data science workflow efficient and reproducible with MLflow | Microsoft Azure Blog","og_description":"When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates.","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2019-06-13T00:00:00+00:00","article_modified_time":"2025-06-24T14:18:05+00:00","og_image":[{"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp","type":"","width":"","height":""}],"author":"Roope Astala","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Roope Astala","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/roope-astala\/","@type":"Person","@name":"Roope Astala"}],"headline":"Make your data science workflow efficient and reproducible with MLflow","datePublished":"2019-06-13T00:00:00+00:00","dateModified":"2025-06-24T14:18:05+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/"},"wordCount":719,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage"},"thumbnailUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp","articleSection":["AI + machine learning","Analytics","Compute","Containers","Internet of things"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/","name":"Make your data science workflow efficient and reproducible with MLflow | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage"},"thumbnailUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp","datePublished":"2019-06-13T00:00:00+00:00","dateModified":"2025-06-24T14:18:05+00:00","description":"When data scientists work on building a machine learning model, their experimentation often produces lots of metadata: metrics of models you tested, actual model files, as well as artifacts such as plots or log files. They often try different models and parameters, for example random forests of varying depth, linear models with different regularization rates, or deep learning models with different architectures trained using different learning rates.","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#primaryimage","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2019\/06\/94349e27-0bc1-44d9-901e-8f060c2d052e.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/make-your-data-science-workflow-efficient-and-reproducible-with-mlflow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"AI + machine learning","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/ai-machine-learning\/"},{"@type":"ListItem","position":3,"name":"Make your data science workflow efficient and reproducible with MLflow"}]},{"@type":"WebSite","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","name":"Microsoft Azure Blog","description":"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.","publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization","name":"Microsoft Azure Blog","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","width":512,"height":512,"caption":"Microsoft Azure Blog"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/microsoftazure","https:\/\/x.com\/azure","https:\/\/www.instagram.com\/microsoftdeveloper\/","https:\/\/www.linkedin.com\/company\/16188386","https:\/\/www.youtube.com\/user\/windowsazure"]},{"@type":"Person","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117","name":"shakir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4","url":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","caption":"shakir"},"sameAs":["https:\/\/azure.microsoft.com"],"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/"}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Azure Blog","distributor_original_site_url":"https:\/\/azure.microsoft.com\/en-us\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/1218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/comments?post=1218"}],"version-history":[{"count":1,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/1218\/revisions"}],"predecessor-version":[{"id":43052,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/1218\/revisions\/43052"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=1218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=1218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=1218"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=1218"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=1218"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=1218"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=1218"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=1218"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=1218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}