{"id":2105,"date":"2019-12-02T02:34:30","date_gmt":"2019-12-02T02:34:30","guid":{"rendered":"http:\/\/kusuaks7\/?p=1710"},"modified":"2024-02-19T11:04:34","modified_gmt":"2024-02-19T11:04:34","slug":"why-is-machine-learning-deployment-hard","status":"publish","type":"post","link":"https:\/\/www.experfy.com\/blog\/ai-ml\/why-is-machine-learning-deployment-hard\/","title":{"rendered":"Why is Machine Learning Deployment Hard?"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2105\" class=\"elementor elementor-2105\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-5b725439 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5b725439\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-595505d4\" data-id=\"595505d4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-10fd8017 elementor-widget elementor-widget-text-editor\" data-id=\"10fd8017\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"7baf\" data-selectable-paragraph=\"\">After several AI projects, I realized that deploying Machine Learning (ML) models at scale is one of the most important challenges for companies willing to create value through AI, and as models get more complex it\u2019s only getting harder.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-66a3741 elementor-widget elementor-widget-text-editor\" data-id=\"66a3741\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"2ba7\" data-selectable-paragraph=\"\">Based on my experience as a consultant, only a very small percentage of ML projects make it to production. An AI project can fail for many reasons among which deployment. It is key for every decision-maker to fully understand how deployment works and how to reduce the risk of failure when reaching this crucial step.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc81c3f elementor-widget elementor-widget-text-editor\" data-id=\"bc81c3f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<blockquote>\n<p id=\"894f\" data-selectable-paragraph=\"\">A deployed model can be defined as any unit of code that is seamlessly integrated into a production environment, and can take in an input and return an output.<\/p>\n<\/blockquote>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-438ccd3 elementor-widget elementor-widget-text-editor\" data-id=\"438ccd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"7679\" data-selectable-paragraph=\"\">I have seen that in order to get their work into production, data scientists typically must hand over his or her data model to engineering for implementation. And it\u2019s during this step that some of the most common data science problems appear.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-650c773 elementor-widget elementor-widget-heading\" data-id=\"650c773\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><h1 id=\"f730\" data-selectable-paragraph=\"\">Challenges<\/h1><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-f0ff61a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f0ff61a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4cadd79\" data-id=\"4cadd79\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a38032e elementor-widget elementor-widget-text-editor\" data-id=\"a38032e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"3f3b\" data-selectable-paragraph=\"\">Machine Learning has a few unique features that makes deploying it at scale harder. This is some of the issues we are dealing with (<strong>others exist<\/strong>):<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-55a5a92 elementor-widget elementor-widget-heading\" data-id=\"55a5a92\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\"><h3 id=\"2198\" data-selectable-paragraph=\"\"><strong><em>Managing Data Science Languages<\/em><\/strong><\/h3><\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0fa4466 elementor-widget elementor-widget-text-editor\" data-id=\"0fa4466\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"58d4\" data-selectable-paragraph=\"\">As you may know, ML applications often comprise of elements written in different\u00a0<strong>programming languages..<\/strong>. that don\u2019t always interact well with each other. I have seen, many times, a ML pipeline that starts in R, continues in Python, and ends in another language.<\/p>\n<p id=\"a022\" data-selectable-paragraph=\"\">In general, Python and R are by far the most popular languages for ML application but I noticed that production models are rarely deployed in those languages for various reasons including speed. Porting a Python or R model into a production language like C++ or Java is complicated, and often results in reduced performance (speed, accuracy, etc.) of the original model.<\/p>\n<p id=\"e696\" data-selectable-paragraph=\"\">R packages can break when new versions of the software come out). In addition, R is slow and it\u2019s not going to churn through big data efficiently.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f675e6c elementor-widget elementor-widget-text-editor\" data-id=\"f675e6c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"44f7\" data-selectable-paragraph=\"\">It\u2019s a great language for prototyping, as it allows for easy interactions and problem-solving, but it needs to be translated to Python or C++ or Java for production.<\/p>\n<p id=\"0baa\" data-selectable-paragraph=\"\">Containerization technologies, such as Docker, can solve incompatibility and portability challenges introduced by the multitude of tools. However, automatic dependency checking, error checking, testing, and build tools will not be able to tackle problems across the language barrier.<\/p>\n<p id=\"fef2\" data-selectable-paragraph=\"\">Reproducibility is also a challenge. Indeed, data scientists may build many versions of a model each using different programming languages, libraries or different versions of the same library.\u00a0<strong>It is difficult to track these dependencies manually.<\/strong>\u00a0To solve these challenges, a ML lifecycle tool is required that can automatically track and log these dependencies during the training phase as configuration as code and later bundle them along with the trained model in a ready-to-deploy artifact.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f97a9cd elementor-widget elementor-widget-text-editor\" data-id=\"f97a9cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"451e\" data-selectable-paragraph=\"\">I would recommend you rely on a tool or platform that can instantly translate code from one language to another or allow your data science team to deploy models behind an API so they can be integrated anywhere.<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-67e7a66 elementor-widget elementor-widget-heading\" data-id=\"67e7a66\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\"><h3 id=\"7bd9\" data-selectable-paragraph=\"\"><strong><em>Compute Power and GPU\u2019s<\/em><\/strong><\/h3><\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f4f010 elementor-widget elementor-widget-text-editor\" data-id=\"1f4f010\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"6eda\" data-selectable-paragraph=\"\">Neural nets are often very deep, which means that training and using them for inference takes up a lot of compute power. Usually, we want our algorithms to run fast, for a lot of users and that can be an obstacle.<\/p>\n<p id=\"1a2d\" data-selectable-paragraph=\"\">Moreover, many production ML today relies on GPUs. However, they are scarce and expensive, which easily adds another layer of complexity to the task of scaling ML.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a57617b elementor-widget elementor-widget-heading\" data-id=\"a57617b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\"><h3 id=\"690a\" data-selectable-paragraph=\"\"><strong>Portability.<\/strong><\/h3><\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8de8926 elementor-widget elementor-widget-text-editor\" data-id=\"8de8926\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"87d2\" data-selectable-paragraph=\"\">Another interesting challenge of model deployment is the lack of portability. I noticed that it is often a problem with legacy analytics systems. Lacking the capability to easily migrate a software component to another host environment and run it there, organizations can become locked into a particular platform. This can create barriers for data scientists when creating models and deploying them.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-650eb89 elementor-widget elementor-widget-heading\" data-id=\"650eb89\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\"><h3 id=\"897e\" data-selectable-paragraph=\"\"><strong>Scalability.<\/strong><\/h3><\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9364def elementor-widget elementor-widget-text-editor\" data-id=\"9364def\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"74a2\" data-selectable-paragraph=\"\">Scalability is a real issue for many AI projects. Indeed, you need to make sure that your models will be able to scale and meet increases in performance and application demand in production. At the beginning of a project, we usually rely on relatively static data on a manageable scale. As the model moves forward to production, it is typically exposed to larger volumes of data and data transport modes. Your team will need several tools to both monitor and solve for the performance and scalability challenges that will show up over time.<\/p>\n<p id=\"28d1\" data-selectable-paragraph=\"\"><strong>I\u00a0<\/strong>believe that issues of scalability can be solved by adopting a consistent, microservices-based approach to production analytics. Teams should be able to quickly migrate models from batch to on-demand to streaming via simple configuration changes. Similarly, teams should have options to scale compute and memory footprints to support more complex workloads.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bccb709 elementor-widget elementor-widget-heading\" data-id=\"bccb709\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\n<h3 id=\"5044\" data-selectable-paragraph=\"\"><strong><em>Machine Learning Compute Works In Spikes<\/em><\/strong><\/h3><\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e3b1ca elementor-widget elementor-widget-text-editor\" data-id=\"7e3b1ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"7bc1\" data-selectable-paragraph=\"\">Once your algorithms are trained, they\u2019re not always used \u2014 your users will only call them when they need them.<\/p>\n<p id=\"31ae\" data-selectable-paragraph=\"\">That can mean that you\u2019re only supporting 100 API calls at 8:00 AM, but 10.000 at 8:30 AM.<\/p>\n<p id=\"cb93\" data-selectable-paragraph=\"\"><strong>From experience, I can tell you that scaling up and down while making sure not to pay for servers you don\u2019t need is a challenge.<\/strong><\/p>\n<p id=\"a5e0\" data-selectable-paragraph=\"\">For all these reasons, only a few data science projects end up actually making it into production systems.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4d4f26 elementor-widget elementor-widget-heading\" data-id=\"f4d4f26\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><h1 id=\"da4c\" data-selectable-paragraph=\"\">Robustify to Operationalize<\/h1><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dcf70ea elementor-widget elementor-widget-text-editor\" data-id=\"dcf70ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"f87f\" data-selectable-paragraph=\"\">We always spend a lot of time trying to make our model ready. Robustifying a model consists of taking a prototype and preparing it so that it can actually serve the number of users in question, which often requires considerable amounts of work.<\/p>\n<p id=\"38f7\" data-selectable-paragraph=\"\">In many cases, the entire model needs to be re-coded in a language suitable for the architecture in place. That point alone is very often a source of massive and painful work, which results in many months&#8217; worth of delays in deployment. Once done, it has to be integrated into the company\u2019s IT architecture, with all the libraries issues previously discussed. Add to that the often difficult task of accessing data where it sits in production, often burdened with technical and\/or organizational data silos.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d956a8 elementor-widget elementor-widget-heading\" data-id=\"6d956a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><h1 id=\"8c71\" data-selectable-paragraph=\"\">More challenges<\/h1><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-92ad8dd elementor-widget elementor-widget-text-editor\" data-id=\"92ad8dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"e407\" data-selectable-paragraph=\"\">During my projects, I also noticed the following issues:<\/p>\n\n<ul>\n \t<li id=\"a40d\" data-selectable-paragraph=\"\">If we have an input feature which we change, then the importance, weights or use of the remaining features may all change as well or not. ML systems must be designed so that feature engineering and selection changes are easily tracked.<\/li>\n \t<li id=\"b71c\" data-selectable-paragraph=\"\">When models are constantly iterated on and subtly changed, tracking config updates whilst maintaining config clarity and flexibility becomes an additional burden.<\/li>\n \t<li id=\"7901\" data-selectable-paragraph=\"\">Some data inputs can change over time. We need a way to understand and track these changes in order to be able to fully understand our system.<\/li>\n \t<li id=\"11bc\" data-selectable-paragraph=\"\">Several things can go wrong in ML applications that will not be identified by traditional unit\/integration tests. Deploying the wrong version of a model, forgetting a feature, and training on an outdated dataset are just a few examples.<\/li>\n<\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-49ef4bf elementor-widget elementor-widget-heading\" data-id=\"49ef4bf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><h1 id=\"7c1b\" data-selectable-paragraph=\"\">Testing &amp; Validation Issues<\/h1><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-18471d8 elementor-widget elementor-widget-text-editor\" data-id=\"18471d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"cf32\" data-selectable-paragraph=\"\">As you may already know, models evolve continuously due to data changes, new methods, etc. As a consequence, every time such a change happens, we must re-validate the model performance. These validations steps introduce several challenges:<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b3c72d elementor-widget elementor-widget-image\" data-id=\"3b3c72d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/819\/1*Z_uoyVPP9pEGobz1Zy-hcA.png\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1287e58 elementor-widget elementor-widget-text-editor\" data-id=\"1287e58\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"a255\" data-selectable-paragraph=\"\">Apart from the validation of models in offline tests, assessing the performance of models in production is very important.\u00a0<strong>Usually, we plan this in the deployment strategy and monitoring sections.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bdcd547 elementor-widget elementor-widget-text-editor\" data-id=\"bdcd547\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<blockquote>ML models need to be updated more frequently than regular software applications.<\/blockquote>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64d5659 elementor-widget elementor-widget-heading\" data-id=\"64d5659\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><h2 id=\"5fd1\" data-selectable-paragraph=\"\">Automated ML Platform<\/h2><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a465f2f elementor-widget elementor-widget-text-editor\" data-id=\"a465f2f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"cdcc\" data-selectable-paragraph=\"\">Some of you might have heard about automated machine learning platforms. It could be a good solution to produce models faster. Furthermore, the platform can support the development and comparison of multiple models, so the business can choose the one model that best fits their requirements for predictive accuracy, latency and compute resources.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c662620 elementor-widget elementor-widget-text-editor\" data-id=\"c662620\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<blockquote><mark><strong>As many as 90% of all enterprise ML models can be developed automatically. Data scientists can be engaged to work with business people to develop the small percentage of models currently beyond the reach of automation.<\/strong><\/mark><\/blockquote>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4dee665 elementor-widget elementor-widget-text-editor\" data-id=\"4dee665\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"9437\" data-selectable-paragraph=\"\">Many models experience drift (degrading in performance over time). As such, deployed models need to be monitored. Each deployed model should log all inputs, outputs, and exceptions. A model deployment platform needs to provide for log storage and model performance visualization. Keeping a close eye on model performance is key to effectively managing the lifecycle of a machine learning model.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1371099 elementor-widget elementor-widget-image\" data-id=\"1371099\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/803\/1*fxH3sIQXb90_aWvvqVrHIw.png\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1683dbd elementor-widget elementor-widget-text-editor\" data-id=\"1683dbd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\" data-selectable-paragraph=\"\"><span style=\"font-size: 11px;\">Key elements that must be monitored through a deployment platform<\/span><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9359179 elementor-widget elementor-widget-heading\" data-id=\"9359179\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><h1 id=\"eb12\" data-selectable-paragraph=\"\">Release Strategies<\/h1><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1da858d elementor-widget elementor-widget-text-editor\" data-id=\"1da858d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"17de\" data-selectable-paragraph=\"\">Explore the many different ways to deploy your software (<a href=\"https:\/\/medium.com\/@copyconstruct\/monitoring-in-the-time-of-cloud-native-c87c7a5bfa3e\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"broken_link\">this is a great long read<\/a>\u00a0on the subject), with \u201cshadow mode\u201d and \u201cCanary\u201d deployments being particularly useful for ML applications. In \u201cShadow Mode\u201d, you capture the inputs and predictions of a new model in production without actually serving those predictions. Instead, you are free to analyze the results, with no significant consequences if a bug is detected.<\/p>\n<p id=\"ba39\" data-selectable-paragraph=\"\">As your architecture matures, look to enable gradual or \u201cCanary\u201d releases. Such a practice is when you can release to a small fraction of customers, rather than \u201call or nothing\u201d. This requires more mature tooling, but it minimizes mistakes when they happen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4fa7598 elementor-widget elementor-widget-heading\" data-id=\"4fa7598\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><h1 id=\"6aa5\" data-selectable-paragraph=\"\">Conclusion<\/h1><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dac3fe0 elementor-widget elementor-widget-text-editor\" data-id=\"dac3fe0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p id=\"1f6c\" data-selectable-paragraph=\"\">Machine learning is still in its early stages. Indeed, both software and hardware components are constantly evolving to meet the current demands of ML.<\/p>\n<p id=\"c6aa\" data-selectable-paragraph=\"\">Docker\/Kubernetes and micro-services architecture can be employed to solve the heterogeneity and infrastructure challenges. Existing tools can greatly solve some problems individually. I believe that bringing all these tools together to operationalize ML is the biggest challenge today.<\/p>\n<p id=\"4e02\" data-selectable-paragraph=\"\">Deploying Machine Learning is and will continue to be difficult, and that\u2019s just a reality that organizations are going to need to deal with. Thankfully though, a few new architectures and products are helping data scientists. Moreover, as more companies are scaling data science operations, they are also implementing tools that make model deployment easier.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Machine learning is still in its early stages. Indeed, both software and hardware components are constantly evolving to meet the current demands of ML. Deploying Machine Learning is and will continue to be difficult, and that&rsquo;s just a reality that organizations are going to need to deal with. Thankfully though, a few new architectures and products are helping data scientists. Moreover, as more companies are scaling data science operations, they are also implementing tools that make model deployment easier.<\/p>\n","protected":false},"author":498,"featured_media":2921,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[183],"tags":[92],"ppma_author":[3130],"class_list":["post-2105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-ml","tag-machine-learning"],"authors":[{"term_id":3130,"user_id":498,"is_guest":0,"slug":"alexandre-gonfalonieri","display_name":"Alexandre Gonfalonieri","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","user_url":"","last_name":"Gonfalonieri","first_name":"Alexandre","job_title":"","description":"Alexandre Gonfalonieri&nbsp;is a Consultant at <a href=\"https:\/\/www.cks-consulting.com\/\">CKS Consulting<\/a>, a Management Consulting firm."}],"_links":{"self":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts\/2105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/users\/498"}],"replies":[{"embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/comments?post=2105"}],"version-history":[{"count":5,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts\/2105\/revisions"}],"predecessor-version":[{"id":36032,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/posts\/2105\/revisions\/36032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/media\/2921"}],"wp:attachment":[{"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/media?parent=2105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/categories?post=2105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/tags?post=2105"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.experfy.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}