AIランタイムのワークロードをバンドルに変換する

既存のAIランタイムワークロードのYAMLを 宣言的自動化バンドル に変換し、永続的なジョブとして管理し、スケジュールを追加し、前処理タスクと組み合わせます。 databricks air convert-to-dabsを使ってバンドルを生成するか、このページのフィールドマッピングを使って手動で変換してください。

Requirements

ワークロードを自動的に変換する

すでにdatabricks air run --file train.yamlでワークロードを動かしているなら、そのdatabricks air convert-to-dabsをで変換してください。

  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
    

    このコマンドは databricks.yml と generated_artifacts/ ディレクトリをYAMLと同じ場所に作成します。 構成をローカルで翻訳します。 バンドルはデプロイ時にコードをアップロードします。 その他のディレクトリレイアウトや上書きオプションについては、 コンバーターパスと生成ファイルを参照してください。

  3. 生成されたジョブの検証、デプロイ、実行:

    databricks bundle validate
    databricks bundle deploy
    databricks bundle run my-training --no-wait
    

コンバーターは1つのGPUタスクを含むジョブを作成します。 スケジュールや前処理タスクを databricks.yml に追加するには、「GPU ワークロードのスケジュール設定とタスクの作成」に従ってください。 デプロイされたジョブは実行間で維持されます。 終わったら databricks bundle destroy で取り除きましょう。

コンバーターパスと生成ファイル

databricks air convert-to-dabs train.yaml デフォルトでバンドルを入力YAMLのディレクトリに書き込みます。 これはYAML ファイルのあるディレクトリに対する相対的な code_source.root_path を解決します。

コードソースの場合、解決されたソースディレクトリはバンドル出力ディレクトリの中に厳密に含まれていなければなりません。 デフォルトの出力位置では、root_path: . はバンドルルートに解決され、拒否されます。 srcのようなソースサブディレクトリを使うか、ソースディレクトリを含む出力ディレクトリを選択します。

例えば、 /project/training/train.yaml が root_path: .を使用する場合、次のコマンドでバンドルを /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: 環境変数やシークレットが設定されたときに書き込まれます。

生成されたファイルはまとめて保管してください。 バンドルはデプロイ時にそれらをアップロードします。 command.shの隣にhyperparameters.yamlがある場合、ランタイムはHYPERPARAMETERS_PATHをそのファイルに設定します。

作業負荷フィールドを手動でマッピングします

AI RuntimeワークロードYAMLからバンドルに手動で変換する際は、以下のマッピングを使用してください。 自動変換については「 ワークロードを自動的に変換する」に従ってください。 タスクフィールドの定義については、AI Runtimeタスクリファレンスを参照してください。

ワークロードYAMLフィールド バンドル設定
experiment_name ai_runtime_task.experiment
command コマンドをシェルスクリプトに移し、 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

その他のリソース