使用 Databricks 实施 MLOps

在这个数据驱动决策的时代,机器学习 (ML) 集成对于寻求在各自行业中获得竞争优势的组织来说变得越来越重要。麦肯锡最近的一项调查显示,当今 56% 的组织至少在一项业务运营中使用机器学习技术。 [1] 这意味着人工智能 (AI) 和机器学习将在未来几年使全球超过一半的组织受益。

随着机器学习和相关技术的不断发展,需要开发一种系统方法来确保生产中模型的无缝高效协作、部署、监控和持续改进。这就是 MLOps 的用武之地。MLOps 提供了一个框架,弥合了机器学习和运营之间的差距,使组织能够有效且高效地部署机器学习模型。

在此背景下,统一开放的分析平台 Databricks 已成为实施复杂 MLOps 工作流程的宝贵合作伙伴。它允许组织管理端到端机器学习生命周期,并确保所有模型在现实环境中准确、有效和可靠。

这篇文章将深入回顾确保使用 Databricks 成功实施 MLOps 的步骤、策略和最佳实践。


什么是 MLOps?

MLOps 是指将机器学习模型投入生产的系统流程、技术和最佳实践的组合。这种范例有助于组织中数据科学家和运营专业人员之间的协作和沟通。 MLOps 结合了 DevOps、DataOps 和 ModelOps,使业务运营更加高效、可靠和安全。 MLOps 的主要组成部分是代码、数据和机器学习模型。

为什么使用 Databricks 实施 MLOps?

使用 Databricks 实施 MLOps 为团队提供了多种好处,有助于更有效和高效的机器学习操作。这些好处包括:

统一平台

使用 Databricks 实现 MLOps 的最大优势在于,后者为您提供了一个统一的平台,您可以通过统一的访问控制来管理机器学习操作的三个主要组件。这种统一的方法增强了数据科学家和运营专业人员之间的协作,从而最大限度地减少与管理数据和部署机器学习模型相关的风险和延迟。

可扩展性和性能

Databricks 提供可扩展的集群,经过精心设计,可以容纳任何规模的数据集、计算和机器学习模型。在大规模数据处理引擎(例如 Apache Spark、Google BigQuery、Apache Hadoop、Apache Flink、Lumify、Apache Sqoop 等)上训练机器学习模型时,这种可扩展性尤其重要。 [2]

MLflow集成

MLflow 基本上是一个用于管理机器学习工作流程的开源平台。该平台为您提供了跟踪实验、模型版本控制、打包代码和部署模型所需的工具。所有这些使您能够更有效地实施 MLOps 策略。

Lakehouse 建筑的优点

通过使用 Databricks 实施 MLOps 实践,您可以利用 Data Lakehouse 的优势。 [3] 这种开放式数据管理架构结合了数据仓库和数据湖的最佳功能。借助 Data Lakehouse 架构,您将能够在 ML 工作流程中使用相同的数据源,而无需将数据从一个数据仓库解决方案移动到另一个数据仓库解决方案。这使得 MLOps 实践的实施更加灵活、可扩展且更具成本效益。

简化的机器学习工作流程

借助 Databricks,您可以轻松消除孤岛、降低 ML 工作流程复杂性并提高整体生产力。这是因为数据准备、模型部署和监控都是在同一个平台上完成的。

自动化部署

Databricks 的优点之一是它允许您使用 REST API 和 Python 或 Bash 等脚本语言来自动化机器学习工作流程和模型部署。生成的脚本能够创建新的工作流程并向其添加必要的步骤。机器学习工作流程和模型部署的自动化最大限度地减少了部署期间出现手动错误的可能性。它还保证模型发布的一致性。

改进模型训练

在 AutoML 系统的帮助下,Databricks 重新处理涉及特征工程和标准化等特定任务的数据。这使得数据更适合实时训练机器学习模型,从而提高所得模型的准确性。

