將現有的 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: type: snapshot snapshot: root_path: src command: python $CODE_SOURCE_PATH/train.py在包含
train.yaml的目錄中執行轉換:databricks air convert-to-dabs train.yaml指令會建立
databricks.yml一個generated_artifacts/目錄,與 YAML 並列。 它會在本機轉換該設定。 套件會在你部署時上傳程式碼。 關於其他目錄配置與覆寫選項,請參見 轉換路徑與產生檔案。驗證、部署並執行產生的作業:
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 |