MLflow 用于生成式 AI 代理和 ML 模型生命周期

本文介绍如何使用 Databricks 上的 MLflow 开发高质量的生成 AI 代理和机器学习模型。

注意

如果刚开始使用 Azure Databricks,请考虑在 Databricks Community Edition 上尝试 MLflow。

什么是 MLflow?

MLflow 是用于开发模型和生成 AI 应用程序的开源平台。 它具有以下主要组件:

  • 跟踪:用于跟踪试验,以记录和比较参数与结果。
  • 模型:允许管理模型并将模型从各种 ML 库部署到各种模型服务和推理平台。
  • 模型注册表:允许使用模型版本控制和注释功能管理模型部署过程,从过渡到生产。
  • AI 代理评估和跟踪:可帮助你比较、评估和排查代理问题,从而开发高质量的 AI 代理。

MLflow 支持 JavaPythonRREST API。

MLflow 3.0(beta 版)

重要

此功能在 Beta 版中。

Azure Databricks 上的 MLflow 3.0 为 Databricks Lakehouse 上的机器学习模型、生成 AI 应用程序和代理提供最先进的试验跟踪、可观测性和性能评估。 在 Azure Databricks 上使用 MLflow 3.0,可以:

  • 集中跟踪和分析所有环境中的模型、AI 应用程序和代理的性能,从开发笔记本中的交互式查询到生产批处理或实时服务部署。

    模型跟踪 UI。

  • 使用 Unity 目录协调评估和部署工作流,并访问模型、AI 应用程序或代理的每个版本的综合状态日志。

    包含分阶段推出和指标集合的复杂部署作业。

  • 从 Unity 目录中的模型版本页和 REST API 查看和访问模型指标和参数。

    Unity 目录中的“模型版本”页,其中显示了多个运行中的指标。

  • 对你所有的生成式 AI 应用和智能体的请求与回复(跟踪数据)进行注释,使人工专家和自动化技术(例如“大模型作为评审者”)能够提供丰富反馈。 可以利用此反馈来评估和比较应用程序版本的性能,并生成数据集以提高质量。

    “模型”页面的“跟踪”选项卡展示了多个跟踪的详细信息。

这些功能可简化和加快所有 AI 项目的评估、部署、调试和监视。

MLflow 3.0 还引入了“记录模型”和“部署作业”的概念。

  • 记录的模型可帮助你跟踪模型的整个生命周期中的进度。 使用log_model()记录一个模型时,会创建一个LoggedModel,该LoggedModel在模型的生命周期中跨不同环境和运行持续存在,并包含指向诸如元数据、指标、参数以及用于生成模型的代码等项目的链接。 可以使用记录的模型来比较模型彼此,查找性能最高的模型,并在调试期间跟踪信息。
  • 部署作业使用 Databricks 作业来管理模型生命周期,包括评估、审批和部署等步骤。 这些模型工作流由 Unity 目录管理,所有事件都保存到 Unity 目录中的模型版本页上可用的活动日志。

请参阅以下文章来安装和开始使用 MLflow 3.0。

Databricks 托管的 MLflow

Databricks 提供了一个完全托管的 MLflow 托管版本,在开源体验的基础上构建,使其对企业使用更加可靠和可扩展。

下图显示了 Databricks 如何与 MLflow 集成以训练和部署机器学习模型。

MLflow 与 Databricks 集成,以管理 ML 生命周期。

Databricks 管理的 MLflow 基于 Unity 目录和 Cloud Data Lake 构建,以统一 ML 生命周期中的所有数据和 AI 资产:

  1. 特征库: Databricks 自动特征查找简化了集成并减少了错误。
  2. 训练模型: 使用马赛克 AI 训练模型或微调基础模型。
  3. 跟踪:MLflow 通过记录参数、指标和工件来跟踪训练,以评估和比较模型性能。
  4. 模型注册表: MLflow 模型注册表,与 Unity 目录集成,集中了 AI 模型和项目。
  5. 模型服务: 马赛克 AI 模型服务将模型部署到 REST API 终结点。
  6. 监视: 马赛克 AI 模型服务会自动捕获监视和调试模型的请求和响应。 MLflow 使用每个请求的跟踪数据来扩充此数据。

模型训练

MLflow 模型是 Databricks AI 和 ML 开发的核心。 MLflow 模型是打包机器学习模型和生成 AI 代理的标准化格式。 标准化格式可确保 Databricks 上的下游工具和工作流可以使用模型和代理。

