管理机器学习系统的技术债务

Managing Technical Debt in Machine Learning Systems

探索可持续降低快速交付成本的实践方法-附有实施代码

随着机器学习(ML)社区的不断发展,用于开发ML项目的资源丰富。例如,我们可以依赖通用的Python包scikit-learn,它构建在NumPy、SciPy和matplotlib之上,用于数据预处理和基本的预测任务。或者我们可以利用Hugging Face的开源预训练模型集合,用于分析各种类型的数据集。这些使当前的数据科学家能够快速、轻松地处理标准的ML任务,并取得适度良好的模型性能。

然而,ML工具的丰富往往导致业务利益相关者甚至从业人员低估了构建企业级ML系统所需的工作量。特别是在面临紧迫的项目截止日期时,团队可能会加快将系统部署到生产环境中,而没有给予足够的技术考虑。因此,ML系统往往无法以技术上可持续和可维护的方式满足业务需求。

随着系统的演变和部署,技术债务会累积-随着潜在成本的未处理时间越长,纠正它们的成本就越高。

Photo by Andrea De Santis on Unsplash

ML系统中存在多个技术债务的来源。以下是其中一些。

#1 根据未预见到的需求设计的不灵活的代码

为了验证ML是否能够解决当前的企业挑战,许多ML项目从概念验证(PoC)开始。我们最初创建了一个Jupyter Notebook或Google Colab环境来探索数据,然后开发了几个临时函数,并为利益相关者创造了接近项目完成的假象。这样的系统构建直接从PoC开始,可能主要由胶水代码组成-连接特定不兼容组件的支持代码,但它本身没有数据分析的功能。它们可能像意大利面条一样,难以维护,容易出错。