メインコンテンツまでスキップ

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認証の設定手順を参照してください。

  1. Databricks CLI を使用して、ターゲット ワークスペースごとに次のコマンドを実行して、OAuth トークン管理をローカルで開始します。

    次のコマンドで、 <workspace-url> を Databricks ワークスペース インスタンスの URL に置き換えます (例: https://1234567890123456.7.gcp.databricks.com.

    Bash
    databricks auth login --host <workspace-url>
  2. Databricks CLI では、入力した情報を Databricks 構成プロファイルとして保存するように求められます。 Enter キーを押して提案されたプロファイル名を受け入れるか、新規または既存のプロファイルの名前を入力します。同じ名前の既存のプロファイルは、入力した情報で上書きされます。 プロファイルを使用すると、複数のワークスペース間で認証コンテキストをすばやく切り替えることができます。

    既存のプロファイルのリストを取得するには、別のターミナルまたはコマンドプロンプトでDatabricks CLIを使用してコマンドdatabricks auth profilesを実行します。特定のプロファイルの既存の設定を表示するには、コマンドdatabricks auth env --profile <profile-name>を実行します。

  3. Webブラウザで、画面の指示に従ってDatabricksワークスペースにログインします。

  4. プロファイルの現在の 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: バンドル プロジェクトを作成する

  1. Databricks Asset Bundle テンプレートを使用して、MLOps Stacks プロジェクトのスターター ファイルを作成します。これを行うには、まず次のコマンドを実行します。

    Bash
    databricks bundle init mlops-stacks
  2. 画面の指示に答えます。 これらのプロンプトに回答するためのガイダンスについては、GitHub のDatabricks MLOps スタック リポジトリで新しいプロジェクトを開始する を参照してください。

    最初のプロンプトでは、ML コード コンポーネント、CI/CD コンポーネント、またはその両方を設定するオプションが提供されます。 このオプションを使用すると、すぐに関連するコンポーネントのみを作成できるため、初期設定が簡略化されます。 (他のコンポーネントを設定するには、初期化コマンドを再度実行します。 次のいずれかを選択します。

    • CICD_and_Project (デフォルト) - ML コードと CI/CD コンポーネントの両方を設定します。
    • Project_Only - ML コード コンポーネントのみを設定します。 このオプションは、 data scientists が開始するためのものです。
    • CICD_Only - CI/CD コンポーネントのみを設定します。 このオプションは、ML エンジニアがインフラストラクチャを設定するためのものです。

    画面上のすべてのプロンプトに回答すると、テンプレートによって MLOps Stacks プロジェクトのスターター ファイルが作成され、現在の作業ディレクトリに追加されます。

  3. 必要に応じて、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 を実行します。

Bash
databricks bundle validate

バンドル構成のサマリーが返された場合、検証は成功しています。 エラーが返された場合は、エラーを修正し、この手順を繰り返します。

ステップ 4: バンドルをデプロイする

プロジェクトのリソースとアーティファクトを目的のリモート ワークスペースにデプロイします。 これを行うには、次のように、プロジェクトのルート ( databricks.yml が配置されている場所) から Databricks CLI を実行します。

Bash
databricks bundle deploy -t <target-name>

<target-name> を、databricks.yml ファイル内の目的のターゲットの名前 (devteststagingprodなど) に置き換えます。

ステップ 5: デプロイされたバンドルを実行する

プロジェクトにデプロイされた Databricks ジョブは、事前定義されたスケジュールで自動的に実行されます。 デプロイされたジョブをすぐに実行するには、次のように、プロジェクトのルート ( databricks.yml が配置されている場所) から Databricks CLI を実行します。

Bash
databricks bundle run -t <target-name> <job-name>
  • <target-name> は、ジョブがデプロイされた databricks.yml ファイル内の目的のターゲットの名前 ( devteststagingprodなど) に置き換えます。
  • <job-name> を、<project-name>/databricks-resources内の .yml ファイルのいずれかにあるジョブの名前 ( batch_inference_jobwrite_feature_table_jobmodel_training_jobなど) に置き換えます。

Databricks ジョブへのリンクが表示され、それを Web ブラウザーにコピーして Databricks UI 内でジョブを開くことができます。

ステップ6:デプロイされたバンドルを削除する(オプション)

デプロイされたプロジェクトのリソースとアーティファクトが不要になった場合に削除するには、次のように、プロジェクトのルート (databricks.ymlが配置されている場所) から Databricks CLI を実行します。

Bash
databricks bundle destroy -t <target-name>

<target-name> を、databricks.yml ファイル内の目的のターゲットの名前 (devteststagingprodなど) に置き換えます。

画面上のプロンプトに応答して、以前にデプロイしたリソースとアーティファクトの削除を確認します。