机器学习已经从学术研究的实验室走向了商业实践,它正以前所未有的速度被商业世界所采纳。机器学习的应用帮助企业解决实际问题,通过改善客户体验、降低成本、提高业务效率,并最终增强企业的竞争优势,从而实现行业的转型。根据麦肯锡发布的《2021年人工智能发展状况》报告,全球许多地区的公司正在持续增加对AI/ML的采用。这种上升趋势的一个关键因素是人工智能对企业财务表现的积极影响。
现在,AI/ML能否为企业带来商业价值已不再是讨论的焦点。更紧迫的问题是,AI/ML领导团队如何思考和行动,以确保他们的组织能够以最高效的方式将AI/ML集成到业务流程或产品中,实现这一价值。为了实现这一点,他们需要能够以一种迭代、一致、有效、安全和可预测的方式,将机器学习技术转化为实际的业务能力。
来自Gartner、VentureBeat等不同来源的数据显示,机器学习项目的运营化是一个复杂的过程,它需要一套标准化的流程和技术能力,以便能够高效且迅速地构建、部署和运营机器学习模型。这正是MLOps所要解决的问题,它标志着我们进入了一个新的、以数据和算法为驱动的业务运营时代。
2 进一步理解MLOps软件工程项目的核心目标是为公司、组织或团队创造实际价值。这种价值的实现通常只有在软件产品成功部署到生产环境后才开始显现,并且这一过程越早完成越好。全球众多企业已经采纳了DevOps作为其软件开发和运维的方法论,通过缩小开发与运维之间的差距,促进团队间的协作、沟通和知识共享,从而确保软件的可靠开发和部署。DevOps之所以受到广泛认可,是因为它强调自动化的持续集成、持续交付和持续部署,这些实践有助于软件的快速、频繁且可靠的发布。
同样,机器学习项目也旨在为组织带来价值。机器学习项目的价值通常在机器学习模型和功能成功部署到生产环境并得到有效监控后才开始显现。由于机器学习项目的复杂性、数据质量、具体目标等因素,其投资回报率(Return on Investment,ROI)可能会有所差异。在某些情况下,企业可能在部署初期就能看到初步的回报,尤其是当机器学习模型专门设计来解决特定问题,如降低客户流失率时。然而,要实现全面的投资回报,通常需要时间,因为模型可能需要经过调整、优化和持续监控,以适应不断变化的环境。
机器学习项目与软件工程项目有何不同?它们各自有哪些独特之处?DevOps的方法论是否适用于机器学习项目?这些问题值得我们深入探讨,以更好地理解MLOps及其潜在优势。
DevOps已被许多软件开发组织广泛采用,它不仅是一种提高软件质量和可靠性的方法,也是缩短软件项目上市时间的有效途径。DevOps代表了一种范式转变,旨在解决软件开发组织中的社会和技术问题,同时也是软件开发流程中持续自动化的体现。
DevOps的基础是一系列持续的流程,包括持续开发、集成、部署和监控,这些流程的目标是实现软件的快速、频繁且可靠的发布。
DevOps的思维模式要求软件工程师不仅要关注自己开发的软件,还要关心软件的部署和运行情况,确保软件在整个生命周期中的质量和性能。
3 机器学习项目分析
与软件工程项目相似,机器学习项目也遵循其独特的开发生命周期。然而,由于机器学习模型训练的科学本质,这一生命周期是一个高度迭代的过程,它依赖于实验和训练算法所使用的数据质量。因此,机器学习的开发过程并非遵循标准的软件工程线性生命周期,而是一个需要不断迭代、调整和改进的循环过程,如图1所示。
机器学习开发流程的概览
启动机器学习项目通常是为了支持具有可衡量成果的业务或产品目标。在机器学习项目的早期阶段,明确定义问题的目标和目的是至关重要的第一步。在项目的其他阶段之前,这通常是以顺时针方向进行的。如果模型评估阶段显示机器学习模型的性能未达到预期,或者实验结果促使数据科学家重新考虑或微调他们的方法,那么数据科学家可能需要回到早期的步骤,比如收集更多数据或改进特征生成的方式。这种回到早期步骤的情况是常见的,也是开发过程中不可或缺的一部分。
在成功的机器学习项目中,数据科学家能够迅速推进整个机器学习开发生命周期,并根据需要多次循环开发过程,以便利用先前实验的洞察来微调他们的方法和所需数据。这样做的目的是为了最终生成一个经过优化的机器学习模型,该模型能够利用新数据进行准确预测,并达到满足业务目标的精度水平。
尽管机器学习开发生命周期看似复杂且循环往复,但它可以被简化为以下五个关键阶段:
数据收集与准备特征工程模型训练模型部署模型监控这些阶段共同构成了机器学习项目的骨架,确保了从数据的初步处理到模型的持续监控,每一步都至关重要,以实现项目的成功和持续的业务价值。
4 机器学习项目的输入和工件在传统的软件工程领域,软件工程师通过编写代码来实现逻辑或算法,满足特定规范或需求,从而根据输入生成输出,如图2所示。
软件项目
在机器学习项目中,数据科学家专注于两个核心活动:特征工程和模型开发。以下简要介绍这两个活动,并重点阐述ML项目的输入和工件。
特征的数量和质量对机器学习模型的性能至关重要。数据科学家通常投入大量时间来收集和分析数据,然后通过编写代码将数据转化为ML特征,以训练机器学习模型,如图3所示。
ML项目中的模型训练
当数据科学家对生成的ML特征感到满意时,他们将进入模型训练阶段。这包括使用生成的特征、选定的ML算法以及一组调优参数来训练ML模型。这一步骤通常需要通过探索和实验来评估、微调和迭代模型,以优化其性能。如果模型评估结果不尽如人意,数据科学家可能需要重新审视特征工程阶段,收集更多或不同类型的数据,或选择不同的ML算法。
上述活动涉及主要的ML工件包括:
用于生成特征的原始数据将数据转换为特征的逻辑和代码训练机器学习算法所使用的代码和参数经过训练的ML模型由于业务需求的变化、新数据源的可用性或ML库的更新,ML模型通常需要定期重新训练。因此,对上述工件进行版本控制和管理至关重要。
机器学习模型 = 数据 + ML算法 + 超参数
机器学习项目与传统软件工程项目相比,面临许多独特挑战,主要包括:
ML模型的训练依赖于历史数据,因此项目需要更多与数据相关的活动,如数据收集、标记、分析和可视化,以深入理解数据的统计特性。模型开发是一个高度迭代的过程,需要不断的探索和实验。随着时间的推移,数据的统计特性可能会发生变化,导致ML模型性能下降。机器学习项目通常需要数据科学家、数据工程师、机器学习工程师和领域专家的紧密协作,项目的成功依赖于技术专长与领域知识的结合。MLOps在机器学习中的作用,类似于DevOps在软件工程中的作用。MLOps的主要目标是通过制定一系列最佳实践,围绕技术和非技术元素,帮助全球公司以可重复、一致且高效的方式推进其ML项目的生产。