MLOps スタック用の Databricks アセットバンドル
Databricks アセットバンドル、Databricks CLI、GitHub の Databricks MLOps スタック リポジトリを使用して、 MLOps スタック を作成できます。MLOpsStackは、本番運用のベストプラクティスに即 に準拠した上のMLOps Databricksプロジェクトです。「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
という名前の対応する Databricks 構成プロファイルを使用することを前提としています。
U2M認証は、これらの手順をリアルタイムで試すのに適しています。 完全に自動化されたワークフローの場合、Databricks では、代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」のM2M認証の設定手順を参照してください。
-
Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。
次のコマンドで、
<workspace-url>
を Databricks ワークスペース インスタンスの URL に置き換えます (例:https://1234567890123456.7.gcp.databricks.com
.Bashdatabricks auth login --host <workspace-url>
-
Databricks CLI では、入力した情報を Databricks 構成プロファイルとして保存するように求められます。
Enter
キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力します。同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。既存のプロファイルのリストを取得するには、別のターミナルまたはコマンドプロンプトでDatabricks CLIを使用してコマンド
databricks auth profiles
を実行します。特定のプロファイルの既存の設定を表示するには、コマンドdatabricks auth env --profile <profile-name>
を実行します。 -
Webブラウザで、画面の指示に従って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 Asset Bundle テンプレートを使用して、MLOps Stacks プロジェクトのスターター ファイルを作成します。これを行うには、まず次のコマンドを実行します。
Bashdatabricks bundle init mlops-stacks
-
画面の指示に答えます。 これらのプロンプトに回答するためのガイダンスについては、GitHub のDatabricks MLOps スタック リポジトリで新しいプロジェクトを開始する を参照してください。
最初のプロンプトでは、ML コード コンポーネント、CI/CD コンポーネント、またはその両方を設定するオプションが提供されます。 このオプションを使用すると、すぐに関連するコンポーネントのみを作成できるため、初期設定が簡略化されます。 (他のコンポーネントを設定するには、初期化コマンドを再度実行します。 次のいずれかを選択します。
CICD_and_Project
(デフォルト) - ML コードと CI/CD コンポーネントの両方を設定します。Project_Only
- ML コード コンポーネントのみを設定します。 このオプションは、 data scientists が開始するためのものです。CICD_Only
- CI/CD コンポーネントのみを設定します。 このオプションは、ML エンジニアがインフラストラクチャを設定するためのものです。
画面上のすべてのプロンプトに回答すると、テンプレートによって MLOps Stacks プロジェクトのスターター ファイルが作成され、現在の作業ディレクトリに追加されます。
-
必要に応じて、MLOps Stacks プロジェクトのスターター ファイルをカスタマイズします。 これを行うには、新しいプロジェクト内の次のファイルのガイダンスに従います。
ロール
ゴール
ドキュメント
このリポジトリを初めて使用するユーザー
このリポジトリの ML パイプラインとコード構造を理解する
README.md
データサイエンティスト
まったく新しいプロジェクトのための ML コードの作成を開始する
<project-name>/README.md
データサイエンティスト
既存のプロジェクトの本番運用 ML コード (model トレーニング logic) を更新する
docs/ml-pull-request.md
データサイエンティスト
Modify 本番運用 model ML リソース (例: model トレーニング や inference ジョブ)
<project-name>/resources/README.md
MLOps/DevOps
現在の ML プロジェクトの CI/CD を設定する
docs/mlops-setup.md
-
エクスペリメントをカスタマイズする場合、エクスペリメント宣言内のマッピングは、リファレンスの POST /api/2.0/mlflow/エクスペリメント/create で定義されている createRESTAPI エクスペリメント操作のリクエストペイロードに対応し、YAML 形式で表されます。
-
ジョブをカスタマイズする場合、ジョブ宣言内のマッピングは、リファレンスの POST /api/2.1/job/create RESTAPIで定義されているジョブ作成操作の要求ペイロードに対応し、YAML 形式で表されます。
-
バンドル内の新しいジョブ クラスターの設定を定義、結合、およびオーバーライドするには、「Databricks アセット バンドルでのクラスター設定のオーバーライド」で説明されている手法を使用します。
-
モデルをカスタマイズする場合、モデル宣言内のマッピングは、REST API リファレンスの POST /api/2.1/unity-catalog/models で定義されている create Unity Catalog モデル操作のリクエストペイロードに対応し、YAML 形式で表現されます。
-
パイプラインをカスタマイズする場合、パイプライン宣言内のマッピングは、リファレンスの POST /api/2.0/パイプライン RESTAPIで定義されている create パイプライン操作のリクエストペイロードに対応し、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: デプロイされたバンドルを実行する
プロジェクトにデプロイされた 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
ファイルのいずれかにあるジョブの名前 (batch_inference_job
、write_feature_table_job
、model_training_job
など) に置き換えます。
Databricks ジョブへのリンクが表示され、それを Web ブラウザーにコピーして Databricks UI 内でジョブを開くことができます。
ステップ6:デプロイされたバンドルを削除する(オプション)
デプロイされたプロジェクトのリソースとアーティファクトが不要になった場合に削除するには、次のように、プロジェクトのルート (databricks.yml
が配置されている場所) から Databricks CLI を実行します。
databricks bundle destroy -t <target-name>
<target-name>
を、databricks.yml
ファイル内の目的のターゲットの名前 (dev
、 test
、 staging
、 prod
など) に置き換えます。
画面上のプロンプトに応答して、以前にデプロイしたリソースとアーティファクトの削除を確認します。