Google MLOps白皮书:MLOps实践者指南 Part I MLOps生命周期及核心能力
目录
内容摘要 3
MLOps生命周期和核心能力概述 4
构建支持机器学习的系统 6
MLOps生命周期 7
MLOps:端到端工作流程 8
MLOps能力 9
实验 11
数据处理 11
模型训练 11
模型评估 12
模型服务 12
在线实验 13
模型监测 13
机器学习流水线 13
模型注册表 14
数据集和特征库 14
机器学习元数据和工件跟踪 15
内容摘要
在各个行业中,DevOps和DataOps已经作为提高质量和缩短产品上线时间的方法,被软件工程和数据工程领域广泛采用。随着机器学习(ML)系统的快速发展,需要在ML工程的背景下开发类似的方法,以处理ML实际应用的独特复杂性。这就是MLOps的应用领域。MLOps是一套标准化流程和技术能力,用于快速、可靠地构建、部署和运维ML系统。
我们之前发布了谷歌云的人工智能实施框架,为‘希望建立有效的人工智能(AI)能力,以改变其业务的技术leader’提供指导。该框架涵盖围绕人、数据、技术和流程的人工智能挑战,分为六个不同主题:学习、领导、访问、安全、扩展和自动化。
当前文档更深入地探讨了“规模和自动化”主题,以说明构建和操作ML系统方面的需求。规模关系到您使用云管理的ML服务的程度,这些服务可以扩展到大量数据、大量数据处理和ML工作,并减少操作开销。自动化涉及到您能够在生产中高效、频繁和可靠地部署、执行和操作数据处理和ML流程技术的程度。
我们概述了MLOps的框架,该框架定义了MLOps的核心流程和技术能力。企业相关部门可以使用此框架帮助建立成熟的MLOps实践,以构建和运维ML系统。采用该框架可以帮助组织改进团队之间的协作,提高ML系统的可靠性和可扩展性,并缩短开发周期。这些好处反过来推动创新,并有助于从ML投资中获得整体业务价值。
本文档面向希望了解MLOps的技术leader和企业架构师,也适用于那些希望了解MLOps在实践中的细节的团队。本文件假设读者熟悉基本机器学习概念以及CI/CD等开发和部署实践。
该文件分为两部分。第一部分是MLOps生命周期概述,面向所有读者。它介绍了MLOps的过程和功能,以及它们对于成功采用基于ML的系统的重要性。
第二部分是对MLOps过程和能力的深入研究。本部分面向希望了解任务具体细节的读者,如运行连续训练流程、部署模型和监控ML模型的预测性能。
企业部门可以使用该框架来确定构建集成的ML平台的差距,并关注Google AI Adoption Framework中的规模以及自动化。是否(或在何种程度上)在您的组织中采用这些流程和功能取决于您的业务环境。例如,与购买或构建功能的成本(例如,工程开发的时间成本)相比,您必须确定框架创建的业务价值。
MLOps生命周期概述和核心能力
尽管人们越来越认识到AI/ML是数字转型的关键支柱,但成功的部署和有效的运维是从人工智能中获取价值的瓶颈。只有50%的组织跨过了试点和概念验证的阶段。此外,在2019年之前开始人工智能试点的组织中,有72%的组织甚至无法在生产中部署一个应用程序。Algorithmia对企业机器学习应用现状的调查发现,55%被调查的公司没有部署ML模型。总而言之,模型无法投入生产,如果投入生产,它们就会崩溃,因为它们无法适应环境的变化。
这是由于各种问题造成的。企业机器学习部门的工作高度依赖人工,并且大都是一次性的工作,它们没有可复用或可复制的组件,其过程涉及数据科学家与IT之间的相互配合。Deloitte将人才缺乏和整合问题确定为可能阻碍或破坏人工智能计划的因素。Algorithmia的调查强调,部署、扩展和版本控制工作中的挑战仍然阻碍团队从ML投资中获得价值。Capgemini研究指出,组织在实现大规模部署方面面临的三大挑战是缺乏中高级人才、缺乏变革管理流程、缺乏创新能力,缺乏实现规模化的强有力的治理模式。
这些研究和其他研究的共同主题是,ML系统不能以一种与其他IT(如数据操作和DevOps)隔离的特殊方式构建。如果不应用良好的软件工程实践,同时考虑到使运维ML不同于其他类型软件运维这一因素,ML系统也无法构建。
企业组织需要自动化和简化的ML流程。这个过程不仅仅帮助企业在生产中成功地部署ML模型,当企业在不断变化的环境中将ML应用程序的数量扩展到更多用例时,它还帮助管理风险,并帮助确保应用程序仍然符合业务目标。McKinsey对人工智能的全球调查发现,标准框架和开发流程的到位是高效的ML团队的区别因素之一。
这就是ML工程的关键所在。ML工程是构建支持ML的系统的中心,涉及生产级ML系统的开发和运行。ML工程是软件工程学科的超集,其具有独特的复杂性。这些复杂性包括:
Ÿ 为训练ML模型准备和维护高质量的数据。
Ÿ 跟踪生产中的模型,以检测性能是否下降。
Ÿ 对新数据源、ML算法和超参数进行持续实验,然后跟踪这些实验。
Ÿ 通过不断利用新数据对模型进行再训练,保持模型的准确性。
Ÿ 避免由于训练环境和部署环境之间的数据或运行时依赖项的不同而导致的训练-部署偏差。
Ÿ 处理对模型公平性和对抗性攻击的担忧。
MLOps是ML工程的一种方法,它将ML系统开发(ML元素)与ML系统运维(Ops元素)结合起来。它提倡将ML系统构建的关键步骤形式化和(如果有益)自动化。MLOps为快速、可靠地构建、部署和运维ML系统提供了一套标准化过程和技术能力。
以DevOps和DataOps支持应用工程和数据工程(分析)的方式,MLOps支持ML开发和部署。不同之处在于,当您部署web服务时,您关心的是效率、每秒查询数、负载平衡等。当您部署ML模型时,您还需要担心数据的变化、模型的变化、用户试图钻空子等。这就是MLOps的意义所在。
与不遵循MLOps实践的系统相比,MLOps做法可以带来以下好处:
• 开发周期更短,因此上市时间更短;
• 团队之间更好的协作;
• 提高ML系统的可靠性、性能、可扩展性和安全性;
• 简化运营和治理流程;
• 提高ML项目的投资回报率。
在本节中,您将了解MLOps的生命周期和工作流程,以及稳健的MLOps实现所需的各个功能。
构建支持ML的系统
构建支持ML的系统是一项综合性的任务,它将数据工程、ML工程和应用工程任务结合起来,如图1所示。
图1 数据工程、ML工程和应用工程的关系
数据工程涉及摄取、整合、管理和提炼数据,以促进广泛的操作任务、数据分析任务和ML任务。数据工程对于分析和ML计划的成功至关重要。如果一个组织没有强大的数据工程流程和技术,它可能无法成功地进行下游商业智能、高级分析或ML项目。
通过使用数据工程团队创建的专业数据,ML模型是在生产中被构建和部署。模型是大量应用系统的组件,如商业智能系统、商业应用、过程控制系统和嵌入式系统。将ML模型集成到应用中是一项关键任务,首先需要确保应用程序有效地使用部署的模型,然后监控模型性能。除此之外,您还应该收集和监控相关的业务KPI(例如,点击率、收入提升和用户体验),业务KPI有助于您了解ML模型对业务的影响,并相应地进行调整。
MLOps的生命周期
MLOps生命周期包括七个集成和迭代过程,如图2所示。
图2 MLOps生命周期
这些过程可以包括以下内容:
• ML开发涉及到实验和开发一个健壮且可重复的模型训练过程(训练流程代码),该过程包括从数据准备和转换到模型训练和评估的多个任务。
• 训练操作 涉及打包、测试和部署可重复且可靠的训练流程这一过程自动化。
• 持续训练 涉及重复执行训练流程以响应新数据或代码更改或按计划执行,可能带有新的训练设置。
• 模型部署 涉及将模型打包、测试和部署到服务环境,以进行在线实验和生产服务。
• 预测服务 指为生产中部署的模型提供服务,以进行推理。
• 持续监控 指监控已部署模型的有效性和效率。
• 数据和模型管理 管理ML工件以支持可审计性、可追溯性和合规性的一个中心、交叉功能。数据和模型管理还可以促进ML资产的共享性、可重用性和可发现性。
MLOps:端到端工作流
图3展示了MLOps流程如何相互作用的简化但规范的流程,重点放在高级控制流程以及关键输入和输出上。
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” alt=””/>
图3 MLOps流程
这不是一个瀑布式工作流,它必须顺序地通过所有流程,可以跳过一些过程,或者重复给定的阶段或过程的子序列。该图显示了以下流程:
1. ML开发阶段的核心是实验。当数据科学家和ML研究人员原型化模型架构和训练例程时,他们创建标注数据集,并使用特征和其他可复用的ML工件(通过数据和模型管理过程管理)。这个过程的主要输出是一个形式化的训练过程,包括数据预处理、模型架构和模型训练设置。
2. 如果ML系统需要持续训练(模型的重复再训练),则训练过程作为训练流程进行操作。这需要一个CI/CD例程,以便于在目标执行环境中构建、测试和部署这套流程。
3. 基于再训练触发器,持续训练流程被重复执行,并将生成一个模型作为输出。当有新数据可用或检测到模型性能衰减时,将重新训练模型。由训练流程生成的其他训练工件和元数据,也会一直被跟踪。如果流程生成了一个成功的候选模型,那么该候选模型将作为注册模型被模型管理过程跟踪。
4. 对注册模型进行注释、审核并批准发布,然后将其部署到生产环境中。如果您使用的是无代码解决方案,则此过程可能相对不透明,或者它可能涉及构建用于渐进交付的自定义CI/CD流程。
5. 部署的模型使用您指定的部署模式提供预测:在线、批处理或流式预测。除了服务预测之外,服务运行时还可以生成模型解释并捕获服务日志,以供连续监控过程使用。
6. 持续监控过程监控模型的预测有效性和服务。性能监测的主要关注点是检测模型衰减,例如数据和概念漂移。性能监测还可以监控模型部署的效率指标,如延迟、吞吐量、硬件资源利用率和执行错误。
MLOps的技术功能
为了有效实施上一节概述的MLOps的关键流程,企业组织需要建立一套核心技术功能。这些功能可以由单个集成ML平台提供,或者它们可以通过组合最适合特定任务的供应商工具来创建,也可以作为定制服务开发,或者作为这些方法的组合来创建。
在大多数情况下,流程是分阶段部署的,而不是在单个部署中一次性部署。企业组织采用这些流程和能力的计划应与业务优先级以及组织的技术和技能成熟度保持一致。例如,许多组织从关注ML开发、模型部署和预测服务的过程开始。对于这些企业组织,如果他们正在试验数量相对较少的ML系统,则可能不需要持续训练和持续监控。
图4显示了MLOps通常需要的核心技术功能集。它们被抽象为功能组件,可以具有特定产品和技术的多对多映射。
图4 核心MLOps技术能力
为了支持任何IT工作负载,一些基础功能是必要的,例如可靠、可扩展和安全的计算基础设施。大多数企业组织已经在这些功能上进行了投资,并可以通过利用这些功能进行ML工作流而获益。这些功能可能跨越多个云,甚至部分在本地运行。理想情况下,这将包括高级功能,如专门的ML加速器。
此外,企业组织需要标准化的配置管理和CI/CD能力,以快速、可靠地构建、测试、发布和操作软件系统,包括ML系统。
在这些基础能力之上,还有一组核心MLOps能力。这些包括实验、数据处理、模型训练、模型评估、模型服务、在线实验、模型监控、ML流程和模型注册。最后,支持集成和交互的两个交叉能力是ML元数据和工件仓库以及ML数据集和特征仓库。
以下各节概述了各MLOps能力的特点。
实验
实验功能使您的数据科学家和ML研究人员能够协作执行探索性数据分析,创建原型模型架构,并实现训练计划。ML环境还应允许他们编写模块化、可复用和可测试的源代码,并进行版本控制。实验中的关键功能包括:
• 提供与Git等版本控制工具集成的notebook环境。
• 跟踪实验,包括数据、超参数,以及评估再现性和对比的指标的信息。
• 分析和可视化数据和模型。
• 支持探索数据集、查找实验和审查实施。
• 与平台中的其他数据服务和ML服务集成。
数据处理
数据处理功能允许您在ML开发、持续训练流程和预测服务中大规模地准备和转换大量数据。数据处理的关键功能包括:
• 支持交互式执行(例如从笔记本电脑上执行),用于快速实验和生产中的长期作业。
• 为各种数据源和服务提供数据连接器,以及各种数据结构和格式的数据编码器和解码器。
• 为结构化(表格)和非结构化数据(文本、图像等)提供丰富高效的数据转换和ML特征工程。
• 支持可扩展批处理和流数据处理。
模型训练
模型训练功能使您能够高效、经济地运行用于训练ML模型的强大算法。模型训练应能够根据模型和用于训练的数据集的大小进行缩放。模型训练中的关键功能包括:
• 支持通用ML框架并支持自定义运行时的环境。
• 支持针对多个GPU和多人的不同策略的大规模分布式训练。
• 支持按需使用ML加速器。
• 允许大规模高效超参数调整和目标优化。
• 理想情况下,提供内置的AutoML功能,包括自动特征选择和工程设计以及自动模型架构搜索和选择。
模型评估
通过模型评估功能,您可以交互式地在实验过程中和在生产过程中自动评估模型的有效性。模型评估中的关键功能包括:
• 在评估规模化的数据集上对模型进行批量评分。
• 在数据的不同切片上计算模型的预定义或自定义评估指标。
• 不同的持续训练的执行中,跟踪训练模型的预测性能。
• 可视化并比较不同模型的性能。
• 为假设分析和认知偏见和公平性问题提供工具。
• 使用各种可解释的人工智能技术实现模型行为解释。
模型部署
模型部署功能允许您在生产环境中部署模型。模型部署中的关键功能包括:
• 支持低延迟、近乎实时(在线)的预测和高吞吐量的批量(离线)预测。
• 为通用ML服务框架(例如,TensorFlow Serving、TorchServe、Nvidia Triton以及Scikit learn和XGBoost等其他模型)和自定义的运行环境,提供内嵌支持。
• 启用复合的预测例程,其中在聚合结果之前分层或同时调用多个模型,以及任何所需的预处理或后处理例程。
• 允许高效使用具有自动缩放功能的ML推理加速器,以匹配工作负载,并平衡成本和延迟。
• 使用给定模型预测的特征属性等技术支持模型解释性。
• 支持预测服务请求的记录和分析响应。
在线实验
在线实验的功能使您能够在新模型发布到生产环境之前,了解新训练的模型与当前模型(如果有)相比在生产环境中的表现。例如,推送给服务人群的一小部分,您可以使用在线实验来了解新推荐系统对点击率和会话率的影响。在线实验的结果应与模型注册功能集成,以便于决定将模型发布到生产环境中。在线实验通过帮助您决定放弃性能不佳的模型,并提升性能良好的模型,从而提高ML版本的可靠性。在线实验中的关键功能包括:
•支持金丝雀和影子部署(canary and shadow)。
•支持流量分流和A/B测试。
•支持多臂老虎机(MAB)测试。
模型监控
模型监控功能允许您跟踪生产中部署模型的效率和有效性,以确保预测质量和业务连续性。如果您的模型已过时,需要调查和更新,此功能将通知您。模型监控中的关键功能包括:
• 测量模型效率指标,如延迟和服务资源利用率。
• 检测数据偏差,包括模式异常、数据和概念转移和漂移。
• 将监测与模型评估能力相结合,以便在ground truth标签可用时持续评估部署模型的有效性性能。
ML流程
ML流程功能允许您在生产中对复杂的ML训练和预测流程进行仪表化、编排和自动化。ML工作流协调不同的组件,其中每个组件执行流程中的特定任务。ML流程中的关键功能包括:
• 按需、按计划或响应特定事件触发流程。
• 在ML开发期间启用本地交互式执行以进行调试。
• 与ML元数据跟踪功能集成,以捕获流程执行参数并生成工件。
• 为通用ML任务提供一组内置组件,还允许自定义组件。
• 在不同的环境中运行,包括本地机器和可扩展的云平台。
• 可选地,提供基于GUI的用于设计和构建流程的工具。
模型注册
模型注册功能允许您在中央仓库中管理ML模型的生命周期。这确保了生产模型的质量并支持模型发现。模型注册的关键功能包括:
• 将你培训和部署的ML模型进行注册、组织、跟踪和版本化。
• 为可部署性存储模型元数据和运行依赖。
• 维护模型文档和报告,例如使用模型卡
• 与模型评估和部署功能集成,并跟踪模型的在线和离线评估指标。
• 管理模型启动流程:审查、批准、发布和回滚。这些决策基于许多离线性能和公平性指标以及在线实验结果。
数据集和特征库
数据集和特征仓库功能允许您统一ML数据资产的定义和存储。拥有一个新的、高质量数据资产的中央仓库可以实现共享性、可发现性和可复用性。仓库还为模型训练和推理提供数据一致性。这有助于数据科学家和ML研究人员节省数据准备和特征工程方面的时间,通常数据准备和特征工程会占用他们大量的时间。数据和特征仓库中的关键功能包括:
• 支持数据资产的共享性、可发现性、可重用性和版本控制。
• 为事件流和在线预测工作负载提供实时摄取和低延迟服务。
• 允许高吞吐量批量摄取,并用于提取、转换、加载(ETL)过程和模型训练,以及对工作负载进行评分。
• 启用特征版本point-in-time查询。
• 支持各种数据模式,包括表格数据、图像和文本。
ML数据资产可以在实体特征级别或完整数据集级别进行管理。例如,特征仓库可能包含一个名为客户的实体,其中包括年龄、邮政编码和性别等功能。另一方面,数据集存储库可能包括客户流失数据集,其中包括来自客户和产品实体的特征,以及购买活动和web活动事件日志。
ML元数据和工件跟踪
在MLOps生命周期的不同过程中产生了各种类型的ML工件,包括描述性统计和数据模式、训练模型和评估结果。ML元数据是关于这些工件的信息,包括它们的位置、类型、属性以及与实验和运行的关联。ML元数据和工件跟踪功能是所有其他MLOps功能的基础。这样的能力可以实现复杂的ML任务和流程的复现性以及调试。ML元数据和工件跟踪中的关键功能包括:
• 提供ML工件的可追溯性和沿袭跟踪。
• 共享和跟踪实验及流程的参数配置。
• 存储、访问、调查、可视化、下载和归档ML工件。
• 与所有其他MLOps能力集成。