DatabricksMLOps スタック のアセットバンドル

GitHub 上の Databricks アセット バンドル、Databricks CLI、および Databricks MLOps スタック リポジトリを使用して、MLOps スタックを作成できます。MLOps スタックは、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 という名前の対応する Databricks 構成プロファイルを認証に使用することを前提としています。

U2M認証は、これらをリアルタイムで試すのに適しています。 完全に自動化されたワークフローの場合、Databricks では、代わりに OAuth マシン間 (M2M) 認証を使用することをお勧めします。 「認証」の M2M 認証の設定手順を参照してください。

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

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

    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 アセット バンドル テンプレートを使用して、MLOps スタック プロジェクトのスターター ファイルを作成します。これを行うには、まず次のコマンドを実行します。

    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 スタックプロジェクトのスターターファイルをカスタマイズします。 これを行うには、新しいプロジェクト内の次のファイルのガイダンスに従います。

    役割

    ゴール

    ドキュメント

    このリポジトリの初めてのユーザー

    このリポジトリの機械学習パイプラインとコード構造を理解する

    README.md

    データサイエンティスト

    まったく新しいプロジェクトのための機械学習コードの記述を開始する

    <project-name>/README.md

    データサイエンティスト

    既存のプロジェクトの運用環境の T機械学習コード (モデル トレーニング ロジックなど) を更新する

    docs/ml-pull-request.md

    データサイエンティスト

    運用モデルの Mining リソース (モデルのトレーニングや推論ジョブなど) を変更する

    <project-name>/resources/README.md

    MLOps / DevOps

    現在の機械学習プロジェクトの CI/CD を設定する

    docs/mlops-setup.md

    • エクスペリメントをカスタマイズする場合、エクスペリメント宣言内のマッピングは、REST API リファレンスの POST /api/2.0/mlflow/エクスペリメント/create で定義されているエクスペリメント作成操作のリクエストペイロードに対応し、YAML 形式で表されます。

    • ジョブをカスタマイズする場合、ジョブ宣言内のマッピングは、REST API リファレンスの POST /api/2.1/jobs/create で定義されている YAML 形式で表されるジョブ作成操作の要求ペイロードに対応します。

      ヒント

      バンドル内の新しいジョブ クラスターの設定を定義、結合、およびオーバーライドするには、「 Databricks アセット バンドルのクラスター設定をオーバーライドする」で説明されている手法を使用します。

    • モデルをカスタマイズする場合、モデル宣言内のマッピングは、REST API リファレンスの POST /api/2.1/unity-catalog/models で定義されている create Unity Catalog モデル操作のリクエストペイロードに対応し、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 ファイル内の目的のターゲットの名前 (devteststagingprodなど) に置き換えます。

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

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

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

  • <job-name> を、 <project-name>/databricks-resources内の .yml ファイルの 1 つ (batch_inference_jobwrite_feature_table_jobmodel_training_jobなど) のジョブの名前に置き換えます。

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

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

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

databricks bundle destroy -t <target-name>

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

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