适用于 MLOps Stacks 的 Databricks 资产捆绑包

重要

此功能目前以公共预览版提供。

可以使用 GitHub 上的 Databricks 资产捆绑包、Databricks CLI 和 Databricks MLOps Stacks 存储库来创建 MLOps Stacks。 MLOps Stack 是 Azure Databricks 上的 MLOps 项目,遵循现成的生产最佳做法。 请参阅什么是 Databricks 资产捆绑包?

若要创建、部署和运行 MLOps Stacks 项目,请完成以下步骤:

要求

  • 确保目标远程工作区已启用工作区文件。 请参阅什么是工作区文件?
  • 在开发计算机上,请确保已安装 Databricks CLI 0.212.2 或更高版本。 若要检查已安装的 Databricks CLI 版本,请运行命令 databricks -v。 若要更新 Databricks CLI 版本,请参阅安装或更新 Databricks CLI。 (捆绑包不适用于 Databricks CLI 0.18 和更低版本。)

步骤 1:设置身份验证

配置 Databricks CLI 进行身份验证。

本文假设你要使用 OAuth 用户到计算机 (U2M) 身份验证和名为 DEFAULT 的相应 Azure Databricks 配置文件进行身份验证。

  1. 通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。

    在以下命令中,将 <workspace-url> 替换为 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.databricks.azure.cn

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI 会提示将输入的信息保存为 Azure Databricks 配置文件。 按 Enter 接受建议的配置文件名称,或输入新的或现有的配置文件的名称。 任何具有相同名称的现有配置文件都会被输入的信息覆盖。 可以使用配置文件在多个工作区之间快速切换身份验证上下文。

    若要获取任何现有配置文件的列表,请在单独的终端或命令提示符中使用 Databricks CLI 来运行 databricks auth profiles 命令。 要查看特定配置文件的现有设置,请运行命令 databricks auth env --profile <profile-name>

  3. 在 Web 浏览器中,按照屏幕上的说明登录到 Azure Databricks 工作区。

  4. 要查看配置文件的当前 OAuth 令牌值和令牌即将过期的时间戳,请运行以下命令之一:

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    如果你有多个配置文件有相同的 --host 值,则可能需要同时指定 --host-p 选项,以便 Databricks CLI 找到正确的、匹配的 OAuth 令牌信息。

步骤 2:创建捆绑包项目

  1. 使用 Databricks 资产捆绑模板创建 MLOps Stacks 项目的初学者文件。 为此,请首先运行以下命令:

    databricks bundle init mlops-stacks
    
  2. 回答屏幕上的提示。 有关回答这些提示的指导,请参阅 GitHub 上的 Databricks MLOps Stacks 存储库中的“启动新项目”。

    第一个提示提供设置 ML 代码组件、CI/CD 组件或两者的选项。 此选项简化了初始设置,因为你可以选择仅创建那些直接相关的组件。 (若要设置其他组件,请再次运行初始化命令。)选择以下方案之一:

    • CICD_and_Project(默认值) - 设置 ML 代码和 CI/CD 组件。
    • Project_Only - 仅设置 ML 代码组件。 此选项适用于数据科学家入门。
    • CICD_Only - 仅设置 CI/CD 组件。 此选项供 ML 工程师设置基础设施。

    回答屏幕上的所有提示后,该模板将创建 MLOps Stacks 项目的初学者文件,并将其添加到你的当前工作目录。

  3. 根据需要创建 MLOps Stacks 项目的初学者文件。 为此,请按照新项目中以下文件中的指导进行操作:

    角色 目标 Docs
    初次使用此存储库的用户 了解此存储库中的 ML 管道和代码结构 README.md
    数据科学家 开始为全新项目编写 ML 代码 <project-name>/README.md
    数据科学家 更新现有项目的生产 ML 代码(例如,模型训练逻辑) docs/ml-pull-request.md
    数据科学家 修改生产模型 ML 资源(例如模型训练或推理作业) <project-name>/resources/README.md
    MLOps/DevOps 为当前 ML 项目设置 CI/CD docs/mlops-setup.md
    • 对于自定义试验,试验声明中的映射对应于 REST API 参考的 POST /api/2.0/mlflow/experiments/create 中定义的创建试验操作的请求有效负载(以 YAML 格式表示)。

    • 对于自定义作业,作业声明中的映射对应于 REST API 参考中的 POST /api/2.1/jobs/create 中定义的创建作业操作的请求负载(以 YAML 格式表示)。

      提示

      可以使用覆盖 Databricks 资产包中的群集设置中描述的技术来定义、组合和覆盖捆绑包中新作业群集的设置。

    • 对于自定义模型,模型声明中的映射对应于 REST API 参考的 POST /api/2.0/mlflow/registered-models/create 中定义的创建模型操作的请求有效负载(以 YAML 格式表示)。

    • 对于自定义管道,管道声明中的映射对应于 REST API 参考中的 POST /api/2.0/pipelines 中定义的创建管道操作的请求负载(以 YAML 格式表示)。

步骤 3:验证捆绑包项目

检查捆绑包配置是否有效。 为此,请从项目的根目录运行 Databricks CL,其中存在 databricks.yml,如下所示:

databricks bundle validate

如果返回了捆绑包配置的 JSON 表示形式,则表示验证成功。 如果返回了任何错误,请修复错误,然后重复此步骤。

步骤 4:部署捆绑包

将项目的资源和工件部署到所需的远程工作区。 为此,请从项目的根目录运行 Databricks CL,其中存在 databricks.yml,如下所示:

databricks bundle deploy -t <target-name>

<target-name> 替换为 databricks.yml 文件中所需目标的名称,例如 devteststagingprod

步骤 5:运行已部署的捆绑包

项目已部署的 Azure Databricks 作业按照预定义的计划自动运行。 若要立即运行已部署的作业,请从项目的根目录运行 Databricks CL,其中存在 databricks.yml,如下所示:

databricks bundle run -t <target-name> <job-name>
  • <target-name> 替换为部署作业的 databricks.yml 文件中所需目标的名称,例如 devteststagingprod
  • <job-name> 替换为 <project-name>/databricks-resources 内的 .yml 文件之一中的作业名称,例如 batch_inference_jobwrite_feature_table_jobmodel_training_job

此时会显示一个指向 Azure Databricks 作业的链接,可将其复制到 Web 浏览器中,以在 Azure Databricks UI 中打开该作业。

步骤 6:删除已部署的捆绑包(可选)

若要删除已部署的项目的资源和工件(如果不再需要它们),请从项目的根目录中运行 Databricks CLI,其中存在 databricks.yml,如下所示:

databricks bundle destroy -t <target-name>

<target-name> 替换为 databricks.yml 文件中所需目标的名称,例如 devteststagingprod

回答屏幕上的提示以确认删除先前部署的资源和工件。