使用 Databricks 增强您的 MLOps 实施。了解我们的Databricks 部署服务如何简化您迈向数据驱动型成功的旅程。


使用 Databricks 实施 MLOps 的最佳实践

使用 Databricks 成功实施 MLOps 涉及多种最佳实践,包括以下内容:

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

在 Databricks 中,执行环境是指代码使用机器学习模型和数据的地方。通常,每个执行环境由计算实例及其持续时间组成。

使用 Databricks 实现 MLOps 时,强烈建议为机器学习代码和模型开发的不同阶段创建单独的环境。此外,每个环境都应包括明确定义的从一个阶段到另一阶段的过渡。

访问控制和版本控制

访问控制和版本控制是任何成功的软件操作流程的关键组成部分,包括使用 Databricks 实施 MLOps。

Databricks 建议执行以下步骤:

  • 使用 Git 进行版本控制:这样,可以在笔记本或集成开发环境 (IDE) 中准备和开发代码。此外,建议您使用 Databricks Repos 集成来与 Git 提供程序集成,以确保与 Databricks 工作区的无缝同步。
  • 将数据存储在 Lakehouse 架构中:为了实现最佳数据管理,强烈建议将数据存储在云帐户中的 Lakehouse 架构中。基本上,原始数据和特征表应以 Delta Lake 格式存储,并通过访问控制限制谁可以访问、读取和修改它们。
  • 使用 MLflow 管理 ML 模型和模型开发:使用 MLflow,您可以轻松跟踪模型开发过程并随时随地保存代码快照、指标、模型参数和其他描述性数据。

部署代码,而不是模型

在大多数情况下,Databricks 建议用户将代码而不是模型从一种环境部署到另一种环境。这样做可以确保机器学习开发项目中的所有代码都经过相同的审查和测试流程。此外,它还确保生成模型的最终生产版本是使用生产代码进行训练的。


使用 Databricks 实施 MLOps 的步骤

以下是使用 Databricks 实施 MLOps 的分步指南:

发展阶段

开发阶段背后的主要思想是实验。在此阶段,数据科学家和工程师共同创建机器学习管道。他们还开发必要的功能并运行各种实验来优化所得模型的性能。

开发阶段涉及的一些步骤包括:

  • 数据准备和管理

此过程的第一步通常是将数据上传到 Databricks。可以使用 Java 数据库连接 (JDBC) 或简单地上传 CSV 文件轻松完成数据加载。上传完数据后,您可以从那里创建表格。在大多数情况下,在开发环境中工作的数据科学家和工程师对生产数据具有只读访问权限。

但是,开发环境可能可以访问生产数据的镜像版本,以满足数据治理要求。值得注意的是,数据科学家拥有单独的开发存储环境,他们可以在其中开发和试验新功能和数据表。

  • 探索性数据分析 (EDA)

数据专业人员经常参与探索和分析数据的交互式和迭代过程。这是使用 Databricks SQL、AutoML 和 dbutils.data.summarize 等各种工具完成的。 EDA流程不一定部署在其他执行环境中。

  • 代码

机器学习系统可能需要的所有代码通常都存储在代码存储库中。有时,数据专业人员会在 Git 项目的开发阶段创建新的和更新的 ML 管道。您可以轻松管理 Databricks 内部或外部的代码和模型工件,并使用 Databricks Repos 将其与 Databricks 工作区同步。

  • 更新功能表

使用 Databricks 实现 MLOps 时,您需要将原始数据转换为有用的数据,生成的 ML 模型可以使用这些数据来做出更好的预测。该项目中的模型开发管道读取保存在要素存储中的原始数据和现有要素表。数据科学家使用开发特征表来创建原型模型。

一旦代码被提升到生产阶段,这些更改就会更新生产功能表。 [4] 最重要的是,其他团队成员可以重用保存在要素存储中的要素表,以了解它们是如何构建的。

值得注意的是,特征表可以与其他机器学习管道分开管理,特别是当它们由不同的团队拥有时。

  • 模型训练

