谷歌大佬谈 MLOps :机器学习中的持续交付和自动化流水线(下)

简介: 背景数据科学和机器学习正逐渐成为解决复杂现实问题以及在所有领域创造价值的核心功能。现在,有效运用机器学习技术的各种要素都已具备:

特征平台(Feature store)

等级 1 机器学习流水线自动化的一个可选附加组件是特征平台。特征平台是一个集中式存储区,您可以在其中对特征的定义、存储和访问进行标准化处理,以方便训练和提供服务。特征平台需要为特征值提供高吞吐量批量服务和低延时实时服务的 API,以及支持训练和服务工作负载。

特征平台可帮助数据科学家执行以下操作:

  • 发现并重复使用可用于实体的特征集,而不是重新创建相同或类似的特征集。
  • 通过保留特征及其相关元数据来避免使用具有不同定义的类似特征。
  • 从特征平台提供最新的特征值。
  • 通过将特征平台用作实验、持续训练和在线服务的数据源,避免训练-模型服务偏差。此方法可确保用于训练的特征与模型服务期间使用的特征相同:
  • 对于实验,数据科学家可以从特征平台中提取离线数据以运行实验。
  • 对于持续训练,自动化机器学习训练流水线可以提取用于训练任务的数据集的一批最新特征值。
  • 对于在线预测,预测服务可以提取与所请求实体相关的一批特征值,例如:客户受众特征、产品特征和当前的会话聚合特征。


元数据管理

系统会记录有关机器学习流水线每次执行情况的信息,以帮助实现数据和制品血缘、可重现性以及比较。这些信息还有助于您调试错误和异常情况。每次执行流水线时,机器学习元数据存储区都会记录以下元数据:

  • 执行的流水线和组件版本。
  • 开始和结束日期、时间以及流水线完成每个步骤所花费的时间。
  • 流水线的执行者。
  • 传递给流水线的参数。
  • 指向流水线每个步骤生成的制品的指针,例如:准备好的数据的位置、验证异常情况、计算的统计信息以及从分类特征中提取的词汇。跟踪这些中间输出有助于您在流水线因某个步骤失败而停止时,从最近的步骤继续执行流水线,而不必重新执行已完成的步骤。
  • 指向之前训练的模型的指针(如果您需要回滚到之前的模型版本,或者需要在流水线在模型验证步骤中获得新的测试数据时为之前的模型版本生成评估指标)。
  • 在模型评估步骤中为训练集和测试集生成模型评估指标。这些指标可帮助您在模型验证步骤中将新训练的模型的性能与之前模型的记录性能进行比较。


机器学习流水线触发器

您可以自动执行机器学习生产流水线,以根据您的用例使用新数据重新训练模型:

  • 按需:临时手动执行流水线。
  • 按时间表:系统每天、每周或每月向机器学习系统提供带有标签的新数据。重新训练的频率还取决于数据模式的更改频率以及重新训练模型的费用。
  • 根据新训练数据的可用性:新数据不会系统地提供给机器学习系统,而是在系统收集新数据并在源数据库中提供新数据时临时提供给机器学习系统。
  • 在模型性能下降时:模型在性能明显下降时会重新训练
  • 在数据分布发生重大变化(概念偏移**)时。您很难评估在线模型的完整性能,但会注意到用于执行预测的特征的数据分布发生重大变化。这些变化表明您的模型已过时,需要使用新数据重新训练。


挑战

假设流水线的新实现不会频繁部署,并且您只管理几条流水线,则您通常需要手动测试流水线及其组件。此外,您需要手动部署新的流水线实现。您还需要将经过测试的流水线源代码提交给 IT 团队,以部署到目标环境。如果您根据新数据(而不是新的机器学习理念)部署新模型,则此设置是合适的。

但是,您需要尝试新的机器学习理念,并快速部署机器学习组件的新实现。如果您在生产环境中管理多条机器学习流水线,则需要设置 CI/CD 以自动构建、测试和部署机器学习流水线。


MLOps 等级 2:自动化 CI/CD 流水线

