Databricks 建议在 Unity Catalog 中使用模型,以增强治理、在工作区和环境之间轻松共享,以及实现更灵活的 MLOps 工作流。 本页逐步讲解将工作区模型注册表中的模型迁移到 Unity 目录。
Unity 目录中的模型简介
Unity 目录中的模型将 Unity 目录的优势扩展到 ML 模型,包括集中访问控制、审核、世系以及跨工作区的模型共享和发现。 Unity 目录中的模型在管理模型生命周期方面也提供了更大的灵活性。
将模型迁移到 Unity 目录时,某些模型生命周期步骤会以不同的方式完成:
- 工作区模型注册表权限由帐户级 Unity 目录权限替换。 请参阅 步骤 2。向模型分配 Unity 目录权限。
- 阶段由自定义别名和标记替换。 可以创建最多 10 个自定义和可重新分配的别名,而不是四个固定阶段。 还可以设置标签来标记模型。 请参阅 步骤 4。迁移模型元数据。
- 部署作业用于在其生命周期内转换模型。 请参阅 步骤 6。(可选)创建部署作业。
步骤 1. 在 Unity 目录中创建模型
请参阅 训练和注册与 Unity 目录兼容的模型。
第 2 步。 向模型分配 Unity 目录权限
Unity 目录具有 统一的权限模型。 若要了解如何向 Unity 目录中的模型分配权限,请参阅 控制对模型的访问。
下表显示了工作区模型注册表中的权限与 Unity 目录中的权限之间的关系。 除了表中显示的特权之外,所有操作还需要 USE CATALOG 和 USE 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 目录模型和模型版本元数据,例如阶段、标记和说明。
阶段
工作区模型注册表使用“阶段”的概念(例如 Staging 和 Production)跟踪模型生命周期。 可以按阶段搜索或调用模型。 在 Unity Catalog 中,阶段已被用于调用模型的 别名 和用于标记模型的 标签 所取代。
若要简单迁移工作区模型注册表阶段,可以直接使用“生产”和“暂存”或任何其他别名。 在工作区模型注册表中,多个模型版本可以处于同一阶段,当您引用模型版本时,会自动使用最新版本。 在 Unity Catalog 中,别名被分配给唯一的模型版本。
为了简单迁移阶段标签,请使用标记将模型版本标记为“生产”、“暂存”或“存档”。 还可以使用任何其他标签。 有关标记的详细信息,请参阅 标记。
在工作区模型注册表中,模型版本的生命周期按阶段进行跟踪,且过渡请求需要人工批准。 在 Unity 目录中,模型版本的生命周期由 部署作业管理。 部署作业中的每个任务都对应于一个“阶段”。 部署作业允许自定义模型生命周期,并适应比工作区模型注册表更复杂的工作流。 部署作业仍包含人工审批。 有关详细信息,请参阅 MLflow 3 部署作业。
标记
在 Unity 目录中,在模型或模型版本上创建 标记 。
若要在目录资源管理器中按标记搜索模型,请在搜索框中键入键或值:
在目录资源管理器中,只能使用标记来搜索模型,而不是模型版本。 MLflow 客户端不支持通过 Unity 目录标记搜索模型。 Unity 目录允许每个对象最多 50 个标记。
说明和注释
可以向模型和模型版本添加说明。 Unity 目录还提供 模型的 AI 生成的说明选项。
Unity 目录中的模型在工作区模型注册表的“模型版本”页的“活动”部分中显示的信息没有对应的位置。 如果该部分中有要与模型版本一起传输的信息,请将其复制到 Unity 目录中的“模型版本”页的 “说明 ”部分。
步骤 5. 更新所有工作负载和终结点
将模型和模型版本迁移到 Unity 目录后,更新所有作业、笔记本和其他工作负载,包括模型服务终结点,以使用 Unity 目录中的版本。
步骤 6. (可选)创建部署任务
每当创建新模型版本并自动执行评估、审批和部署工作流时,部署作业都会自动触发。 有关详细信息,请参阅 MLflow 3 部署作业。
可以设置通知以针对诸如创建或批准模型版本等事件触发。 请参阅为作业添加通知。
如果为工作区模型注册表中的事件设置了电子邮件通知,请迁移它们,如下所示:
- 新模型版本已创建:设置在创建新模型版本时触发的部署作业,并在触发作业时发送电子邮件通知。
- 阶段转换请求:阶段转换请求对应于审批任务。 为审批任务的成功或失败设置电子邮件通知。
- 阶段转换:阶段转换对应于作业任务。 设置任务成功或失败的电子邮件通知。
- 新评论:Unity 目录中不支持评论。
详细信息
以下链接的页面介绍如何将工作流(模型训练和批处理推理作业)从工作区模型注册表迁移到 Unity 目录。