MLOps工作流在砖

本文描述了如何使用MLOps砖Lakehouse平台优化的性能和长期效率机器学习(ML)系统。bob体育客户端下载它包括一般建议MLOps架构,描述了一个广义工作流使用砖Lakehouse的平台,您可以使用作为一个模型你毫升开发到生产的过程。bob体育客户端下载

MLOps是什么?

MLOps是一组流程和自动化步骤来管理代码、数据和模型。它结合了DevOps, DataOps ModelOps。

MLOps lakehouse

毫升等资产代码、数据和模型开发的阶段,从早期发展阶段,没有严格的访问限制和不严格的测试,通过一个中间测试阶段,严格控制的最后一个生产阶段。砖Lakehouse平台允许您管理这些资产在一个平bob体育客户端下载台统一的访问控制。您可以开发数据应用和ML的应用程序在同一平台,减少风险和延迟与移动数据有关。bob体育客户端下载

一般建议MLOps

本节包含了一些一般性的建议MLOps砖上的更多信息的链接。

为每个阶段创建一个单独的环境

一个执行环境的地方或使用代码创建模型和数据。每个执行环境包括计算实例,运行时和库,自动工作。

砖建议创建单独的环境毫升代码和模型发展的不同阶段与明确的阶段之间的转换。本文中描述工作流遵循这一过程,使用阶段的常见的名字:

其他配置也可以用来满足您的组织的特定需求。

访问控制和版本控制

访问控制和版本都是关键的组件的任何软件操作过程。砖建议如下:

  • 使用Git版本控制。管道和代码应该存储在Git版本控制。阶段之间移动毫升逻辑可以解释为移动代码的开发分支,staging分支,发布分支。使用砖回购与你的Git提供者集成和同步笔记本与砖工作区和源代码。砖还提供了额外的工具Git集成和版本控制;看到开发工具和指导

  • 在Lakehouse架构使用增量表中存储数据。数据应该存储在一个Lakehouse架构云在你的帐户。原始数据和功能表应该存储三角洲表与访问控制来决定谁可以阅读和修改。

  • 与MLflow管理模型和模型开发。您可以使用MLflow跟踪模型开发过程和保存代码快照、模型参数、指标、和其他元数据。使用模型注册版本管理模型和部署状态。模型注册中心提供人则和一个API,这样你就可以与CD系统集成,并处理访问控制模型

部署代码,而不是模型

在大多数情况下,砖建议在ML开发过程中,你推广代码,而不是模型,从一个环境到另一个。移动项目资产这种方式确保毫升开发过程中的所有代码经过相同的代码审查和集成测试流程。它还确保生产版本的模型训练在生产代码。更详细讨论的选择和权衡,明白了模型部署模式

发展阶段

发展阶段的重点是实验。数据科学家开发的特性和模型优化模型的性能和运行实验。开发过程的输出是毫升管道代码,包括特性计算、模型训练、推理和监控。

MLOps发展阶段图

编号的步骤对应于图中所示的数字。

1。数据源

数据科学家在dev工作环境经常有生产数据的只读访问。在某些情况下,以满足数据治理需求,开发环境可能只访问一个镜子或修订版本的生产数据。数据科学家也有读写访问到一个单独的开发存储环境开发和试验新功能和其他数据表。

2。探索性数据分析(EDA)

数据科学家在交互式探索和分析数据,迭代过程使用笔记本,可视化砖的SQL

这个特别的过程一般不管道的一部分,将被部署在其他执行环境。

3所示。代码

毫升系统所有的代码存储在一个代码库。数据科学家创建新的或更新的管道在开发分支的Git项目。可以开发的代码的内部或外部使用砖与砖同步的工作空间砖回购

4所示。更新功能表

模型开发管道读取原始数据表和现有的功能表,和写入表中特色商店。这个管道包括两个任务:

  • 数据准备。检查数据质量问题。

  • 创建或更新功能表。数据科学家开发或更新代码创建功能。这些管道可以从功能存储和读取其他Lakehouse表和写入功能开发存储环境中的表。数据科学家然后使用这些开发功能表来创建原型模型。当代码是晋升为生产,这些变化更新生产特性表。

    功能从其他毫升管道管道可以分别管理,特别是如果他们是由不同的团队。

5。火车模型

数据科学家开发模型训练和其他管道在只读生产数据或非生产数据。管道可以在开发或使用功能表prod环境。

