Databricks 如何支持用于机器学习的 CI/CD?

CI/CD(持续集成和持续交付)是指开发、部署、监视和维护应用程序的自动化过程。 与仍在许多数据工程和数据科学团队中普遍使用的手动过程相比,通过自动执行代码的生成、测试和部署,开发团队能够更频繁、更可靠地交付发布版本。 用于机器学习的 CI/CD 汇集了 MLOps、DataOps、ModelOps 和 DevOps 技术。

本文介绍 Databricks 如何支持用于机器学习解决方案的 CI/CD。 在机器学习应用程序中,CI/CD 不仅对于代码资产非常重要,而且还会应用于数据管道,包括输入数据和模型生成的结果。

显示用于 ML 的 CI/CD 元素的端到端 MLOps 生命周期示意图。

需要 CI/CD 的机器学习元素

ML 开发的挑战之一是不同的团队需要负责开发过程的不同部分。 团队可能依赖不同的工具并有不同的发布日程安排。 Azure Databricks 提供单个统一的数据和 ML 平台以及集成的工具,以提高团队的效率并确保数据和 ML 管道的一致性和可重复性。

一般而言,对于机器学习任务,应在自动化 CI/CD 工作流中跟踪以下各项:

  • 训练数据,包括数据质量、架构更改和分发更改。
  • 输入数据管道。
  • 用于训练、验证和维护模型的代码。
  • 模型预测和性能。

将 Databricks 集成到 CI/CD 过程中

MLOps、DataOps、ModelOps 和 DevOps 是指开发过程与“运营”的集成 - 使过程和基础结构可预测且可靠。 本系列文章介绍如何将运营(“ops”)原则集成到 Databricks 平台上的 ML 工作流中。

Databricks 整合了 ML 生命周期所需的所有组件,包括用于生成“配置即代码”以确保可再现性的工具,以及用于生成“基础结构即代码”以自动预配云服务的工具。 它还包括日志记录和警报服务,以帮助你检测问题并在问题发生时排查问题。

DataOps:可靠且安全的数据

良好的 ML 模型依赖于可靠的数据管道和基础结构。 使用 Databricks Data Intelligence Platform,可以确保整个数据管道(从引入数据,到维护的模型的输出)都位于单个平台上并使用相同的工具集,这有助于提高生产力、可再现性、共享和故障排除。

DataOps 示意图

Databricks 中的 DataOps 任务和工具

下表列出了 Databricks 中常用的 DataOps 任务和工具:

DataOps 任务 Databricks 中的工具
引入和转换数据 自动加载程序和 Apache Spark
跟踪数据更改,包括版本控制和世系 Delta 表
生成、管理和监视数据处理管道 增量实时表
确保数据安全和治理 Unity Catalog
探索性数据分析和仪表板 Databricks SQL仪表板Databricks 笔记本
常规编码 Databricks SQLDatabricks 笔记本
计划数据管道 Databricks 作业
自动化常规工作流 Databricks 作业
创建、存储、管理和发现用于模型训练的特征 Databricks 特征存储
数据监视 Lakehouse Monitoring

ModelOps:模型开发和生命周期

开发模型需要进行一系列试验,并通过某种方式来跟踪和比较这些试验的条件和结果。 Databricks Data Intelligence Platform 提供 MLflow 用于跟踪模型开发,并提供 MLflow 模型注册表用于管理模型生命周期(包括暂存、维护和存储模型项目)。

将模型发布到生产环境后,有许多事情可能会发生变化,从而影响模型的性能。 除了监视模型的预测性能之外,还应该监视输入数据的质量或统计特征的变化,发生这些变化可能需要重新训练模型。

ModelOps 示意图

Databricks 中的 ModelOps 任务和工具

下表列出了 Databricks 提供的常用 ModelOps 任务和工具:

ModelOps 任务 Databricks 中的工具
跟踪模型开发 MLflow 模型跟踪
管理模型生命周期 Unity Catalog 中的模型
模型代码版本控制和共享 Databricks Git 文件夹
无代码模型开发 AutoML
模型监视 Lakehouse Monitoring

DevOps:生产和自动化

Databricks 平台通过以下方式支持生产环境中的 ML 模型:

  • 端到端数据和模型世系:在同一平台上提供从生产模型回溯到原始数据源的世系信息。
  • 生产级模型维护:根据业务需求自动纵向扩展或缩减。
  • 作业:自动完成作业并创建计划的机器学习工作流。
  • Git 文件夹:实现代码版本控制和从工作区共享,并帮助团队遵循软件工程最佳做法。
  • Databricks Terraform 提供程序:自动化跨云部署基础结构,以执行 ML 推理作业、终结点维护和特征化作业。

模型服务

为了将模型部署到生产环境,MLflow 大幅简化了过程,对于涉及大量数据的任务,它以批处理作业的形式提供一键式部署;在自动缩放群集上,它以 REST 终结点的形式提供部署方法。 Databricks 特征存储与 MLflow 的集成还能确保训练和维护特征的一致性;此外,MLflow 模型可以自动在特征存储中查找特征,甚至可以实现低延迟联机维护。

Databricks 平台支持许多模型部署选项:

  • 代码和容器。
  • 批处理维护。
  • 低延迟联机维护。
  • 设备上或边缘维护。
  • 多云方案,例如,在一个云上训练模型,在另一个云上部署模型。

有关详细信息,请参阅 Mosaic AI 模型服务

作业

Databricks 作业让你可以自动化和计划从 ETL 到 ML 的任何类型的工作负载。 Databricks 还支持与流行的第三方业务流程协调程序(例如 Airflow)集成。

Git 文件夹

Databricks 平台在工作区中提供了 Git 支持,以帮助团队通过 UI 执行 Git 操作来遵循软件工程最佳做法。 管理员和 DevOps 工程师可以通过 API 使用他们偏好的 CI/CD 工具设置自动化。 Databricks 支持任何类型的 Git 部署,包括专用网络。

有关使用 Databricks Git 文件夹进行代码开发的最佳做法的详细信息,请参阅使用 Git 集成和 Databricks Git 文件夹的 CI/CD 工作流使用 CI/CD。 将这些技术与 Databricks REST API 相结合,可以使用 GitHub Actions、Azure DevOps 管道或 Jenkins 作业生成自动化部署过程。

用于治理和安全性的 Unity Catalog

Databricks 平台包含Unity Catalog,管理员可以利用它来为 Databricks 中的所有数据和 AI 资产设置精细访问控制、安全策略和治理。