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

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

注意

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

什么是 MLflow?

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

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

MLflow 支持 JavaPythonRREST API。

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 集成,以管理 genAI 应用生命周期。

Databricks 托管的 MLflow 基于 Unity 目录和 Cloud Data Lake 构建,以统一 genAI 应用生命周期中的所有数据和 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 Catalog
模型部署 用户配置的与外部服务解决方案的集成(SageMaker、Kubernetes、容器服务等) Databricks 模型服务和外部服务解决方案
AI 代理 MLflow LLM 开发 MLflow LLM 开发,与 Mosaic AI 代理框架代理评估集成
加密 不可用 使用 客户管理的密钥进行加密