MLOps スタック用の Databricks アセット バンドル
Databricks アセット バンドル、Databricks CLI、GitHub 上の Databricks MLOps Stack リポジトリを使用して、MLOps スタックを作成できます。 MLOps スタックは、Azure Databricks 上の MLOps プロジェクトであり、そのままで運用環境のベスト プラクティスに準じています。 「Databricks アセット バンドルとは」をご覧ください。
MLOps スタック プロジェクトを作成、デプロイ、実行するには、次の手順を行います。
要件
- ターゲット リモート ワークスペースでワークスペース ファイルが有効になっていることを確認します。 「ワークスペース ファイルとは」を参照してください。
- お使いの開発用マシンに Databricks CLI バージョン 0.212.2 以降がインストールされていることを確認します。 インストールされている Databricks CLI のバージョンを確認するには、
databricks -v
コマンドを実行します。 Databricks CLI バージョンを更新するには、「Databricks CLI のインストールまたは更新」を参照してください。 (バンドルは Databricks CLI バージョン 0.18 以前では機能しません)。
手順 1: 認証を設定する
認証用に Databricks CLI を構成します。
この記事では、OAuth ユーザー対マシン (U2M) 認証と、DEFAULT
という名前の対応する Azure Databricks 構成プロファイルを認証に使用することを前提としています。
Note
U2M 認証は、これらの手順をリアルタイムで試す場合に適しています。 完全に自動化されたワークフローの場合、Databricks では代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」内の、M2M 認証のセットアップ手順をご参照ください。
Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行し、OAuth トークン管理をローカルで開始します。
次のコマンド内では、
<workspace-url>
を Azure Databricks ワークスペース単位の URL (例:https://adb-1234567890123456.7.azuredatabricks.net
) に置き換えます。databricks auth login --host <workspace-url>
Databricks CLI では、入力した情報を Azure Databricks 構成プロファイルとして保存するように求められます。
Enter
キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイル名を入力します。 同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。既存のプロファイルの一覧を取得するには、別のターミナルまたはコマンド プロンプト内で、Databricks CLI を使用してコマンド
databricks auth profiles
を実行します。 特定のプロファイルの既存の設定を表示するには、コマンドdatabricks auth env --profile <profile-name>
を実行します。Web ブラウザー内で、画面の指示に従って Azure Databricks ワークスペースにログインします。
プロファイルの現在の OAuth トークン値とトークンの今後の有効期限のタイムスタンプを表示するには、次のいずれかのコマンドを実行します。
databricks auth token --host <workspace-url>
databricks auth token -p <profile-name>
databricks auth token --host <workspace-url> -p <profile-name>
同じ
--host
値を持つ複数のプロファイルがある場合は、Databricks CLI が正しく一致する OAuth トークン情報を見つけるのに役立つ--host
と-p
のオプションを一緒に指定することが必要になる場合があります。
手順 2: バンドル プロジェクトを作成する
Databricks アセット バンドル テンプレートを使って、MLOps スタック プロジェクトのスターター ファイルを作成します。 これを行うには、まず次のコマンドを実行します。
databricks bundle init mlops-stacks
画面のプロンプトに回答します。 これらのプロンプトへの回答に関するガイダンスについては、GitHub 上の Databricks MLOps Stacks リポジトリにある新しいプロジェクトの開始に関するセクションを参照してください。
最初のプロンプトには、ML コード コンポーネント、CI/CD コンポーネント、またはその両方を設定するオプションが表示されます。 このオプションを使用すると、直接関連するコンポーネントのみを作成できるため、初期セットアップが簡略化されます (他のコンポーネントを設定するには、初期化コマンドをもう一度実行します)。次のいずれかを選択してください。
CICD_and_Project
(既定値) - ML コードと CI/CD コンポーネントの両方を設定します。Project_Only
- ML コード コンポーネントのみを設定します。 このオプションは、データ サイエンティストが作業を開始するためのものです。CICD_Only
- CI/CD コンポーネントのみを設定します。 このオプションは、ML エンジニアがインフラストラクチャを設定するためのものです。
画面上のすべてのプロンプトに回答すると、テンプレートによって MLOps スタック プロジェクトのスターター ファイルが作成され、現在の作業ディレクトリに追加されます。
必要に応じて、MLOps スタック プロジェクトのスターター ファイルをカスタマイズします。 これを行うには、新しいプロジェクト内の次のファイルにあるガイダンスに従います。
ロール Goal ドキュメント このリポジトリを初めて利用するユーザー このリポジトリの ML パイプラインとコード構造を理解する README.md
データ サイエンティスト まったく新しいプロジェクトに対する ML コードの記述を開始する <project-name>/README.md
データ サイエンティスト 既存のプロジェクトの運用 ML コード (モデル トレーニング ロジックなど) を更新する docs/ml-pull-request.md
データ サイエンティスト 運用モデルの ML リソース (モデルトレーニングや推論ジョブなど) を変更する <project-name>/resources/README.md
MLOps / DevOps 現在の ML プロジェクトに CI/CD を設定する docs/mlops-setup.md
実験をカスタマイズする場合、実験宣言内のマッピングは、REST API リファレンスの POST /api/2.0/mlflow/experiments/create で定義されている実験作成操作の要求ペイロードに対応し、YAML 形式で表されます。
ジョブをカスタマイズする場合、ジョブ宣言内のマッピングは、REST API リファレンスの POST /api/2.1/jobs/create で定義されているジョブ作成操作の要求ペイロードに対応し、YAML 形式で表されます。
ヒント
「Databricks アセット バンドルで新しいジョブ クラスター設定をオーバーライドする」で説明されている手法を使用して、バンドル内のクラスターの設定を定義、結合、オーバーライドできます。
モデルをカスタマイズする場合、モデル宣言内のマッピングは、REST API リファレンスの POST /api/2.1/unity-catalog/models で定義されている Unity カタログ モデルの作成操作の要求ペイロードに対応し、YAML 形式で表されます。
パイプラインをカスタマイズする場合、パイプライン宣言内のマッピングは、REST API リファレンスの POST /api/2.0/pipelines で定義されているパイプライン作成操作の要求ペイロードに対応し、YAML 形式で表されます。
手順 3: バンドル プロジェクトを検証する
バンドル構成が有効かどうかを確認します。 これを行うには、次のように、databricks.yml
が配置されているプロジェクトのルートから Databricks CLI を実行します。
databricks bundle validate
バンドル設定の概要が返されたら、検証が成功したことになります。 エラーが返される場合は、エラーを修正してから、この手順を繰り返します。
手順 4: バンドルをデプロイする
プロジェクトのリソースと成果物を目的のリモート ワークスペースにデプロイします。 これを行うには、次のように、databricks.yml
が配置されているプロジェクトのルートから Databricks CLI を実行します。
databricks bundle deploy -t <target-name>
<target-name>
を、databricks.yml
ファイル内の目的のターゲットの名前に置き換えます (dev
、test
、staging
、prod
など)。
手順 5: デプロイされたバンドルを実行する
プロジェクトのデプロイした Azure Databricks ジョブは、定義済みのスケジュールで自動的に実行されます。 デプロイしたジョブをすぐに実行するには、次のように、databricks.yml
が配置されているプロジェクトのルートから Databricks CLI を実行します。
databricks bundle run -t <target-name> <job-name>
<target-name>
を、ジョブがデプロイされたdatabricks.yml
ファイル内の目的のターゲットの名前に置き換えます (dev
、test
、staging
、prod
など)。<job-name>
を、<project-name>/databricks-resources
内にある.yml
ファイルのうちの 1 つのジョブ名に置き換えます (batch_inference_job
、write_feature_table_job
、model_training_job
など)。
Azure Databricks ジョブへのリンクが表示されます。これを Web ブラウザーにコピーして、Azure Databricks UI 内でジョブを開くことができます。
手順 6: デプロイされたバンドルを削除する (省略可能)
デプロイされたプロジェクトのリソースと成果物が不要になった場合に、それらを削除するには、次のように、databricks.yml
が配置されているプロジェクトのルートから Databricks CLI を実行します。
databricks bundle destroy -t <target-name>
<target-name>
を、databricks.yml
ファイル内の目的のターゲットの名前に置き換えます (dev
、test
、staging
、prod
など)。
画面上のプロンプトに回答して、以前にデプロイされたリソースと成果物の削除を確認します。