MLflow 模型注册表
MLflow 模型注册表是一个集中的模型存储、API 集合和 UI,旨在协作管理模型的整个生命周期。它提供元数据(即,哪个 MLflow 实验和运行生成了模型)、版本控制、别名、元数据标签和注释支持,以确保您在从开发到生产部署的每个阶段都拥有完整的信息。
为什么需要模型注册表?
随着机器学习项目的复杂性和规模不断增长,手动管理跨不同环境、团队和迭代的模型变得越来越容易出错且效率低下。MLflow 模型注册表通过提供一个集中式、结构化的系统来组织和管理整个生命周期中的 ML 模型,从而解决了这一挑战。
使用模型注册表可提供以下优势:
- 🗂️ 版本控制:注册表会自动跟踪每个模型的版本,使团队能够比较迭代、回滚到以前的状态,并并行管理多个版本(例如,暂存与生产)。
- 🧬 模型元数据和可追溯性:每个注册的模型版本都链接到生成它的 MLflow 运行、已记录的模型或笔记本,从而实现完全的可复现性。您可以精确追溯模型是如何训练的,使用什么数据和参数。
- 🚀 生产就绪的工作流:模型别名(例如 @champion)和标签等功能使管理部署工作流更加容易,能够以可控且可审计的方式将模型推广到实验、暂存或生产环境。
- 🛡️ 治理与合规性:通过结构化的元数据、标签以及基于角色的访问控制(当与 Databricks 或托管 MLflow 服务等后端一起使用时),模型注册表支持企业级 ML 运营的关键治理要求。
无论您是独立的数据科学家还是大型 ML 平台团队的一员,模型注册表都是构建可靠且可维护的机器学习系统的基础组成部分。
概念
模型注册表引入了一些概念,这些概念描述并促进了 MLflow 模型整个生命周期的管理。
| 概念 | 描述 |
|---|---|
| 模型 | MLflow 模型是通过其中一个模型风味的 |
| 已注册模型 | MLflow 模型可以注册到模型注册表中。已注册模型具有唯一的名称,包含版本、别名、标签和其他元数据。 |
| 模型版本 | 每个已注册模型可以有一个或多个版本。当新模型添加到模型注册表时,它被添加为版本 1。注册到同一模型名称的每个新模型都会**递增版本号**。模型版本具有标签,这对于跟踪模型版本的属性非常有用(例如, |
| 模型 URI | 您可以使用以下格式的 URI 来引用已注册模型: |
| 模型别名 | 模型别名允许您为已注册模型的特定版本分配一个可变的、命名的引用。通过将别名分配给特定的模型版本,您可以使用该别名通过模型 URI 或模型注册表 API 来引用该模型版本。例如,您可以创建一个名为 别名在部署模型时尤其有用。例如,您可以将 |
| 标签 | 标签是您与已注册模型和模型版本关联的键值对,允许您按功能或状态对其进行标记和分类。例如,您可以为用于问答任务的已注册模型应用一个键为 |
| 注释和描述 | 您可以使用 Markdown 对顶级模型和每个版本进行单独注释,包括描述和对团队有用的任何相关信息,例如算法描述、使用的数据集或给定版本建模方法所涉及的整体方法。 |
模型注册表实践
MLflow 模型注册表在开源 (OSS) MLflow 和 Databricks 等托管平台中均可用。根据不同的环境,注册表提供不同级别的集成、治理和协作功能。
OSS MLflow 中的模型注册表
在 MLflow 的开源版本中,模型注册表提供 UI 和 API 来管理机器学习模型的生命周期。您可以注册模型、跟踪版本、添加标签和描述,并将模型在暂存和生产等阶段之间进行迁移。
在 MLflow 中注册模型
- Python API
- MLflow UI
使用 MLflow Python API 注册模型
MLflow 提供了几种注册模型版本的方法。
# Option 1: specify `registered_model_name` parameter when logging a model
mlflow.<flavor>.log_model(..., registered_model_name="<YOUR_MODEL_NAME>")
# Option 2: register a logged model
mlflow.register_model(model_uri="<YOUR_MODEL_URI>", name="<YOUR_MODEL_NAME>")
注册模型后,您可以使用模型名称和版本重新加载它。
mlflow.<flavor>.load_model("models:/<YOUR_MODEL_NAME>/<YOUR_MODEL_VERSION>")
在 MLflow UI 上注册模型
- 打开包含您想注册的 MLflow 模型的 MLflow 运行的详细信息页面。在 **Artifacts** 部分,选择包含所需 MLflow 模型的模型文件夹。

-
点击 **Register Model** 按钮,这将触发一个弹出模态表单。
-
在表单的 **Model** 下拉菜单中,您可以选择“Create New Model”(这将创建一个新的已注册模型,并将您的 MLflow 模型作为其初始版本),或者选择一个现有的已注册模型(这将将您的模型注册在其下作为新版本)。下图演示了将 MLflow 模型注册到一个名为
"iris_model_testing"的新已注册模型。

要了解有关 OSS 模型注册表的更多信息,请参阅模型注册表教程。
Databricks 中的模型注册表
Databricks 通过将模型注册表与 Unity Catalog 集成来扩展 MLflow 的功能,从而实现集中治理、细粒度访问控制和跨工作空间协作。
Unity Catalog 集成的关键优势包括:
- 🛡️ 增强的治理:将访问策略和权限控制应用于模型资产。
- 🌐 跨工作空间访问:一次注册模型,即可在多个 Databricks 工作空间中访问它们。
- 🔗 模型元数据:跟踪用于创建每个模型的笔记本、数据集和实验。
- 🔍 发现和重用:从共享目录中浏览和重用生产级模型。
在 Databricks UC 中注册模型
- Python API
- Databricks UI
使用 MLflow Python API 将模型注册到 Databricks UC
前提条件:将跟踪 URI 设置为 Databricks。
import mlflow
mlflow.set_registry_uri("databricks-uc")
使用 MLflow API 注册模型。
# Option 1: specify `registered_model_name` parameter when logging a model
mlflow.<flavor>.log_model(..., registered_model_name="<YOUR_MODEL_NAME>")
# Option 2: register a logged model
mlflow.register_model(model_uri="<YOUR_MODEL_URI>", name="<YOUR_MODEL_NAME>")
UC 中的 ML 模型版本必须具有模型签名。如果您想为已记录或已保存的模型设置签名,可以使用 mlflow.models.set_signature() API。
注册模型后,您可以使用模型名称和版本重新加载它。
mlflow.<flavor>.load_model("models:/<YOUR_MODEL_NAME>/<YOUR_MODEL_VERSION>")
在 Databricks UI 上注册模型
-
从实验运行页面或模型页面,点击 UI 右上角的“Register model”。
-
在对话框中,选择 Unity Catalog,然后从下拉列表中选择目标模型。

- 点击“Register”。

注册模型可能需要一些时间。要监控进度,请导航到 Unity Catalog 中的目标模型并定期刷新。
有关更多信息,请参阅Databricks 关于管理模型生命周期的文档。