Explore the practices for sustainably mitigating the fee of speedy delivery—with implementation codes

Because the machine learning (ML) community advances over time, the resources available for developing ML projects are plentiful. For instance, we are able to depend on the generic Python package scikit-learn, which is built on NumPy, SciPy, and matplotlib, for data preprocessing and basic predictive tasks. Or we are able to leverage the open-source collection of pre-trained models from Hugging Face for analyzing diverse kinds of datasets. These empower current data scientists to quickly and effortlessly tackle standard ML tasks while achieving moderately good model performance.
Nevertheless, the abundance of ML tools often leads business stakeholders and even practitioners to underestimate the hassle required to construct enterprise-level ML systems. Particularly when faced with tight project deadlines, the teams may expedite deploying systems to production without giving sufficient technical considerations. Consequently, the ML system often doesn’t address the business needs in a technically sustainable and maintainable manner.
Because the system evolves and deploys over time, technical debts accumulate — The longer the implied cost stays unaddressed, the more costly it becomes to rectify them.
There are multiple sources of technical debts within the ML system. Some are included below.
#1 Inflexible code design to cater to unexpected requirements
To validate if ML can address the enterprise challenges at hand, many ML projects start with a proof of concept (PoC). We initially created a Jupyter Notebook or Google Colab environment to explore data, then developed several ad-hoc functions, and created the illusion of nearing project completion for stakeholders. Such systems constructing directly from PoC may find yourself consisting mostly of glue code — the supporting code that connects specific incompatible components but itself doesn’t have the functionality of knowledge evaluation. They will be spaghetti-like, hard to take care of, and liable to errors.