这个管道包括两个任务:

  • 培训和调优。模型训练过程从功能存储读取特性和银-或金牌Lakehouse表,日志模型参数,指标和工件MLflow跟踪服务器。

    当培训和hyperparameter调整完成后,数据科学家保存最后的模型工件跟踪服务器。这记录之间的联系的模型,其输入数据,并用于生成的代码。

    当这个培训管道在登台和生产运行,毫升工程师(或他们的CI / CD代码)可以加载模型通过使用URI(或路径),然后把模型到模型中注册表管理和测试。

  • 评估。通过测试了数据质量评估模型。这些测试的结果被记录到MLflow跟踪服务器。

    如果您的组织的治理需求包括额外的信息模型,您可以保存使用MLflow跟踪。典型的工件是纯文本描述和模型解释像那些由世鹏科技电子或石灰。

6。提交代码

特性工程开发代码后,培训,推理,和其他管道、数据科学家或ML工程师提交开发分支变化到源代码控制。

分段阶段

这个阶段的重点是测试毫升管道代码以确保它是准备生产。所有的ML管道代码测试在这个阶段,包括代码模型训练以及特性工程管道、推理代码,等等。

毫升工程师创建一个CI管道来实现单元测试和集成测试运行在这个阶段。分段过程的输出是一个触发器的发布分支CI / CD系统开始生产阶段。

MLOps分期阶段图

编号的步骤对应于图中所示的数字。

交付准备环境可以有自己的存储区域进行测试和ML管道特性表。这个存储通常是暂时的,只保留直到测试完成。开发环境也可能需要访问这个数据存储用于调试目的。

1。合并请求

部署过程开始当一个毫升工程师创建一个请求合并到staging分支(通常是“主要”分支)在源代码控制。合并请求触发一个持续集成(CI)的过程。

2。单元测试

CI过程自动构建源代码和触发单元测试。如果测试失败,合并请求被拒绝。单元测试不与数据或其他服务。

3所示。集成测试(CI)

然后CI过程运行集成测试。集成测试运行所有管道(包括工程特点、模型训练、推理和监控),以确保他们一起正常工作。交付准备环境应该尽可能密切与生产环境一致是合理的。

为了减少运行集成测试所需的时间,模型训练步骤可以忠诚的测试和速度之间权衡。例如,您可能使用一小部分数据或运行少训练迭代。根据模型的用途,你可以选择做全面的负载测试。

分段分支上的集成测试通过后,可以促进生产的代码。

4所示。合并分段分支

如果测试通过,代码可以被合并到staging分支。如果测试失败,CI / CD系统应通知用户和帖子结果合并(拉)请求。

你可以安排定期举办部门集成测试。这是一个好主意如果分支是由不同的用户经常更新的。

5。创建一个发布分支

当代码已经准备好部署到生产、ML工程师创建一个发布分支,触发CI / CD系统更新生产工作。

生产阶段

毫升工程师自己的生产环境,毫升管道在哪里部署。这些管道计算新的特性值,训练和测试新的模型版本,发布预测下游表或应用程序,并监控整个过程,以避免性能下降和不稳定。

数据科学家通常不具备写或计算访问生产环境。然而,重要的是,他们的可见性测试结果,日志、模型构件,和生产管道状态,允许他们在生产中识别和诊断问题。

MLOps生产阶段图

编号的步骤对应于图中所示的数字。

1。更新功能表

随着新的生产数据可用,这个管道吸入并更新生产特性存储表。这个管道可以运行批处理或流媒体工作,可以安排,触发,或连续运行。

2。火车模型

火车上的生产版本的模型完整的生产数据和与MLflow模型注册中心注册它。这个管道可以触发代码更改或自动化的培训工作。

这个管道包括两个任务:

  • 培训和调优。在开发阶段,autologging保存的记录培训过程MLflow跟踪服务器。这包括模型指标、参数、标签和模型本身。

    在开发期间,许多算法和hyperparameters数据科学家可能测试。生产培训代码,通常只考虑表现选项。限制调优以这种方式节省时间,可以减少方差在自动调优再培训。

  • 评估。模型质量评价测试了生产数据。这些测试的结果被记录到MLflow跟踪服务器。这个步骤使用指定的评价指标数据的科学家发展阶段。这些指标可以包括自定义代码。

模型训练完成后,注册的模型工件MLflow模型注册用于生产环境。初始模型注册阶段是“没有”。