完成特征工程后,下一步是训练和调整模型并选择正确的算法或架构,以便您的模型能够达到所需的精度。借助 Databricks 的 AutoML,您可以轻松地从“数据”选项卡中选择数据,并使其自动执行大量选择。这有助于节省数据科学家从头开始构建这些模型所需的时间。

更好的是,该界面仅涉及几个下拉菜单,并且与已在“数据”选项卡中创建和存储的要素表和增量表完全集成。选择预测目标并决定如何处理插补后,AutoML 将处理模型选择的最后阶段。一旦选择、训练和调整了模型,就需要对其保留数据进行质量测试。之后,结果将被记录到 MLflow 跟踪服务器。

  • 提交代码

为了将 ML 工作流程推进到生产阶段,数据专业人员需要将特征化、训练和其他 ML 管道所需的代码提交到源代码控制存储库。此步骤标志着开发生命周期的结束。

演出阶段

登台阶段的主要重点是彻底测试 ML 管道代码并确保其为生产做好准备。此测试是在与生产设置非常相似的环境中完成的。项目的所有代码都在此阶段进行测试。这包括模型训练的代码以及特征工程管道的代码。

机器学习工程师通常负责创建持续集成 (CI) 管道来实施该单元以及此阶段发生的所有测试。登台阶段的最终产品是发布分支,它触发持续集成(CI)/持续交付(CD)系统以启动生产阶段。

以下是暂存阶段涉及的步骤:

  • 合并请求

登台阶段从 ML 工程师向源代码控制中的登台分支发出合并请求开始。发送请求后,强大的 CI/CD 流程就会开始。

  • 单元和集成测试

单元测试在 CI 管道内执行,以确保管道的所有单独组件正常运行。然后,执行端到端集成测试以验证 Databricks 上的机器学习工作流程。如果单元测试和集成测试都通过了,代码更改将合并到暂存分支。如果测试失败,CI/CD 系统将通知用户并将结果发布在合并请求上。

  • 创建发布分支

一旦完成所有测试并且机器学习工程师对更新的机器学习管道充满信心,他们将继续创建发布分支。这会触发 CI/CD 系统更新生产作业。

  • 更新功能表

一旦生产数据可用,该机器学习管道就会摄取该数据并更新保存在要素存储中的要素表。该管道可以作为流作业或批处理的一部分连续运行,也可以由某些事件触发。

  • 模型训练

在生产阶段,模型训练要么由代码更改触发,要么计划使用最新的生产数据来训练新模型。训练完成后,训练后的模型将在 MLflow 注册表中注册。

  • 持续部署 (CD)

经过训练的模型的注册会触发 CD 管道,该管道执行一系列测试以确保生成的模型的部署可持续性。这些测试包括合规性检查、性能评估以及与当前生产模型的 A/B 比较。

  • 模型部署

一旦测试通过,模型就会被部署用于服务或评分。在线服务和批量/流式评分是最常见的部署模式。

  • 监控

您需要监控输入数据和统计属性的模型预测,例如数据漂移、模型性能和其他相关指标。无论您使用哪种部署模式,您都可以将生成的模型的输入查询和预测记录到 Delta Live Tables。

  • 再培训

使用 Databricks 实施 MLOps 的最后一步是重新训练生成的模型,以确保它们保持最新状态并与当前事件相关。 Databricks 支持自动和手动再培训方法。

尽管 MLOps 并不是一个新概念,但许多组织花费大量时间来训练和调整 ML 模型。此外,他们必须与机器学习工程师和数据科学家密切合作,以确保他们使用最新的数据并在部署之前测试他们的模型。事实证明,这个过程成本高昂、耗时且乏味。

幸运的是,在 Databricks 的帮助下,数据专业人员现在可以加快获得基线模型的过程。他们还可以使用生成的代码在尽可能短的时间内构建生产模型,并使用内置接口与机器学习工程师和数据专业人员无缝协作。

暂无评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注