你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Databricks 编排 MLOps

Azure Databricks

解决方案构想

本文介绍了一种解决方案构想。 云架构师可以通过本指南来帮助可视化此体系结构的典型实现的主要组件。 以本文为起点,设计一个符合工作负荷特定要求的架构合理的解决方案。

本文提供了机器学习操作 (MLOps) 体系结构和使用 Azure Databricks 的过程。 该过程定义了一种将机器学习模型和管道从开发环境移动到生产环境的标准化方法,以及包含自动和手动过程的选项。

体系结构

该图显示将 Azure Databricks 用于 MLOps 的解决方案。

下载此体系结构的 Visio 文件

工作流

此解决方案提供了一个使用 Azure Databricks 的强大 MLOps 过程。 该体系结构中的所有元素都是可插入的,因此可以根据需要在整个体系结构中集成其他 Azure 和第三方服务。 此体系结构和描述改编自电子书 The Big Book of MLOps。 此电子书更详细地探讨了此处所述的体系结构。

  • 源代码管理:此项目的代码存储库组织笔记本、模块和管道。 数据科学家创建开发分支来测试更新和新模型。 代码在笔记本或 IDE 中开发,由 Git 提供支持,并与 Databricks Repos 集成以便与 Azure Databricks 工作区同步。 源代码管理将机器学习管道从开发提升到过渡(用于测试)再到生产(用于部署)。

  • Lakehouse - 生产数据:数据科学家在开发环境中工作,在该环境中,他们可以以只读方式访问生产数据。 (或者,可以对数据进行镜像或编辑。)他们还可以对开发存储环境进行读/写访问,以便进行开发和试验。 建议对数据使用 Lakehouse 体系结构,其中数据以 Delta Lake 格式存储在 Azure Data Lake Storage 中。 访问控制是使用 Microsoft Entra 凭据直通表访问控制定义的。

开发

在开发环境中,数据科学家和工程师开发机器学习管道。

  1. 探索数据分析 (EDA):数据科学家在交互式迭代过程中探索数据。 此临时工作可能不会部署到过渡或生产环境。 工具包括 Databricks SQLdbutils.data.summarizeAutoML

  2. 模型训练和其他机器学习管道:机器学习管道在笔记本或 IDE 中开发为模块化代码。 例如,模型训练管道从特征存储和其他 Lakehouse 表读取数据。 训练和优化 MLflow 跟踪服务器的日志模型参数和指标。 特征存储 API 记录最终模型。 这些日志链接模型、其输入以及训练代码。

  3. 提交代码:为了将机器学习工作流提升到生产环境,数据科学家将用于特征化、训练和其他管道的代码提交给源代码控制。

过渡

在过渡环境中,CI 基础结构测试模拟生产的环境中的机器学习管道更改。

  1. 合并请求:当针对源代码管理中项目的暂存(主)分支提交合并(或拉取)请求时,Azure DevOps 等持续集成和持续交付 (CI/CD) 工具将运行测试。

  2. 单元和 CI 测试:单元测试在 CI 基础结构中运行,集成测试在 Azure Databricks 上运行端到端工作流。 如果测试通过,代码更改将合并。

  3. 生成发布分支:当机器学习工程师准备将更新的机器学习管道部署到生产环境时,他们可以生成新发布。 CI/CD 工具中的部署管道会将更新的管道重新部署为新工作流

生产

机器学习工程师管理生产环境,其中机器学习管道直接为最终应用程序提供服务。 生产中的关键管道刷新特征表、训练和部署新模型、运行推理或服务,并监视模型性能。

  1. 特征表刷新:此管道读取数据、计算特征并写入特征存储表。 它以流模式持续运行、按计划运行或被触发。

  2. 模型训练:在生产中,触发或计划模型训练或重新训练管道,以针对最新的生产数据训练新模型。 模型注册到 MLflow 模型注册表

  3. 持续部署:注册新模型版本会触发 CD 管道,该管道运行测试,以确保模型在生产环境中性能良好。 当模型通过测试时,将通过模型阶段转换在模型注册表中跟踪其进度。 注册表 Webhook 可用于自动化。 测试可以包括合规性检查、将新模型与当前生产模型进行比较的 A/B 测试,以及基础结构测试。 测试结果和指标记录在 Lakehouse 表中。 在将模型转换到生产环境之前,可以选择要求手动签核。

  4. 模型部署:当模型进入生产时,将部署该模型以供评分或提供服务。 最常见的部署模式是:

    • 批处理或流式处理评分:对于几分钟或更长时间的延迟,批处理和流式处理是最具成本效益的选项。 评分管道从特征存储读取最新数据,从模型注册表加载最新生产模型版本,并在 Databricks 作业中执行推理。 它可以将预测发布到 Lakehouse 表、Java Database Connectivity (JDBC) 连接、平面文件、消息队列或其他下游系统。
    • 联机服务 (REST API):对于低延迟用例,通常需要联机服务。 MLflow 可以将模型部署到在 Azure Databricks 上提供服务的 MLflow 模型、云提供商服务系统和其他系统。 在所有情况下,服务系统都使用模型注册表中的最新生产模型进行初始化。 对于每个请求,它从联机特征存储获取特征,并进行预测。
  5. 监视:持续或定期工作流监视输入数据和模型对偏移、性能及其他指标的预测。 Delta Live Tables 可以简化自动执行监视管道以及将指标存储在 Lakehouse 表中。 Databricks SQLPower BI 和其他工具可以从这些表中进行读取,以创建仪表板和警报。

  6. 重新训练:此体系结构同时支持手动和自动重新训练。 计划的重新训练作业是保持模型为最新状态的最简单方法。

