将工作流和模型迁移到 Unity Catalog

Databricks 建议在 Unity Catalog 中使用模型,以增强治理、在工作区和环境之间轻松共享,以及实现更灵活的 MLOps 工作流。 本页逐步讲解将工作区模型注册表中的模型迁移到 Unity 目录。

Unity 目录中的模型简介

Unity 目录中的模型将 Unity 目录的优势扩展到 ML 模型,包括集中访问控制、审核、世系以及跨工作区的模型共享和发现。 Unity 目录中的模型在管理模型生命周期方面也提供了更大的灵活性。

将模型迁移到 Unity 目录时,某些模型生命周期步骤会以不同的方式完成:

步骤 1. 在 Unity 目录中创建模型

请参阅 训练和注册与 Unity 目录兼容的模型

第 2 步。 向模型分配 Unity 目录权限

Unity 目录具有 统一的权限模型。 若要了解如何向 Unity 目录中的模型分配权限,请参阅 控制对模型的访问

下表显示了工作区模型注册表中的权限与 Unity 目录中的权限之间的关系。 除了表中显示的特权之外,所有操作还需要 USE CATALOGUSE SCHEMA 特权。

工作区模型注册表 统一目录 注释
可以读取 执行
可以编辑 创建模型版本 + 应用标记 具有这些权限的用户无法编辑模型或模型版本 的说明
可以管理过渡版本 APPLY TAG + 部署任务 在 Unity 目录中,部署作业用于控制模型版本在生命周期阶段的移动。 有关详细信息,请参阅 MLflow 3 部署作业
可以管理生产版本 APPLY TAG + 部署任务 在 Unity 目录中,部署作业用于控制模型版本在生命周期阶段的移动。 有关详细信息,请参阅 MLflow 3 部署作业
可以管理 管理

步骤 3. 复制模型版本

若要复制模型版本,请与 MLflow 客户端 copy_model_version()= >一起使用3.4.0

import mlflow
from mlflow import MLflowClient

# Registry must be set to workspace registry
mlflow.set_registry_uri("databricks")
client = MlflowClient(registry_uri="databricks")

src_model_uri = f"models:/my_wmr_model/1"
uc_migrated_copy = client.copy_model_version(
   src_model_uri, "mycatalog.myschema.my_uc_model"
)

如果 Unity 目录中不存在目标模型,则此 API 调用会创建该模型。

Unity 目录中的模型需要签名。 如果工作区模型版本没有签名,Databricks 建议按照 MLflow 文档中的说明创建一个。 另一种替代方法是使用环境变量 MLFLOW_SKIP_SIGNATURE_CHECK_FOR_UC_REGISTRY_MIGRATION。 此环境变量仅在使用 copy_model_version() 且需要 MLflow 版本 3.4.0 或更高版本时可用。 如果此环境变量设置为 "true",则不需要签名。

有关可用于将工作区模型注册表中模型的所有模型版本迁移到目标 Unity 目录模型的脚本,请参阅 将模型版本从工作区模型注册表迁移到 Unity 目录

步骤 4. 迁移模型元数据

本部分介绍如何将工作区注册表级元数据映射到 Unity 目录模型和模型版本元数据,例如阶段、标记和说明。

阶段

工作区模型注册表使用“阶段”的概念(例如 StagingProduction)跟踪模型生命周期。 可以按阶段搜索或调用模型。 在 Unity Catalog 中,阶段已被用于调用模型的 别名 和用于标记模型的 标签 所取代。

若要简单迁移工作区模型注册表阶段,可以直接使用“生产”和“暂存”或任何其他别名。 在工作区模型注册表中,多个模型版本可以处于同一阶段,当您引用模型版本时,会自动使用最新版本。 在 Unity Catalog 中,别名被分配给唯一的模型版本。

为了简单迁移阶段标签,请使用标记将模型版本标记为“生产”、“暂存”或“存档”。 还可以使用任何其他标签。 有关标记的详细信息,请参阅 标记

在工作区模型注册表中,模型版本的生命周期按阶段进行跟踪,且过渡请求需要人工批准。 在 Unity 目录中,模型版本的生命周期由 部署作业管理。 部署作业中的每个任务都对应于一个“阶段”。 部署作业允许自定义模型生命周期,并适应比工作区模型注册表更复杂的工作流。 部署作业仍包含人工审批。 有关详细信息,请参阅 MLflow 3 部署作业

标记

在 Unity 目录中,在模型或模型版本上创建 标记

Unity 目录模型版本 UI 中的“添加标记”按钮。

若要在目录资源管理器中按标记搜索模型,请在搜索框中键入键或值:

在 Unity 目录模型 UI 中按标记搜索模型。

在目录资源管理器中,只能使用标记来搜索模型,而不是模型版本。 MLflow 客户端不支持通过 Unity 目录标记搜索模型。 Unity 目录允许每个对象最多 50 个标记。

说明和注释

可以向模型和模型版本添加说明。 Unity 目录还提供 模型的 AI 生成的说明选项。

在 Unity 目录中添加模型或模型版本说明。

Unity 目录中的模型在工作区模型注册表的“模型版本”页的“活动”部分中显示的信息没有对应的位置。 如果该部分中有要与模型版本一起传输的信息,请将其复制到 Unity 目录中的“模型版本”页的 “说明 ”部分。

步骤 5. 更新所有工作负载和终结点

将模型和模型版本迁移到 Unity 目录后,更新所有作业、笔记本和其他工作负载,包括模型服务终结点,以使用 Unity 目录中的版本。

步骤 6. (可选)创建部署任务

每当创建新模型版本并自动执行评估、审批和部署工作流时,部署作业都会自动触发。 有关详细信息,请参阅 MLflow 3 部署作业

可以设置通知以针对诸如创建或批准模型版本等事件触发。 请参阅为作业添加通知

如果为工作区模型注册表中的事件设置了电子邮件通知,请迁移它们,如下所示:

  • 新模型版本已创建:设置在创建新模型版本时触发的部署作业,并在触发作业时发送电子邮件通知。
  • 阶段转换请求:阶段转换请求对应于审批任务。 为审批任务的成功或失败设置电子邮件通知。
  • 阶段转换:阶段转换对应于作业任务。 设置任务成功或失败的电子邮件通知。
  • 新评论:Unity 目录中不支持评论。

详细信息

以下链接的页面介绍如何将工作流(模型训练和批处理推理作业)从工作区模型注册表迁移到 Unity 目录。