随着机器学习技术在各行各业的广泛应用,许多公司开始探索如何将机器学习融入其业务流程中以获得更多优势。然而,对于没有先前经验的公司来说,开始实施一个实时的机器学习项目并非易事。机器学习可以轻松地在所有行业中推动业务增长,例如金融科技行业已经开始采用评分卡来自动化他们的贷款流程。同样,快速消费品公司也通过客户细分和个性化优惠来吸引更多业务,这一点从电子商务网站上可以明显看出。
MLOps是机器学习、数据工程和DevOps的结合体。每个公司都在寻求在机器学习领域扩张。要开发和部署一个机器学习项目,不能使用常规的DevOps技术,需要使用一种叫做MLOps的技术。它就是数据、机器学习和常规DevOps的结合。
尽管已经有许多新项目使用机器学习技术开发,但仍有更多的应用空间。以银行和金融行业为例,许多机构已经构建了基于机器学习的评分卡以自动化贷款处理流程。所有以前依赖于基于人类直觉的解决方案的任务,现在都可以通过基于机器学习的方法自动化。从汽车行业到金融、电子商务等各个领域都开始挖掘机器学习的巨大潜力。公司根据搜索历史为提供产品,为个性化他们的产品,并做更多的事情。这些是机器学习的一些有趣的用例。
MLOps的一些好处如下:
创建机器学习模型是一回事,部署它们又是另一回事。MLOps有助于以更快、更容易的方式部署它们。想象一下这个场景:创建了一个机器学习模型并单独部署它。过了一段时间,验证它并微调参数,然后重新部署模型变成了一个涉及多个人和多个任务的巨大麻烦。这占用了大量的时间、精力和金钱。MLOps避免了所有这些,因为整个项目以无缝的方式集成在一起。
也可以很容易地将模型重用于其他用例。由于验证和报告集成到系统中,监控变得非常容易。
部署MLOps项目时面临的常见挑战是什么?对于任何基于机器学习的项目,第一个也是最重要的要求是基础设施。通常需要大量的计算能力和内存容量。如果只依赖本地服务器,那么就需要为项目做出充分的规划和安排。
扩展到云架构以避免这种麻烦是一个好主意,因为扩展和缩小规模变得容易。许多公司为此目的转向AWS服务。需要一个持续监控的过程。机器学习模型可能在进入生产环境之前已经过验证,但这并不意味着它们会永远保持相关。需要定期监控参数并定期更改模型变量。
MLOps有5个主要步骤需要注意。这些步骤可以帮助以简单和无缝的方式完成项目。首先,如果有一个好的机器学习项目想法和一个包括数据科学家、数据工程师、开发人员、测试人员的团队,那么就可以开始了。在很多方面,开发一个机器学习项目类似于一个常规的软件项目,只是它有一些额外的步骤。
规划和组建正确的团队是第一步。需要一个或更多的机器学习工程师(ML工程师)、数据工程师和DevOps工程师。所需人数将根据项目的复杂性来确定。数据工程师负责从各种来源操纵数据,数据科学家负责建模部分,DevOps团队负责常规的开发和测试。
这一步更多地针对机器学习部分而不是DevOps部分。对于建模,从所有来源提取数据并创建一个管道,以确保数据提取即使在系统中也能无缝进行。
处理数据以识别任何空值、异常或无用值。需要确定理想的替换机制。它可以是从平均值、中位数、众数等替换。在某些情况下,也可以删除整行。
创建一个自动化系统,使数据从各种来源流入系统,并进行所有必要的转换,以无缝的方式进行。
版本控制对于DevOps来说是非常严格的。同样,对于ML模型来说,严格的版本控制也很重要。可以使用Git仓库来实现这一点。
为什么ML建模需要版本控制?嗯,每次运行模型时,可能会改变各种参数。这反过来会给出不同的结果。如果将来希望回到之前的参数集,版本控制会有所帮助。另一个重要点是,版本控制可以帮助研究对模型所做的各种更改以及它是如何随着时间的推移而演变的。为了帮助管道活动,许多公司依赖于端到端的解决方案,如KubeFlow或MLFlow。
现在,这一步可以让思考。DevOps项目有单元测试、集成测试等。在ML项目中,测试到底是什么?
简单地说,模型验证被认为是ML模型的测试。所以测试阶段应该理想地有两个步骤——一个用于模型验证,另一个用于数据验证。
模型验证包括检查坏账率、准确性、ROC、曲线下面积、人口稳定性指数(PSI)、特征稳定性指数(CSI)等。验证参数需要根据使用的模型和用例来设置。验证参数将根据使用的模型而变化。例如,如果使用的是无监督ML模型,如k-means聚类,那么准确性、F-measure、精确度和召回率是好的验证参数。另一方面,如果使用的是逻辑回归或线性回归模型,那么PSI、CSI、GINI是好的验证器。
那么数据验证做什么呢?ML模型在某种意义上是特别具体的。如果输入发生变化,输出也会变化。只要模型能够理解输入,它就会给出合理的预测。所以数据验证是为了确保来自各种来源的输入不会改变格式。它们应该以处理ML模型所需的格式存在。这也是MLOps生命周期中的一个重要步骤。
所以,一旦项目完全集成并上线,工作并没有结束。在常规的DevOps项目中,一旦项目上线,开发者的工作就完成了,除非有进一步的增强。在一个MLOps项目中,定期监控ML模型的性能是很重要的。在任何ML建模中,定期监控和验证是一个不可或缺的组成部分。
监控的周期性将取决于使用的模型。然而,它必须定期使用相同的验证参数与实时数据进行验证,以确保模型按预期工作。如果在任何时候发现验证参数不能正常工作,将需要重新进行建模活动。这可能是一个小练习,其中一个小级别的微调可能就足够了,或者是一个主要活动,其中模型参数需要完全重新工作。
甚至可以设置自动报告,以便于跟踪这些参数。定期报告可以帮助注意到性能指标中的微小偏差,这些偏差可以通过一点微调来调整。