3所示。持续部署(CD)

CD过程需要新模型(模型注册阶段= None),测试他们(过渡到“阶段=分期”),如果成功部署他们(促进他们”阶段=生产”)。光盘可以使用来实现模型注册中心人或者你自己的CD系统。

这个管道包括3个任务:

  • 合规检查。这些测试负载模型从模型中注册表,执行任何所需的合规检查您的组织(例如,标签或文档)和批准或拒绝请求基于测试结果。合规检查需要人类专家,这个自动化的步骤可以计算统计数据或可视化人工审核。不管结果如何,记录结果的模型版本模型注册标记和评论中使用元数据描述。

    您可以使用MLflow UI管理阶段过渡和转换请求手动或使用MLflow api和人自动化。如果模型通过合规检查,然后转换请求批准和模型是晋升为“舞台=”。如果模型失败,请求被拒绝和过渡模型是模型中搬到舞台=存档的注册表。

  • 比较分段生产。为了防止性能下降,你应该比较模型的性能提升为暂存当前生产版本。比较指标和方法依赖于用例和可以包括金丝雀部署,A / B测试,或者其他方法。对比测试的结果应该保存到Lakehouse指标表。

    如果这是第一次部署还没有生产版本,你可以比较临时版本业务启发式或其他阈值作为基准。

  • 请求模型过渡到生产。如果候选人模型通过比较测试,你可以请求转换模型中注册阶段=生产。你可以使用MLflow UI手动或自动使用MLflow API和人。这也是一个好主意考虑需要人工批准在这一点上。这是最后一步之前发布的模型生产和集成到现有的业务流程。您可以包括人工审查核实合规检查,性能比较和任何其他检查很难自动化。

4所示。在线服务(REST api)

对于低延迟的用例,您可以使用MLflow部署模型的在线服务。选项包括砖模型的服务,云提供者服务端点或自定义应用程序服务。

系统负载服务生产模型版本从模型中注册表。对于每个请求,它从网上获取功能特性存储、成绩数据,并返回预测。您可以使用服务日志请求和预测系统,数据传输层,或模型。

5。推理:批处理或流

批处理或流推理工作的管道从功能存储读取最新数据,加载模型从生产模型版本注册表,成绩数据,并返回预测。批处理或流推理通常是最具成本效益的选择更高的吞吐量,延迟高的用例。

批处理作业通常发布预测Lakehouse表、JDBC连接,或平面文件。流工作通常发布预测Lakehouse表或消息队列,如Apache卡夫卡。

6。监控

您应该监视的输入数据和模型预测统计特性(如数据漂移和模型性能)和计算性能(如错误和吞吐量)。您可以创建警报基于这些指标或发布在仪表板。

无论部署模式,您可以登录和预测模型的输入查询三角洲表。您可以创建工作漂移监测数据和模型,你可以使用砖SQL仪表板上显示状态和发送警报。数据科学家可以授予访问日志和度量在开发环境中对生产问题进行调查。

这个管道包括3个任务:

  • 数据摄取。这个管道读取日志从批处理、流媒体、或在线推理。

  • 检查数据的准确性和漂移。管道计算指标的输入数据,模型的预测,和基础设施的性能。数据科学家指定数据和模型指标在开发期间,和ML工程师指定基础设施指标。

  • 发布标准。管道写入Lakehouse表进行分析和报告。您可以使用砖SQL来创建监视仪表板跟踪模型的性能,并设置监控工作或仪表板工具指标超过指定阈值时发出通知。

7所示。触发模型再培训

您可以创建一个计划工作与最新数据重新训练模型,或者你可以建立一个监测触发培训当它检测到漂移的数据或模型。如果模型监测指标显示性能问题,数据科学家可能需要返回到开发环境和开发一个新的模型版本。

请注意

完全自动化的培训很难得到正确的模型,因为它可能不是明显的如何解决一个问题被监测模型。例如,模型观测数据漂移造成的性能问题可能会被再培训模型固定在更新数据,或者可能需要额外的(手动)功能开发工作来编码一个新的信号数据。

  • 如果定期新数据是可用的,您可以创建一个安排的工作运行模型训练代码最新的可用数据。

  • 如果监控管道可以识别模型的性能问题和发送警报,你可以配置自动触发再培训。自动再培训和重新部署以最少的人工干预可以改善模型性能如果管道可以检测情况,如输入数据的分布的改变或退化模型的性能。