将现有的 AI 运行时工作负载 YAML 转换为 声明式自动化包,将其作为持久作业进行管理,添加计划,并与预处理任务组合。 使用 databricks air convert-to-dabs 生成捆绑包,或使用此页上的字段映射手动转换它。
Requirements
- 一个现有 的工作负载 YAML 及其训练代码。
- 最新的 Databricks CLI。 转换前先更新现有安装实例。
- 要部署并运行生成的作业,需要一个满足 AI 运行时要求的工作区,并且已通过 CLI 完成对其的身份验证。 参见 调度 GPU 工作负载和组合任务。
自动转换工作负载
如果你已经使用 databricks air run --file train.yaml 运行工作负载,请使用 databricks air convert-to-dabs 转换其工作负载 YAML。
从你现有的工作负载YAML和代码开始。 例如,
train.yaml可以指向src/中的一个训练脚本:experiment_name: my-training environment: dependencies: - torch compute: num_accelerators: 1 accelerator_type: GPU_1xA10 code_source: root_path: src command: python $CODE_SOURCE_PATH/train.py从包含
train.yaml的目录中执行转换:databricks air convert-to-dabs train.yaml该命令会在 YAML 旁边创建
databricks.yml和一个generated_artifacts/目录。 它在本地转换配置。 捆绑包在部署时会自动上传代码。 关于其他目录布局和覆盖选项,请参见 转换器路径和生成文件。验证、部署并运行生成的作业:
databricks bundle validate databricks bundle deploy databricks bundle run my-training --no-wait
转换器会创建一个包含一个GPU任务的工作。 要添加计划和预处理任务到 databricks.yml,请遵循 调度 GPU 工作负载并组合任务。 部署的作业在运行间会持续存在。 完成后,使用 databricks bundle destroy 将其移除。
转换器路径与生成文件
databricks air convert-to-dabs train.yaml 默认将 bundle 写入输入 YAML 的目录。 它会根据 YAML 文件所在的目录解析相对路径 code_source.root_path。
对于代码源,解析源目录必须严格位于bundle输出目录内。 使用默认输出位置时,root_path: . 解析为 bundle 根目录,并被拒绝。 可以使用源子目录,例如 src,或者选择包含源目录的输出目录。
例如,如果 /project/training/train.yaml 使用 root_path: .,以下命令将 bundle 写入 /project 和 包 /project/training:
databricks air convert-to-dabs /project/training/train.yaml --output-dir /project
--output-dir 更改包的写入位置。 它不会复制或移动源代码。 从输出目录执行后续 databricks bundle 命令。
如果生成文件已经存在,转换将停止。 用 --force 来覆盖它们。 这会替换生成的捆绑包配置,包括对该文件的任何手动编辑。
转换器可写入以下文件:
-
databricks.yml:捆绑配置,包括 GPU 任务和代码工件。 -
generated_artifacts/command.sh:命令脚本。 -
generated_artifacts/training_config.yaml:工作负载配置。 -
generated_artifacts/hyperparameters.yaml:当设置了parameters时写入。 -
generated_artifacts/env_vars.json和generated_artifacts/secret_env_vars.json:在设置环境变量或机密时写入。
把生成的文件放在一起。 捆绑包在部署期间上传它们。 当 hyperparameters.yaml 出现在 command.sh 旁边时,运行时将 HYPERPARAMETERS_PATH 设置为该文件。
手动映射工作负载字段
手动将 AI 运行时工作负载 YAML 转换为捆绑包时,请使用以下映射。 对于自动转换,请按照自动转换工作负载中的说明操作。 有关任务字段定义,请参见 AI 运行时任务参考。
| 工作负载 YAML 字段 | 捆绑包设置 |
|---|---|
experiment_name |
ai_runtime_task.experiment |
command |
将命令迁移到一个 shell 脚本中,并用 ai_runtime_task.deployments[].command_path来引用它。 |
compute.accelerator_type |
ai_runtime_task.deployments[].compute.accelerator_type |
compute.num_accelerators |
ai_runtime_task.deployments[].compute.accelerator_count |
code_source |
用一个工件 tgz 打包代码,并用 ai_runtime_task.code_source_path 引用它,或者使用上传的工作区或卷路径。 |
environment.dependencies |
作业的 environments[].spec.dependencies。 |
environment.version |
environments[].spec.environment_version 用于标准环境,或 environments[].spec.base_environment 用于 Databricks AI 环境。 |
environment.docker_image.url |
ai_runtime_task.docker_image_url |
env_variables、secrets |
工作的environment_variables和任务的environment_variables_key |
parameters |
与由command_path引用的脚本位于同一目录中的hyperparameters.yaml文件 运行时将 HYPERPARAMETERS_PATH 设置为此文件。 |
max_retries |
任务的 max_retries。 |
timeout_minutes |
任务的 timeout_seconds,将分钟乘以 60。 |
mlflow_run_name |
ai_runtime_task.mlflow_run |
mlflow_experiment_directory |
ai_runtime_task.mlflow_experiment_directory |
mlflow_artifact_location |
ai_runtime_task.mlflow_artifact_location |