MLflow 用于生成式 AI 代理和 ML 模型生命周期
本文介绍如何使用 Databricks 上的 MLflow 开发高质量的生成 AI 代理和机器学习模型。
注意
如果刚开始使用 Azure Databricks,请考虑在 Databricks Community Edition上尝试 MLflow。
什么是 MLflow?
MLflow 是用于开发模型和生成 AI 应用程序的开源平台。 它具有以下主要组件:
- 跟踪:用于跟踪试验,以记录和比较参数与结果。
- 模型:允许管理模型并将模型从各种 ML 库部署到各种模型服务和推理平台。
- 模型注册表:允许使用模型版本控制和注释功能管理模型部署过程,从过渡到生产。
- AI 代理评估和跟踪:可帮助你比较、评估和排查代理问题,从而开发高质量的 AI 代理。
MLflow 支持 Java、Python、R 和 REST API。
Databricks 托管的 MLflow
Databricks 提供了一个完全托管的 MLflow 托管版本,在开源体验的基础上构建,使其对企业使用更加可靠和可扩展。
下图显示了 Databricks 如何与 MLflow 集成以训练和部署机器学习模型。
Databricks 管理的 MLflow 基于 Unity 目录和 Cloud Data Lake 构建,以统一 ML 生命周期中的所有数据和 AI 资产:
- 特征库: Databricks 自动特征查找简化了集成并减少了错误。
- 训练模型: 使用马赛克 AI 训练模型或微调基础模型。
- 跟踪:MLflow 通过记录参数、指标和工件来跟踪训练,以评估和比较模型性能。
- 模型注册表: MLflow 模型注册表,与 Unity 目录集成,集中了 AI 模型和项目。
- 模型服务: 马赛克 AI 模型服务将模型部署到 REST API 终结点。
- 监视: 马赛克 AI 模型服务会自动捕获监视和调试模型的请求和响应。 MLflow 使用每个请求的跟踪数据来扩充此数据。
模型训练
MLflow 模型是 Databricks AI 和 ML 开发的核心。 MLflow 模型是打包机器学习模型和生成 AI 代理的标准化格式。 标准化格式可确保 Databricks 上的下游工具和工作流可以使用模型和代理。
- MLflow 文档 - 模型。
Databricks 提供的功能可帮助你训练不同类型的 ML 模型。
- 使用马赛克 AI来训练 AI 模型。
试验跟踪
Databricks 使用 MLflow 试验作为组织单位来跟踪开发模型时的工作。
通过试验跟踪,可以在机器学习训练和代理开发期间记录和管理参数、指标、项目和代码版本。 将日志组织到实验和运行中可以更轻松地比较模型、分析性能并进行迭代。
- 使用 Databricks 跟踪试验。
- 有关 运行和试验跟踪的一般信息,请参阅 MLflow 文档。
使用 Unity Catalog 的模型注册表
MLflow 模型注册表是用于管理模型部署过程的集中式模型存储库、UI 和一组 API。
Databricks 将模型注册表与 Unity 目录集成,为模型提供集中治理。 Unity 目录集成允许跨工作区访问模型、跟踪模型世系并发现可重复使用的模型。
- 使用 Databricks Unity 目录管理模型。
- 有关 模型注册表的一般信息,请参阅 MLflow 文档。
模型服务
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 代理。
Databricks 托管的 MLflow 基于 Unity 目录和 Cloud Data Lake 构建,以统一 genAI 应用生命周期中的所有数据和 AI 资产:
- 向量 & 特征存储: Databricks 自动化向量和特征查找简化了集成并减少了错误。
- 创建和评估 AI 代理: 马赛克 AI 代理框架和代理评估可帮助你创建代理并评估其输出。
- 跟踪和追踪: MLflow 跟踪捕获详细的代理执行信息,以提高生成式 AI 的可观测性。
- 模型注册表: MLflow 模型注册表,与 Unity 目录集成,集中了 AI 模型和项目。
- 模型服务: 马赛克 AI 模型服务将模型部署到 REST API 终结点。
- 监视: 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 代理框架和代理评估集成 |
加密 | 不可用 | 使用 客户管理的密钥进行加密 |