谷歌大佬谈 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月前
|
机器学习/深度学习 人工智能 运维
自动化测试的未来:AI与机器学习的融合
【8月更文挑战第29天】随着技术的快速发展,自动化测试正在经历一场革命。本文将探讨AI和机器学习如何改变软件测试领域,提供代码示例,并讨论未来趋势。
|
22天前
|
运维 Devops jenkins
自动化运维:打造高效DevOps流水线
【8月更文挑战第44天】本文将通过深入浅出的方式,带你构建一个自动化的DevOps流水线,提升开发和部署效率。从基础概念到实际操作,我们一步步剖析如何实现代码提交、自动测试、构建、部署的全过程自动化。你将学会使用Jenkins、Git、Docker等工具,并结合Shell脚本编写,完成一个完整的自动化流程。文章末尾附有完整的示例代码,助你快速上手实践。
|
2月前
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
41 0
|
2月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
34 0
|
2月前
|
前端开发 Devops 持续交付
【前端自动化新高度】Angular与Azure DevOps完美结合:从零构建持续集成与持续部署的全自动流水线,提升开发效率与软件交付质量!
【8月更文挑战第31天】Angular作为领先的前端框架,以强大功能和灵活性深受开发者喜爱。Azure DevOps提供一站式DevOps服务,涵盖源码管理、持续集成(CI)及持续部署(CD)。本文将指导你如何在Azure DevOps中搭建Angular项目的CI/CD流程,并通过具体示例代码展示整个过程。首先,我们将创建一个Angular项目并初始化Git仓库;然后,在Azure DevOps中设置CI流水线,定义YAML文件以自动化构建和部署流程。最终实现每次提交代码后自动构建并部署至Azure Web App,极大提升了开发效率和软件交付速度,使团队更专注于创新。
19 0
|
2月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
下一篇
无影云桌面