Databricks 提供的功能可帮助你训练不同类型的 ML 模型。

试验跟踪

Databricks 使用 MLflow 试验作为组织单位来跟踪开发模型时的工作。

通过试验跟踪,可以在机器学习训练和代理开发期间记录和管理参数、指标、项目和代码版本。 将日志组织到实验和运行中可以更轻松地比较模型、分析性能并进行迭代。

使用 Unity Catalog 的模型注册表

MLflow 模型注册表是用于管理模型部署过程的集中式模型存储库、UI 和一组 API。

Databricks 将模型注册表与 Unity 目录集成,为模型提供集中治理。 Unity 目录集成允许跨工作区访问模型、跟踪模型世系并发现可重复使用的模型。

模型服务

Databricks 模型服务与 MLflow 模型注册表紧密集成,并提供统一的可缩放接口,用于部署、管理和查询 AI 模型。 你提供的每个模型都可用作 REST API,可以集成到 Web 或客户端应用程序中。

虽然它们是不同的组件,但模型服务严重依赖于 MLflow 模型注册表来处理模型版本控制、依赖项管理、验证和治理。

AI 代理开发和评估

对于 AI 代理开发,Databricks 与 MLflow 集成,类似于 ML 模型开发。 但是,存在一些主要差异:

  • 若要在 Databricks 上创建 AI 代理,请使用 马赛克 AI 代理框架,该框架依赖于 MLflow 来跟踪代理代码、性能指标和代理跟踪。
  • 若要评估 Databricks 上的代理,请使用 马赛克 AI 代理评估,后者依赖于 MLflow 来跟踪评估结果。
  • 代理的 MLflow 跟踪还包括 MLflow 跟踪。 使用 MLflow 跟踪可以查看有关代理服务执行的详细信息。 跟踪记录与请求的每个中间步骤关联的输入、输出和元数据,从而快速找到代理中意外行为的源。

下图显示了 Databricks 如何与 MLflow 集成以创建和部署 AI 代理。

MLflow 与 Databricks 集成,用于管理第一代 AI 应用生命周期。

Databricks 托管的 MLflow 基于 Unity 目录和 Cloud Data Lake 构建,用于统一第一代 AI 应用生命周期中的所有数据和 AI 资产:

  1. 向量 & 特征存储: Databricks 自动化向量和特征查找简化了集成并减少了错误。
  2. 创建和评估 AI 代理: 马赛克 AI 代理框架和代理评估可帮助你创建代理并评估其输出。
  3. 跟踪与追踪:MLflow 跟踪捕获详细的代理程序执行信息,以提高生成性 AI 的可观测性。
  4. 模型注册表: MLflow 模型注册表,与 Unity 目录集成,集中了 AI 模型和项目。
  5. 模型服务: 马赛克 AI 模型服务将模型部署到 REST API 终结点。
  6. 监视: MLflow 自动捕获监视和调试模型的请求和响应。

开源与 Databricks 托管的 MLflow 功能对比

有关开放源代码和 Databricks 托管版本之间共享的常规 MLflow 概念、API 和功能,请参阅 MLflow 文档。 有关 Databricks 托管的 MLflow 专属功能,请参阅 Databricks 文档。

下表重点介绍了开源 MLflow 与 Databricks 托管的 MLflow 之间的主要区别,并提供文档链接来帮助你了解详细信息:

功能 开放源代码 MLflow 上的可用性 Databricks 托管 MLflow 的可用性
安全 用户必须提供自己的安全治理层 Databricks 企业级安全性
灾难恢复 不可用 Databricks 灾难恢复
试验跟踪 MLflow 跟踪 API MLflow 跟踪 API 与 Databricks 高级实验跟踪集成
模型注册表 MLflow 模型注册表 与 Databricks Unity Catalog 集成的 MLflow 模型注册表
Unity 目录系统集成 与 Unity 目录的开源集成 Databricks Unity 目录
模型部署 用户配置的与外部服务解决方案的集成(SageMaker、Kubernetes、容器服务等) Databricks 模型服务和外部服务解决方案
AI 代理 MLflow LLM 开发 MLflow LLM 开发,与 Mosaic AI 代理框架代理评估集成
加密 不可用 使用 客户管理的密钥进行加密