组件

  • Data Lakehouse。 Lakehouse 体系结构结合了数据湖和数据仓库的最佳元素,提供数据仓库中通常提供的数据管理和性能,以及数据湖提供的低成本灵活对象存储。
    • Delta Lake 是 Lakehouse 的开源数据格式的建议选项。 Azure Databricks 将数据存储在 Data Lake Storage 中,并提供高性能查询引擎。
  • MLflow 是用于管理端到端机器学习生命周期的开源项目。 下面是其主要组件:
    • 跟踪允许跟踪试验,以记录和比较参数、指标和模型项目
    • MLFlow 模型允许将模型从任何机器学习库存储和部署到各种模型服务和推理平台。
    • 模型注册表提供了一个集中的模型存储,用于管理从开发到生产的模型生命周期阶段转换
    • 模型服务允许将 MLflow 模型以 REST 终结点的形式托管
  • Azure Databricks。 Azure Databricks 提供了一种托管的 MLflow 服务,该服务具有企业安全特性、高可用性并与其他 Azure Databricks 工作区功能集成。
    • 用于机器学习的 Databricks Runtime 自动创建已针对机器学习优化的群集,并预安装 TensorFlow、PyTorch 和 XGBoost 等常用机器学习库,以及用于机器学习的 Azure Databricks 工具(例如 AutoML 和特征存储客户端)
    • 特征存储是一种集中式特征存储库。 它支持特征共享和发现,并有助于避免模型训练和推理之间的数据倾斜。
    • Databricks SQL。 Databricks SQL 针对 Lakehouse 数据的 SQL 查询以及可视化效果、仪表板和警报提供了简单的体验。
    • Databricks Repos 在 Azure Databricks 工作区中提供了与 Git 提供程序的集成,简化了笔记本或代码和 IDE 集成的协作开发
    • 工作流作业提供了在 Azure Databricks 群集中运行非交互式代码的方法。 对于机器学习,作业为数据准备、特征化、训练、推理和监视提供了自动化。

备选方法

可以根据 Azure 基础结构定制此解决方案。 常见的自定义包括:

  • 共享通用生产工作区的多个开发工作区。
  • 交换现有基础结构的一个或多个体系结构组件。 例如,可以使用 Azure 数据工厂来协调 Databricks 作业。
  • 通过 Git 和 Azure Databricks REST API 与现有 CI/CD 工具集成。

方案详细信息

MLOps 有助于降低机器学习和 AI 系统中的故障风险,并提高协作和工具的效率。 有关 MLOps 的简介和该体系结构的概述,请参阅在 Lakehouse 上构建 MLOps

使用此体系结构,可以:

  • 将业务利益干系人与机器学习和数据科学团队联系起来。 此体系结构允许数据科学家使用笔记本和 IDE 进行开发。 它使业务利益干系人能够在 Databricks SQL 中查看指标和仪表板,所有这些都在同一 Lakehouse 体系结构中。
  • 使机器学习基础结构以数据为中心。 此体系结构处理机器学习数据(来自特征工程、训练、推理和监视的数据)的方式与处理其他数据一样。 它重复使用用于生产管道、仪表板和其他一般数据处理的工具,以进行机器学习数据处理。
  • 在模块和管道中实现 MLOps。 与任何软件应用程序一样,此体系结构中的模块化管道和代码允许测试各个组件,并降低了未来重构的成本。
  • 根据需要自动执行 MLOps 过程。 在此体系结构中,可以自动执行步骤以提高工作效率并降低人为错误的风险,但并非每个步骤都需要自动执行。 除了用于自动化的 API 外,Azure Databricks 还允许 UI 和手动过程。

可能的用例

此体系结构适用于所有类型的机器学习、深度学习和高级分析。 此体系结构中使用的常见机器学习/AI 技术包括:

  • 经典机器学习,如线性模型、基于树的模型和提升。
  • 现代深度学习,如 TensorFlow 和 PyTorch。
  • 自定义分析,如统计信息、贝叶斯方法和图形分析。

该体系结构同时支持小型数据(单台计算机)和大型数据(分布式计算和 GPU 加速)。 在该体系结构的每个阶段,可以选择计算资源和库以适应数据和问题维度。

该体系结构适用于所有类型的行业和业务用例。 使用此体系结构和类似体系结构的 Azure Databricks 客户包括以下行业中的小型和大型组织:

  • 消费品和零售服务
  • 金融服务
  • 医疗保健与生命科学
  • 信息技术

有关示例,请参阅 Databricks 网站

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