將 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:
      type: snapshot
      snapshot:
        root_path: src
    command: python $CODE_SOURCE_PATH/train.py
    
  2. 在包含 train.yaml 的目錄中執行轉換:

    databricks air convert-to-dabs train.yaml
    

    指令會建立 databricks.yml 一個 generated_artifacts/ 目錄,與 YAML 並列。 它會在本機轉換該設定。 套件會在你部署時上傳程式碼。 關於其他目錄配置與覆寫選項,請參見 轉換路徑與產生檔案。

  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.snapshot.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 變更 bundle 的寫入位置。 它不會複製或移動原始碼。 從輸出目錄執行後續 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 hyperparameters.yaml與該腳本位於同一位置的檔案,由 command_path 參照。 執行時會設定 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

其他資源