适用于 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 配置文件进行身份验证。
注意
U2M 身份验证适用于实时尝试这些步骤。 对于完全自动化的工作流,Databricks 建议改用 OAuth 计算机到计算机 (M2M) 身份验证。 请参阅身份验证中的 M2M 身份验证设置说明。
通过对每个目标工作区运行以下命令,使用 Databricks CLI 在本地启动 OAuth 令牌管理。
在以下命令中,将
<workspace-url>
替换为 Azure Databricks 每工作区 URL,例如https://adb-1234567890123456.7.azuredatabricks.net
。databricks auth login --host <workspace-url>
Databricks CLI 会提示将输入的信息保存为 Azure Databricks 配置文件。 按
Enter
接受建议的配置文件名称,或输入新的或现有的配置文件的名称。 任何具有相同名称的现有配置文件都会被输入的信息覆盖。 可以使用配置文件在多个工作区之间快速切换身份验证上下文。若要获取任何现有配置文件的列表,请在单独的终端或命令提示符中使用 Databricks CLI 来运行
databricks auth profiles
命令。 若要查看特定配置文件的现有设置,请运行databricks auth env --profile <profile-name>
命令。在 Web 浏览器中,按照屏幕上的说明登录到 Azure Databricks 工作区。
若要查看配置文件的当前 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:创建捆绑包项目
使用 Databricks 资产捆绑包模板创建 MLOps Stacks 项目的初学者文件。 为此,请首先运行以下命令:
databricks bundle init mlops-stacks
回答屏幕上的提示。 有关回答这些提示的指导,请参阅 GitHub 上的 Databricks MLOps Stacks 存储库中的“启动新项目”。
第一个提示提供设置 ML 代码组件、CI/CD 组件或两者的选项。 此选项简化了初始设置,因为你可以选择仅创建那些直接相关的组件。 (若要设置其他组件,请再次运行初始化命令。)选择以下方案之一:
CICD_and_Project
(默认值) - 设置 ML 代码和 CI/CD 组件。Project_Only
- 仅设置 ML 代码组件。 此选项适用于数据科学家入门。CICD_Only
- 仅设置 CI/CD 组件。 此选项供 ML 工程师设置基础设施。
回答所有屏幕提示后,模板会创建 MLOps Stacks 项目的初学者文件,并将其添加到当前工作目录。
根据需要自定义 MLOps 堆栈项目的初学者文件。 为此,请按照新项目中以下文件中的指导进行操作:
角色 目标 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 参考中 以 YAML 格式表示的 POST /api/2.1/unity-catalog/models 中定义的创建 Unity 目录模型 操作的请求有效负载。
在对管道进行自定义时,管道声明中的映射对应于 REST API 参考中的 POST /api/2.0/pipelines 中定义的“创建管道”操作的请求有效负载(以 YAML 格式表示)。
步骤 3:验证捆绑包项目
检查捆绑包配置是否有效。 为此,请从项目根目录(databricks.yml
所在的位置)运行 Databricks CLI,如下所示:
databricks bundle validate
如果返回了捆绑包配置的摘要,则表示验证成功。 如果返回了任何错误,请修复错误,然后重复此步骤。
步骤 4:部署捆绑包
将项目的资源和项目部署到所需的远程工作区。 为此,请从项目根目录(databricks.yml
所在的位置)运行 Databricks CLI,如下所示:
databricks bundle deploy -t <target-name>
将 <target-name>
替换为 databricks.yml
文件中所需目标的名称,例如 dev
、test
、staging
或 prod
。
步骤 5:运行已部署的捆绑包
项目部署的 Azure Databricks 作业会自动按预定义的计划运行。 要立即运行已部署的作业,请从项目的根目录(databricks.yml
所在的位置)运行 Databricks CLI,如下所示:
databricks bundle run -t <target-name> <job-name>
- 将
<target-name>
替换为部署作业的databricks.yml
文件中所需目标的名称,例如dev
、test
、staging
或prod
。 - 将
<job-name>
替换为<project-name>/databricks-resources
内的.yml
文件之一中的作业名称,例如batch_inference_job
、write_feature_table_job
或model_training_job
。
此时会显示一个指向 Azure Databricks 作业的链接,可将其复制到 Web 浏览器中,以在 Azure Databricks UI 中打开该作业。
步骤 6:删除已部署的捆绑包(可选)
如果不再需要已部署项目的资源和工件,要删除它们,请从项目的根目录(databricks.yml
所在的位置)运行 Databricks CLI,如下所示:
databricks bundle destroy -t <target-name>
将 <target-name>
替换为 databricks.yml
文件中所需目标的名称,例如 dev
、test
、staging
或 prod
。
回答屏幕上的提示以确认删除先前部署的资源和工件。