如需在生产环境中快速、可靠地更新流水线,您需要一个可靠的自动化 CI/CD 系统。此自动化 CI/CD 系统可让您的数据科学家快速探索有关特征工程、模型结构和超参数的新想法。他们可以实现这些想法,并自动构建、测试新的流水线组件,以及将其部署到目标环境。

下图显示了使用 CI/CD 进行机器学习流水线的实现,它具有自动化机器学习流水线设置以及常规的自动化 CI/CD 的特性。

网络异常,图片无法展示
|


此 MLOps 包含以下组件:

  • 源代码控制
  • 测试和构建服务
  • 部署服务
  • 模型仓库(Model registry)
  • 特征平台(Feature store)
  • 机器学习元数据存储
  • 机器学习流水线编排

特性

下图展示了机器学习 CI/CD 自动化流水线的各个阶段:

网络异常,图片无法展示
|


流水线包括以下阶段:

  1. 开发和实验:在编排了实验步骤的阶段,您可以反复尝试新的机器学习算法和新的建模。此阶段的输出是机器学习流水线步骤的源代码,该源代码随后会被推送到源代码库。
  2. 流水线持续集成:您可以构建源代码并运行各种测试。此阶段的输出是要在后续阶段部署的流水线组件(软件包、可执行文件和制品)。
  3. 流水线持续交付:您可以将 CI 阶段生成的制品部署到目标环境。此阶段的输出是已部署的流水线,其中包含模型的新实现。
  4. 自动触发:流水线会根据时间表或响应触发器而自动在生产环境中执行。此阶段的输出是已推送到模型注册表并且经过训练的模型。
  5. 模型持续交付:您可以将经过训练的模型用作预测服务。此阶段的输出是已部署的模型预测服务。
  6. 监控:您可以根据实时数据来收集模型性能的统计信息。此阶段的输出是用于执行流水线或执行新实验周期的触发器。

在流水线开始实验的新迭代之前,数据分析步骤仍然是数据科学家手动执行的过程。模型分析步骤也是手动执行的过程。


持续集成

在此设置中,当新代码提交或推送到源代码库时,您会构建、测试和封装流水线及其组件。除了构建软件包、容器镜像和可执行文件之外,CI 过程还可以包含以下测试:

  • 对特征工程逻辑进行单元测试。
  • 对模型中实现的不同方法进行单元测试。例如,您有一个接受分类数据列的函数,并将该函数编码为独热(One-hot)功能。
  • 测试您的模型训练是否会收敛(即模型的损失会因迭代而下降,并且会过拟合一些示例记录)。
  • 测试模型训练是否不会因为除以零或者处理小值或大值而产生 NaN 值。
  • 测试流水线中的每个组件都会生成预期的制品。
  • 测试流水线组件之间的集成。


持续交付

在此等级中,您的系统会向目标环境持续交付新的流水线实现,从而交付新训练的模型的预测服务。如需快速、可靠地持续交付流水线和模型,您应考虑以下事项:

  • 在部署模型之前,验证模型与目标基础架构的兼容性。例如,您需要验证模型所需的软件包是否已安装到服务环境中,以及内存、计算和加速器资源是否可用。
  • 测试预测服务,方法是:使用预期输入调用服务 API,并确保获得预期响应。此测试通常会捕获您在更新模型版本时,可能会出现的问题,它需要您提供不同的输入。
  • 测试预测服务性能,包括对服务进行负载测试以捕获每秒查询次数 (QPS) 和模型延迟时间等指标。
  • 验证数据以便重新训练或者进行批量预测。
  • 在部署模型之前,验证其是否达到预测性能目标。
  • 自动部署到测试环境,例如,通过将代码推送到开发分支而触发的部署。
  • 半自动部署到预生产环境,例如,通过在审核者批准更改后将代码合并到主分支而触发的部署
  • 在预生产环境中多次成功运行流水线后,手动部署到生产环境


总结

总而言之,在生产环境中实现机器学习并不仅仅意味着将模型部署为用于预测的 API。相反,它意味着部署可自动重新训练和部署新模型的机器学习流水线。

通过设置 CI/CD 系统,您可以自动测试和部署新的流水线实现。此系统可让您应对数据和业务环境的快速变化。您不必立即将所有过程从一个等级迁移到另一个等级。您可以逐步实现这些做法,以帮助改进机器学习系统的开发和生产自动化。

