既存の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とコードを使って始めましょう。 例えば、
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.pytrain.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
コンバーターは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 |