将 AI 运行时工作负载转换为捆绑包

将现有的 AI 运行时工作负载 YAML 转换为 声明式自动化包,将其作为持久作业进行管理,添加计划,并与预处理任务组合。 使用 databricks air convert-to-dabs 生成捆绑包,或使用此页上的字段映射手动转换它。

Requirements

自动转换工作负载

如果你已经使用 databricks air run --file train.yaml 运行工作负载,请使用 databricks air convert-to-dabs 转换其工作负载 YAML。

  1. 从你现有的工作负载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
    
  2. 从包含 train.yaml的目录中执行转换:

    databricks air convert-to-dabs train.yaml
    

    该命令会在 YAML 旁边创建 databricks.yml 和一个 generated_artifacts/ 目录。 它在本地转换配置。 捆绑包在部署时会自动上传代码。 关于其他目录布局和覆盖选项,请参见 转换器路径和生成文件。

  3. 验证、部署并运行生成的作业:

    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

其他资源