相关文章
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的未来:AI与机器学习的融合
【9月更文挑战第29天】在软件测试领域,自动化测试一直是提高测试效率和质量的关键。随着人工智能(AI)和机器学习(ML)技术的飞速发展,它们正逐步渗透到自动化测试中,预示着一场测试革命的来临。本文将探讨AI和ML如何重塑自动化测试的未来,通过具体案例展示这些技术如何优化测试流程,提高测试覆盖率和准确性,以及它们对测试工程师角色的影响。
20 7
|
6天前
|
机器学习/深度学习 人工智能 数据挖掘
探索自动化测试的未来:AI与机器学习的融合
【9月更文挑战第29天】在软件测试领域,自动化测试一直是提高效率和准确性的关键。但随着技术的发展,特别是人工智能(AI)和机器学习(ML)的兴起,我们见证了一个新时代的到来——自动化测试的未来正逐渐被重新定义。本文将探讨AI和ML如何改变自动化测试的面貌,从智能测试脚本的生成到测试结果的深度分析,我们将一探究竟这些前沿技术是如何使测试流程更加智能化、高效化,并预测它们将如何塑造软件测试的未来趋势。
|
20天前
|
机器学习/深度学习 人工智能 测试技术
自动化测试的未来:AI与机器学习的融合之路
【9月更文挑战第15天】在软件测试领域,自动化一直被视为提高效率和精确度的关键。随着人工智能(AI)和机器学习(ML)技术的不断进步,它们已经开始改变自动化测试的面貌。本文将探讨AI和ML如何赋能自动化测试,提升测试用例的智能生成、优化测试流程,并预测未来趋势。我们将通过实际代码示例来揭示这些技术如何被集成到现有的测试框架中,以及开发人员如何利用它们来提高软件质量。
51 15
|
2月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
49 1
|
2月前
|
机器学习/深度学习 人工智能 运维
自动化测试的未来:AI与机器学习的融合
【8月更文挑战第29天】随着技术的快速发展,自动化测试正在经历一场革命。本文将探讨AI和机器学习如何改变软件测试领域,提供代码示例,并讨论未来趋势。
|
2月前
|
数据采集 机器学习/深度学习 算法
"揭秘数据质量自动化的秘密武器:机器学习模型如何精准捕捉数据中的‘隐形陷阱’,让你的数据分析无懈可击?"
【8月更文挑战第20天】随着大数据成为核心资源,数据质量直接影响机器学习模型的准确性和效果。传统的人工审查方法效率低且易错。本文介绍如何运用机器学习自动化评估数据质量,解决缺失值、异常值等问题,提升模型训练效率和预测准确性。通过Python和scikit-learn示例展示了异常值检测的过程,最后强调在自动化评估的同时结合人工审查的重要性。
57 2
|
2月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
48 0
|
2月前
|
持续交付 C# 敏捷开发
“敏捷之道:揭秘WPF项目中的快速迭代与持续交付——从需求管理到自动化测试,打造高效开发流程的全方位指南”
【8月更文挑战第31天】敏捷开发是一种注重快速迭代和持续交付的软件开发方法,通过短周期开发提高产品质量并快速响应变化。本文通过问题解答形式,探讨在Windows Presentation Foundation(WPF)项目中应用敏捷开发的最佳实践,涵盖需求管理、版本控制、自动化测试及持续集成等方面,并通过具体示例代码展示其实施过程,帮助团队提升代码质量和开发效率。
52 0
|
2月前
|
机器学习/深度学习 数据采集 测试技术
利用Python实现简单的机器学习模型软件测试的艺术与科学:探索自动化测试框架的奥秘
【8月更文挑战第27天】在本文中,我们将一起探索如何通过Python编程语言创建一个简单的机器学习模型。我们将使用scikit-learn库中的线性回归模型作为示例,并通过一个实际的数据集来训练我们的模型。文章将详细解释每一步的过程,包括数据预处理、模型训练和预测结果的评估。最后,我们会用代码块展示整个过程,确保读者能够跟随步骤实践并理解每个阶段的重要性。
|
2月前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
51 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
下一篇
无影云桌面