{"id":78629,"date":"2026-09-17T14:49:58","date_gmt":"2026-09-17T14:49:58","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=78629"},"modified":"2026-09-17T14:50:00","modified_gmt":"2026-09-17T14:50:00","slug":"why-machine-learning-projects-need-more-than-a-good-model","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/why-machine-learning-projects-need-more-than-a-good-model\/","title":{"rendered":"Why Machine Learning Projects Need More than a Good Model"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A machine learning model can be the most impressive part of an AI project &#8211; and yet a small part of what&#8217;s needed to make that project useful.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A model may achieve 95% accuracy, but the real engineering questions start afterwards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How will it receive production data? Where will inference run? How will it communicate with the rest of the application? What happens when the data changes? How will the team know that predictions have started to degrade? And what happens when the model needs to be retrained?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These questions are easy to postpone when a project is still in the experimentation stage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But become much harder to ignore when the model has to serve real users.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the kind of work <a href=\"https:\/\/data-science-ua.com\">Data Science UA<\/a> development company can take on: combining data science and software engineering to develop and integrate AI\/ML solutions rather than treating the trained model as the final deliverable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The benefit is not simply having more technical skills on one team.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is reducing the number of handoffs between experimentation and production.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A model does not exist in isolation<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a real product, the model is one component of a larger system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A typical ML solution may look something like:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Data \u2192 preprocessing \u2192 model \u2192 API \u2192 application \u2192 monitoring \u2192 feedback<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every part of this chain affects the final result.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Take a recommendation system as an example.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The model itself might be perfectly fine, but if the data pipeline sends incomplete information, recommendations can become irrelevant. If inference takes too long, the application becomes slower. If the model is deployed without proper monitoring, the team may not notice that user behavior has changed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The model did not necessarily fail, but the system around it did.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This distinction becomes particularly important as companies move from ML experiments to production AI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The data problem does not end after training<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the biggest differences between a machine learning project and traditional software is that the system depends on data that can change over time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A model trained on historical customer behavior is making assumptions about the world represented by that data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then the product changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">New customers arrive. User behavior shifts. A new feature changes how people interact with the product. An external factor affects demand.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The application can continue working normally while the model becomes less useful.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is why production ML requires more than model metrics collected during training.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Teams need to understand what is happening to the input data, how predictions are changing and, where ground truth becomes available, whether model performance is still holding up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is also why modern ML systems increasingly combine MLOps, data engineering and observability rather than treating them as separate concerns.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deployment changes the engineering requirements<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is another point that often gets underestimated: a model that works in a development environment is not automatically ready for production.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The production version may need to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>serve thousands of requests;<\/li>\n\n\n\n<li>meet a specific latency requirement;<\/li>\n\n\n\n<li>run inside a container;<\/li>\n\n\n\n<li>use GPU or other specialized hardware;<\/li>\n\n\n\n<li>integrate with an existing API;<\/li>\n\n\n\n<li>scale when demand increases;<\/li>\n\n\n\n<li>recover from failures;<\/li>\n\n\n\n<li>and support controlled model updates.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The requirements depend heavily on the use case.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A computer vision model running on an edge device has very different constraints from a recommendation model running in a cloud environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An LLM-based application introduces another set of problems: inference costs, context management, evaluation, latency, hallucinations and integration with external tools or company data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So the question is not simply &#8220;Which model should we use?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;What system needs to exist around this model for it to solve the actual business problem?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is where AI engineering starts<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The growing importance of AI engineering is partly a response to this problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The work sits between data science, software engineering and infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A team may need to build the model, but also expose it through an API, connect it to a database, package it into a deployable service, set up monitoring and create a process for improving it after deployment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The exact stack varies, but the principle remains the same:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI development does not end with model training.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, a company building an internal document intelligence system may need:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">documents \u2192 ingestion \u2192 OCR\/parsing \u2192 embeddings \u2192 vector database \u2192 retrieval \u2192 LLM \u2192 API \u2192 application<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The LLM is only one component.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The quality of the final product depends on the entire pipeline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is why companies increasingly work with AI development teams that can cover several parts of the lifecycle rather than handing a trained model to another engineering team and considering the project finished.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What happens when the model needs to change?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Production AI also introduces a versioning problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A software application usually has a version of its code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An ML system can have several things that need to be versioned together:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>source code;<\/li>\n\n\n\n<li>training data;<\/li>\n\n\n\n<li>features;<\/li>\n\n\n\n<li>model weights;<\/li>\n\n\n\n<li>prompts or configuration;<\/li>\n\n\n\n<li>dependencies;<\/li>\n\n\n\n<li>evaluation results;<\/li>\n\n\n\n<li>deployment environment.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Without this context, a seemingly simple question &#8211; &#8220;Why did the model perform differently after the update?&#8221; &#8211; can turn into an investigation across several systems.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A production-ready ML workflow therefore needs a reliable way to reproduce experiments, compare versions and roll back changes when necessary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is one of the reasons MLOps practices have become a standard part of serious machine learning development.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The last mile is often the most complicated<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The closer an AI project gets to a real product, the more technical details appear.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A proof of concept can answer:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Can this model do the task?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Production has to answer much more:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Can it do the task reliably, at the required speed, cost and scale, inside our existing system?&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That gap is where many ML projects slow down.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It may require changes to the architecture, optimization of inference, new data pipelines, better evaluation, cloud infrastructure, monitoring or integration with systems that were never designed with AI in mind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The real deliverable is the working system<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is nothing wrong with having a great model.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is just not enough.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A model becomes valuable when it can reliably operate inside the product or business process it was built for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That means the final result is usually not:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;We trained a model with 95% accuracy.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is closer to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;We built a system that uses this model to solve a real problem, can be deployed and monitored, and can be improved as the data and requirements change.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That shift &#8211; from model development to AI system development &#8211; is becoming one of the defining changes in how companies build machine learning products.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The model still matters, but increasingly, the engineering around it determines whether anyone can actually use it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A machine learning model can be the most impressive part of an AI project &#8211; and yet a small part of what&#8217;s needed to make that project&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[11138],"tags":[],"class_list":["post-78629","post","type-post","status-publish","format-standard","hentry","category-best-tools"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/78629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=78629"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/78629\/revisions"}],"predecessor-version":[{"id":78630,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/78629\/revisions\/78630"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=78629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=78629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=78629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}