使用 MLflow 进行 ML 生命周期管理
本文介绍如何在 Databricks 中使用 MLflow 进行机器学习生命周期管理。 本文还提供了一些示例,介绍每个 MLflow 组件以及描述这些组件在 Azure Databricks 中的托管方式的内容的链接。
Databricks 中的 ML 生命周期管理由托管 MLflow 提供。 Azure Databricks 提供与企业安全性功能、高可用性和其他 Azure Databricks 工作区功能(例如试验和运行管理,以及笔记本修订版捕获)集成的完全托管式 MLflow 版本。
首次使用的用户应从 MLflow 试验入门开始,该入门教程演示了基本 MLflow 跟踪 API。
什么是 MLflow?
MLflow 是用于管理端到端机器学习生命周期的开源平台。 它具有以下主要组件:
- 跟踪:用于跟踪试验,以记录和比较参数与结果。
- 模型:用于通过各种 ML 库管理模型,并将其部署到各种模型服务和推理平台。
- 项目:用于将 ML 代码打包成可重用、可再现的格式,以便与其他数据科学家共享或转移到生产环境。
- 模型注册表:使你可以将模型存储集中化,以便使用版本控制和批注的功能来管理模型的完整生命周期阶段转换:从过渡到生产。 Databricks 在 Unity Catalog 中提供模型注册表的托管版本。
- 模型服务:可用于将 MLflow 模型以 REST 终结点的形式托管。 Databricks 为部署、治理和查询你使用的 AI 模型提供统一的接口。
MLflow 支持 Java、Python、R 和 REST API。
MLflow 数据由 Azure Databricks 使用平台管理的密钥进行加密。 不支持将客户管理的密钥用于托管服务的加密。
MLflow 跟踪
Azure Databricks 上的 MLflow 提供集成体验用于跟踪和保护机器学习模型与深度学习模型的训练运行。
模型生命周期管理
MLflow 模型注册表是一个集中式模型存储库,还是一个 UI 和 API 集,可用于管理 MLflow 模型的完整生命周期。 Databricks 提供 Unity Catalog 中的 MLflow 模型注册表的托管版本。 Unity Catalog 提供集中式模型治理、跨工作区访问、数据世系和部署。 有关在 Unity Catalog 中管理模型生命周期的详细信息,请参阅在 Unity Catalog 中管理模型生命周期。
如果未为 Unity Catalog 启用工作区,可以使用工作区模型注册表。
模型注册表概念
- 模型:MLflow 模型从使用模型风格的
mlflow.<model-flavor>.log_model
方法之一记录的试验或运行中记录。 记录模型后,可以将其注册到模型注册表。 - 已注册的模型:已注册到模型注册表的 MLflow 模型。 已注册的模型具有唯一的名称、版本、模型世系和其他元数据。
- 模型版本:已注册的模型的版本。 向模型注册表添加新模型时,它将添加为“版本 1”。 注册到同一模型名称的每个模型的版本号将递增。
- 模型别名:别名是对已注册模型的特定版本的可变命名引用。 别名的典型用途是指定在模型训练工作流中的给定环境中部署的模型版本,或者编写面向特定别名的推理工作负载。 例如,你可以将注册的“欺诈检测”模型的“Champion”别名分配给应为大部分生产流量提供服务的模型版本,然后编写面向该别名的推理工作负载(即,使用“Champion”版本进行预测)。
- 模型阶段(仅限工作区模型注册表):可以为模型版本分配一个或多个阶段。 MLflow 为常见用例提供了预定义的阶段:无、暂存、生产和已存档。 使用适当的权限,你可以在不同的阶段之间转换模型版本,也可以请求模型阶段转换。 Unity Catalog 中不使用模型版本阶段。
- 说明:你可以为模型的意图添加注释,包括说明和对团队有用的任何相关信息,例如算法说明、采用的数据集,或者方法。
示例笔记本
若要通过示例来了解如何使用模型注册表来构建机器学习应用程序,以预测风力发电场的每日电力输出,请参阅以下内容:
模型部署
Mosaic AI 模型服务为部署、治理和查询 AI 模型提供统一的接口。 你提供的每个模型都可用作 REST API,可以集成到 Web 或客户端应用程序中。
模型服务支持服务:
- 自定义模型。 这些是打包为 MLflow 格式的 Python 模型。 可以在 Unity 目录或工作区模型注册表中注册它们。 示例包括 scikit-learn、XGBoost、PyTorch 和 Hugging Face 转换器模型。
- 由基础模型 API 提供的最先进的开放模型。 这些模型是支持优化推理的特选基础模型体系结构。 基本模型(如 Meta-Llama-3.1-70B-Instruct、BGE-Large 和 Mistral-7B)可用于立即用于按令牌付费定价,并且需要性能保证和微调的模型变体的工作负载可以使用预配的吞吐量进行部署。
- 外部模型。 这些模型托管在 Databricks 外部。 示例包括 OpenAI 的 GPT-4、Anthropic 的 Claude 等生成式 AI 模型。 可以集中管理为外部模型提供服务的终结点,客户可以为其建立速率限制和访问控制。
还可以部署 MLflow 模型进行脱机推理,请参阅部署用于批量推理的模型。