重要
此功能目前以公共预览版提供。
注释
部署作业不需要与 MLflow 3 客户端或模型跟踪一起使用,并且可以在 Unity 目录中的较旧现有模型上启用。 但是,建议使用 MLflow 3。
本文介绍如何使用 MLflow 部署作业作为机器学习工作流的一部分来管理 ML 模型的完整生命周期。
什么是部署作业?
部署作业允许在创建新模型版本时自动执行评估、审批和部署等任务,与 Unity 目录模型和 Lakeflow 作业无缝集成。 这些作业简化了模型部署管道的设置,包括人工参与审批,并为受控工作流提供每个版本的进度和历史上下文的清晰的可见性。
使用部署作业时,该过程是完全自动化的;每当创建新模型版本时,它们 都会自动触发 ,直接在模型和模型版本页上显示部署作业运行状态。 活动 日志中可方便地跟踪有关每个部署作业运行的历史信息,确保透明度和易于管理。
与 MLflow 3 模型跟踪集成
Databricks 建议使用 MLflow 3 跟踪来注册模型并在部署作业中执行评估。 新客户端将自动记录部署作业评估部分中的指标,该部分将显示在 Unity 目录模型版本 UI 中。 这将允许用户使用模型版本页上的集中式指标、参数和跟踪,以便就何时在部署作业生命周期中进一步推进模型做出明智的决策。
与 Unity 目录 CREATE MODEL 版本 ACL 集成
部署作业自然与新发布的 Unity 目录创建模型版本 ACL 集成,以完成 MLOps 故事。 具体而言,可以授予用户 CREATE MODEL VERSION ACL 以将新模型版本注册到模型。 一旦用户认为模型足以用于生产,他们将将此版本注册到 Unity 目录模型,这将启动部署作业以自动评估模型。 此时,审批者可以手动批准要部署或拒绝此版本。
重要
部署任务将利用模型所有者的凭据自动触发。 这意味着授予用户 CREATE MODEL VERSION 对 Unity 目录模型的权限允许用户在作业过程中执行任意代码。 因此,Databricks 建议使用具有最小权限的服务主体设置部署作业,以防止特权升级。
部署作业示例
下面是反映常见用例的部署作业的一些示例。 请注意,这些只是示例,可以根据需要进行自定义。
一个简单的示例部署作业由 3 个步骤组成:评估、审批和部署。 用于在输入的模型版本上生成验证指标的评估调用 mlflow.evaluate 。 审批允许特权用户确定这些指标是否令人满意,如果是,请批准模型。 最后,部署将模型版本部署到 Databricks 模型服务终结点。
下图显示了构成此简单部署作业的 Lakeflow 作业任务,其中包括评估、审批和部署任务:
还可以创建更复杂的部署作业。 例如,你可能想要使用指标收集步骤作为工作流的一部分执行分阶段推出。 若要创建此部署作业,可以在审批任务后添加其他任务,将模型部署到 1%,将模型部署到 10%,收集和检查指标,决定是否继续或回滚,最后将模型部署到 100% 或回滚模型。 下图显示了此更复杂的部署作业的外观:
创建部署任务
部署作业允许管理模型版本的生命周期。 若要使用部署作业,首先需要在已注册的模型中创建模型版本。 有关训练和注册模型的建议方法,请参阅 MLflow 3 示例笔记本 。
Databricks 建议将 运行方式 字段设置为具有最小权限的服务主体。 此外,对于审批任务,Databricks 建议 禁用重试 ,因为任务一开始就可能会失败。 这可以防止更长的等待时间,以及生成多个错误日志。
部署作业必须具有两个作业参数: model_name 和 model_version。 Databricks 还建议将最大并发运行限制设置为 1(默认值),以防止部署争用条件。
可通过两种方法创建部署作业:以编程方式使用部署笔记本或使用 UI。 在这两种情况下,都需要将每个工作任务作为笔记本文件提供。
使用笔记本以编程方式创建部署作业(建议)
建议使用部署笔记本以编程方式创建部署作业,因为它使用了 Databricks SDK,因此可以通过代码为准轻松设置所有配置。 此方法还允许你轻松地跨多个工作区部署多个作业和其他资源。
在以下说明中,将使用一个简单的示例模板来设置部署任务,包含基本的评估、审批和部署步骤。
- 创建并注册 Unity 目录模型。 例如,请参阅 MLflow 3 传统 ML 工作流 示例。
- 创建定义评估任务的笔记本。 例如,导入 经典 ML 的评估笔记本 ,以评估从 传统 ML 示例创建的模型。 GenAI 的评估笔记本提供了一个评估 GenAI 外部模型的示例。 根据需要更新所需项。 对于其他模型,请使用此笔记本作为模板,并对其进行自定义,以便根据自己的独特情况评估模型。
- 创建定义审批任务的笔记本。 例如,将 审批笔记本 导入工作区。 有关此笔记本工作原理的更多详细信息,请参阅 “审批 ”部分。 还可以将此笔记本用作模板,并对其进行更新以满足你的需求。
- 创建定义部署任务的笔记本。 例如,将下面的 部署笔记本 导入工作区。 还可以将此笔记本用作模板,并对其进行更新以满足你的需求。
- 创建创建并协调部署作业的笔记本。 例如,将 部署作业笔记本 导入工作区。 此笔记本创建了成为部署作业的 Databricks 作业。 请确保更新笔记本中的必需项,以正确定义您的作业,并使用您的 Unity Catalog 模型和适当的任务。 还可以将此笔记本用作模板,并对其进行更新以满足你的需求。 例如,如果你有更复杂的推出计划,可能需要包含更多任务。
- 运行部署作业笔记本以创建部署作业。
使用作业 UI 创建部署作业
还可以使用 UI 创建作业,而不是在上面的模板中使用 SDK。 不过,对于每个笔记本任务,仍必须手动创建笔记本,并将其保存在工作区中的某个位置。 对于指令模型,假定使用包含评估、审批和部署任务的简单部署工作流。 如果您的部署工作流较为复杂,可以通过添加更多任务来自定义这些指令。
创建并注册 Unity 目录模型。 例如,请参阅 MLflow 3 传统 ML 工作流 示例。
创建定义评估任务的笔记本。 例如,导入 经典 ML 的评估笔记本 ,以评估从 传统 ML 示例创建的模型。 GenAI 的评估笔记本提供了一个评估 GenAI 外部模型的示例。 根据需要更新所需项。 对于其他模型,请使用此笔记本作为模板,并对其进行自定义,以便根据自己的独特情况评估模型。
创建定义审批任务的笔记本。 例如,将 审批笔记本 导入工作区。 有关此笔记本工作原理的更多详细信息,请参阅 “审批 ”部分。 还可以将此笔记本用作模板,并对其进行更新以满足你的需求。
创建定义部署任务的笔记本。 例如,将下面的 部署笔记本 导入工作区。 还可以将此笔记本用作模板,并对其进行更新以满足你的需求。
在 Lakeflow 作业 UI 中创建部署作业:
在左侧导航窗格中,单击“ + 新建 > 作业 ”以创建新作业。
配置每个任务。 例如,对于部署任务:
- 任务名称:部署
- 类型:笔记本
- 源:工作区
- 路径:
/Workspace/Users/<user.name@email.com>/deployment - 计算:无服务器
有关配置的详细信息,请参阅 作业的笔记本任务。
创建完每个任务后,添加作业参数。 在右侧面板中,单击“ 编辑参数”。 添加
model_name和model_version。
下面是使用 UI 创建上述模板作业的示例:
将部署作业连接到模型
创建 Unity 目录模型和部署作业后,需要将作业作为部署作业连接到模型。 可以使用 UI 或在部署笔记本中以编程方式执行此作。
当部署作业被连接到模型之后,它将在模型页面上显示为链接。
使用 UI 将部署作业连接到模型
在模型的页面上,在“ 概述 ”选项卡的 “部署作业”下,单击“ 连接部署作业”。
从下拉列表中选择部署任务。 还可以使用搜索栏按作业的名称或 ID 搜索作业。 单击“保存更改”。
使用 MLflow 客户端将部署作业连接到模型
以编程方式连接部署作业的主要方法是使用 MLflow 客户端。 通过调用 client.create_registered_model(model_name, deployment_job_id=<your-created-job-id>)创建已注册的模型,或者通过调用 client.update_registered_model(model_name, deployment_job_id=<your-created-job-id>)更新已注册的模型时,可以执行此作。
以编程方式断开部署作业连接的主要方式也是使用 MLflow 客户端。 为此,可以指定空字符串 "" 并调用更新(例如, client.update_registered_model(model_name, deployment_job_id=""))。
在 部署笔记本中使用类似于以下内容的代码:
import mlflow
from mlflow.tracking.client import MlflowClient
client = MlflowClient(registry_uri="databricks-uc")
# model_name specifies the location of a model in Unity Catalog
# model_name should be in the format <catalog>.<schema>.<model>
try:
if client.get_registered_model(model_name):
client.update_registered_model(model_name, deployment_job_id=created_job.job_id)
except mlflow.exceptions.RestException:
client.create_registered_model(model_name, deployment_job_id=created_job.job_id)
所需的权限
连接和触发部署作业需要以下权限:
- 在模型中设为管理员或所有者,以连接部署作业
- 模型所有者需要对部署作业具有 CAN MANAGE RUN 或更高权限才能连接它。
- 注意:此部署作业字段也可以由具有 MANAGE 或更高权限的人员在模型上更新。 在这种情况下, 更新者和模型 所有者都需要对部署作业具有 CAN MANAGE RUN 或更高权限才能连接它。
触发部署作业
部署作业将在创建的任何新模型版本上自动触发,也可以通过单击“ 开始部署作业”,在模型版本页上的现有版本和以前部署的版本上手动触发该作业。
也可以直接从作业 UI 或 API 触发作业。 需要在作业参数中指定适当的模型名称和版本。
所需的权限
触发部署作业需要以下权限:
- 若要使用模型版本 UI 手动触发或修复部署作业,用户必须在部署作业上具有 CAN MANAGE RUN 或更高版本 ACL(使用作业 UI 触发作业所需的相同 ACL)。
- 由于该作业在创建新版本并使用模型所有者的凭据时自动触发,因此模型所有者需要在部署作业上具有 CAN MANAGE RUN 或更高版本的 ACL。
批准部署作业(实验性)
Databricks 为部署作业提供实验性质的审批机制,为机器学习管道启用人工参与过程。 触发部署作业后,评估运行中的指标将显示在模型版本页上。 查看这些指标后,审批者可以通过单击“ 批准”来批准 UI 中的模型版本。 此功能使用 Unity 目录标记来确定审批任务是应通过还是失败。 审批任务通过以“审批”开头的作业任务名称(不区分大小写)来识别,并将在 Unity 目录标签设置为 Approved 时生效(无论是通过单击 UI 中的 审批 按钮还是手动设置)。
下面是审批流程的工作原理:
- 初始运行:部署作业的第一次运行 将始终 在审批任务上失败,因为模型版本尚未获得批准,因此没有所需的 Unity 目录标记。
- 审批评估:审批者会评审模型版本及其评估指标,这些指标显示在模型版本页上。 这样,审批者就可以评估模型版本的质量和准备情况。
- 审批作:如果审批者认为模型版本令人满意,则单击模型版本页上部署作业边栏部分中的“ 批准 ”按钮。
此操作会自动修复作业运行,并将 Unity Catalog 标记添加到模型版本。
- 标记键与审批任务的名称匹配。 例如,在 示例审批笔记本中,这是
Approval_Check。 - 标记值设置为
Approved.
- 作业延续:修复的部署作业任务会自动从审批任务中恢复。 这一次通过是因为现在有了所需的 Unity Catalog 标签。 然后,它会继续执行后续任务,例如部署。
所需的权限
添加 Unity 目录标记和触发部署作业需要以下权限:
- 在 Unity Catalog 模型上应用标签。
- 可以管理部署作业中的运行。
高级审批的管理标签
还可以进一步指定谁有权批准和应用标记,使用针对特定标记名称的受治理标记策略。 使用受管理标签策略并为用户或组指定特定权限APPLY_TAG时,可以:
- 在部署作业中具有多个独立的审批组。
- 例如,您可以有两个单独的标记用于不同的组审批,例如:
Approval_Legal和Approval_Security,在这里您可以:- 创建受治理的标记策略,因此只有法律团队才能设置标记
Approval_Legal。 - 创建一个额外的受治理标记策略,因此只有安全团队才能设置标记
Approval_Security。 - 在部署作业中具有两个与法律和安全审批对应的审批任务。
- 向两个团队
APPLY_TAG授予模型,以便他们可以设置标记,但他们只能批准各自的检查。
- 创建受治理的标记策略,因此只有法律团队才能设置标记
- 例如,您可以有两个单独的标记用于不同的组审批,例如:
- 设置标记策略以防止模型所有者批准作业,以验证是否有第二人批准。
- 使用标签策略和一致的标签名称,对元存储库、目录和架构的审批检查进行标准化。
查看部署作业状态和活动日志
在模型版本上触发部署作业后,可以在“ 概述 ”选项卡中的模型页上查看这些部署的当前状态。在状态下方,可以在活动日志中看到历史活动。 活动日志也会显示在模型版本页上。
所需的权限
查看部署作业和活动日志需要以下权限(与查看模型相同):
- 在 Unity 目录模型中执行。
部署任务模板笔记本示例
以下示例笔记本可用作模板,以创建一个由评估、审批和部署任务组成的简单部署作业。 请务必提供 REQUIRED 笔记本中的值,以配置您的模型的部署作业。
用于生成型AI的评估笔记本
GenAI 的示例评估笔记本
经典 ML 的评估笔记本
经典机器学习的示例评估手册
审批记录本
示例审批文档
工作笔记本
示例部署笔记本
创建部署作业笔记本
用于创建部署作业的示例笔记本
后续步骤
若要详细了解 MLflow 3 的新功能并开始使用,请参阅以下文章: