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

MLflow 3.0 デプロイ ジョブ (ベータ)

備考

Beta

この機能は ベータ版です。

注記

デプロイ ジョブは、MLflow 3.0 クライアントやモデル追跡と共に使用する必要はなく、Unity Catalog の古い既存のモデルで有効にすることができます。ただし、MLflow 3.0 を使用することをお勧めします。

この記事では、機械学習ワークフローの一部として MLflow デプロイ ジョブを使用して、ML モデルのライフサイクル全体を管理する方法について説明します。

デプロイメントジョブとは?

デプロイジョブを使用すると、新しいモデルバージョンが作成されるたびに評価、承認、デプロイなどのタスクを自動化し、Unity Catalog モデルや Databricks ジョブとシームレスに統合できます。これらのジョブにより、モデルデプロイパイプラインの設定が簡素化され、ヒューマンインザループの承認が組み込まれ、各モデルバージョンの進行状況と履歴コンテキストを明確に可視化できる管理されたワークフローが提供されます。

デプロイメントジョブを使用すると、プロセスは完全に自動化されます。新しいモデルバージョンが作成されるたびに 自動的にトリガー され、モデルページとモデルバージョンページにデプロイメントジョブの実行ステータスが直接表示されます。 各デプロイメントジョブの実行に関する履歴情報は 、アクティビティログで簡単に追跡できるため、透明性と管理が容易になります。

MLflow 3.0 Model Tracking との統合

Databricks では、 MLflow 3.0 Tracking を使用してモデルを登録し、デプロイ ジョブで評価を実行することをお勧めします。 新しいクライアントは、デプロイ ジョブの評価部分からメトリクスを自動的にログに記録し、UC モデル バージョンの UI に表示されます。 これにより、ユーザーはモデル バージョン ページにある一元化されたメトリクス、パラメーター、トレースを使用して、デプロイ ジョブ ライフサイクルでモデルをさらに進めるタイミングについて、情報に基づいた決定を下すことができます。

UC CREATE MODEL VERSION ACLとの統合

デプロイジョブは、新しくリリースされた UC Create Model Version ACL と自然に統合され、MLOps ストーリーを完成させます。具体的には、新しいモデル・バージョンをモデルに登録するための CREATE MODEL VERSION ACL をユーザーに付与できます。 ユーザーが本番運用に適したモデルと判断した場合、このバージョンをUCモデルに登録し、デプロイジョブを開始してモデルを自動的に評価します。 この時点で、承認者はこのバージョンのデプロイを手動で承認または拒否できます。

important

デプロイ ジョブは、モデル所有者の資格情報を使用して自動的にトリガーされます。つまり、Unity Catalogモデルに対するCREATE MODEL VERSION権限をユーザーに付与すると、ユーザーはジョブの一部として任意のコードを実行できます。このため、 Databricks では、権限昇格を防ぐために、最小限の権限を持つサービスプリンシパルを使用してデプロイメントジョブを設定することをお勧めします。

デプロイ ジョブの例

以下は、一般的なユースケースを反映したデプロイメントジョブの例です。これらは単なる例であり、必要に応じてカスタマイズできることに注意してください。

簡単なデプロイ ジョブの例は、評価、承認、デプロイの 3 つのステップで構成されています。評価は mlflow.evaluate を呼び出して、入力されたモデル バージョンで検証メトリクスを生成します。 承認により、特権ユーザーはこれらのメトリクスが満足のいくものかどうかを判断し、満足している場合はモデルを承認できます。 最後に、Deployment はモデルバージョンを Databricks モデルサービングエンドポイントにデプロイします。

次の図は、評価、承認、デプロイの各タスクで構成されるこの単純なデプロイ ジョブを構成する Databricks ジョブ タスクを示しています。

評価、承認、およびデプロイ タスクで構成される単純なデプロイ ジョブ。

また、より複雑なデプロイメントジョブを作成することもできます。たとえば、ワークフローの一部としてメトリクス収集ステップを使用して段階的なロールアウトを実行することができます。このデプロイメント・ジョブを作成するには、承認タスクの後に、モデルを1%にデプロイするタスクを追加し、モデルを10%にデプロイし、モデルを100%にデプロイし、モデルを100%にデプロイするか、モデルをロールバックするかを決定することができます。 次の図は、このより複雑なデプロイ ジョブがどのように見えるかを示しています。

段階的なロールアウトとメトリクス収集を含む複雑なデプロイ ジョブ。

デプロイ ジョブを作成する

デプロイメントジョブを使用すると、モデルバージョンのライフサイクルを管理できます。デプロイメントジョブを使用するには、まず、登録済みモデルで作成されたモデルバージョンが必要です。を参照してください。 MLflow 3.0 サンプル ノートブック トレーニングと登録する モデルの推奨アプローチについて。

Databricks では、 実行 フィールドを 最小限のアクセス許可を持つサービスプリンシパルに設定することをお勧めします。 さらに、承認タスクについては、タスクが最初に失敗すると予想されるため、 Databricks では再試行を無効にする ことをお勧めします。これにより、待ち時間が長くなり、複数のエラーログが報告されるのを防ぐことができます。

デプロイメント・ジョブには、 model_namemodel_versionの 2 つのジョブ・パラメーターと、最大並列実行制限 1 (デフォルト) が必要です。

デプロイメントジョブを作成するには、デプロイメントノートブックを使用してプログラムで作成する方法と、UI を使用する方法の 2 つがあります。どちらの場合も、各ジョブ・タスクをノートブックとして提供する必要があります。

ノートブックを使用してプログラムでデプロイ ジョブを作成する (推奨)

デプロイメントノートブックを使用してプログラムでデプロイメントジョブを作成することは、 Databricks SDKを使用するため、すべての設定がコードに真実のソースが含まれていることで簡単にセットアップできるため、お勧めします。 また、この方法では、複数のジョブやその他のリソースを複数のワークスペースに簡単にデプロイすることもできます。

以下の手順では、簡単なサンプル テンプレートを使用して、基本的な評価、承認、およびデプロイ タスクでデプロイ ジョブを設定します。

  1. UC モデルを作成して登録する たとえば、 MLflow 3.0 の従来の ML ワークフロー (ベータ) の例を参照してください。
  2. 評価タスクを定義するノートブックを作成します。たとえば、 評価ノートブック をインポートして、 従来の ML の例から作成されたモデルを評価します。必要に応じて TODO を更新します 。他のモデルの場合は、このノートブックをテンプレートとして使用し、カスタマイズして、独自のケースの必要に応じてモデルを評価します。
  3. 承認タスクを定義するノートブックを作成します。たとえば、 承認ノートブック をワークスペースにインポートします。このノートブックの仕組みの詳細については、「 承認 」セクションを参照してください。また、このノートブックをテンプレートとして使用し、ニーズに合わせて更新することもできます。
  4. デプロイメント・タスクを定義するノートブックを作成します。たとえば、以下の デプロイ ノートブック をワークスペースにインポートします。また、このノートブックをテンプレートとして使用し、ニーズに合わせて更新することもできます。
  5. デプロイ ジョブを作成および調整するノートブックを作成します。たとえば、 デプロイ ジョブ ノートブック をワークスペースにインポートします。このノートブックは、デプロイメントジョブとなる Databricks ジョブを作成します。 ノートブックの TODO を更新して、UC モデルと適切なタスクを使用してジョブを正しく定義してください。また、このノートブックをテンプレートとして使用し、ニーズに合わせて更新することもできます。たとえば、より複雑なロールアウト計画がある場合は、より多くのタスクを含めることができます。
  6. デプロイメント・ジョブ・ノートブックを実行して、デプロイメント・ジョブを作成します。

ジョブUIを使用したデプロイメントジョブの作成

ジョブ は、上記のテンプレートの SDK を使用する代わりに、UI を使用して作成することもできます。ただし、ノートブック タスクごとに、ノートブックを手動で作成し、ワークスペースのどこかに保存する必要があります。 指示モデルでは、評価、承認、およびデプロイメント・タスクを含む単純なデプロイメント・ワークフローが想定されます。より複雑なデプロイワークフローがある場合は、タスクを追加して手順をカスタマイズします。

  1. UC モデルを作成して登録する たとえば、 MLflow 3.0 の従来の ML ワークフロー (ベータ) の例を参照してください。

  2. 評価タスクを定義するノートブックを作成します。たとえば、 評価ノートブック をインポートして、 従来の ML の例から作成されたモデルを評価します。必要に応じて TODO を更新します 。他のモデルの場合は、このノートブックをテンプレートとして使用し、カスタマイズして、独自のケースの必要に応じてモデルを評価します。

  3. 承認タスクを定義するノートブックを作成します。たとえば、 承認ノートブック をワークスペースにインポートします。このノートブックの仕組みの詳細については、「 承認 」セクションを参照してください。また、このノートブックをテンプレートとして使用し、ニーズに合わせて更新することもできます。

  4. デプロイメント・タスクを定義するノートブックを作成します。たとえば、以下の デプロイ ノートブック をワークスペースにインポートします。また、このノートブックをテンプレートとして使用し、ニーズに合わせて更新することもできます。

  5. Databricks ジョブ UI でデプロイ ジョブを作成します。

    1. 左側のナビゲーション ウィンドウで、[ + 新しい> ジョブ ] をクリックして新しいジョブを作成します。

    2. 各タスクを設定します。たとえば、デプロイメントタスクの場合、次のようになります。

      1. タスク名: デプロイ
      2. タイプ: ノートブック
      3. ソース: ワークスペース
      4. パス: /Workspace/Users/<user.name@email.com>/deployment
      5. コンピュート: サーバレス

      構成の詳細については、「 ノートブック タスク for ジョブ」を参照してください。

  6. 各タスクの作成が完了したら、ジョブ パラメーターを追加します。 右側のパネルで、[ パラメーターの編集 ] をクリックします。model_namemodel_versionを追加します。

以下は、UI を使用して上記のテンプレートジョブを作成する例です。

UI を使用して作成されたデプロイ ジョブ。

デプロイ ジョブをモデルに接続する

UC モデルとデプロイ ジョブを作成したら、ジョブをデプロイ ジョブとしてモデルに接続する必要があります。モデルのページの [概要 ] タブの [デプロイ ジョブ ] で、[ デプロイ ジョブの接続 ] をクリックします。

モデルページで [デプロイジョブの接続] をクリックします。

ドロップダウンリストからデプロイジョブを選択します。また、検索バーを使用して、名前や ID でジョブを検索することもできます。 [ 変更を保存 ] をクリックします。

接続するデプロイメントジョブを選択します。

デプロイ ジョブがモデルに接続されると、モデル ページにリンクされます。

接続されたデプロイ ジョブ。

必要な権限

デプロイジョブを接続してトリガーするには、次の権限が必要です。

  • デプロイ ジョブを接続するためのモデルの MANAGE または OWNER
  • モデル所有者は、デプロイ ジョブに接続するために、デプロイ ジョブに対する CAN MANAGE RUN 以上のアクセス許可を持っている必要があります。
    • : このデプロイ ジョブ フィールドは、MANAGE 以上の権限を持つユーザーがモデルで更新することもできます。この場合、アップデーター モデル所有者の両方が、デプロイ ジョブに接続するには、デプロイ ジョブに対する CAN MANAGE RUN 以上のアクセス許可を持っている必要があります。

デプロイ ジョブをトリガーする

デプロイメント・ジョブは、作成される新しいモデル・バージョンで自動的にトリガーされます。また、モデル・バージョン・ページで「 デプロイメント・ジョブの開始 」をクリックして、既存のバージョンと以前にデプロイメントされたバージョンの両方で手動でトリガーすることもできます。

モデルバージョンページからデプロイジョブを開始します。

ジョブは、ジョブ UI または API から直接トリガーすることもできます。適切なモデル名とバージョンをジョブ・パラメーターに指定する必要があります。

必要な権限

デプロイメントジョブをトリガーするには、次の権限が必要です。

  • モデルバージョンのUIを使用してデプロイメントジョブを手動でトリガーまたは修復するには、デプロイメントジョブにCAN MANAGE RUN以上のACLが必要です(ジョブUIを使用してジョブをトリガーするために必要なACLと同じACL)。
  • ジョブは、新しいバージョンが作成され、モデル所有者の認証情報を使用すると自動的にトリガーされるため、モデル所有者はデプロイジョブに CAN MANAGE RUN 以上の ACL を持っている必要があります。

デプロイ ジョブを承認する (試験段階)

Databricks は、デプロイジョブの実験的な承認メカニズムを提供し、ML パイプラインのヒューマンインザループプロセスを可能にします。デプロイ ジョブがトリガーされると、評価実行のメトリクスがモデル バージョン ページに表示されます。 これらのメトリクスを確認した後、承認者は UI で [承認] をクリックしてモデルバージョンを承認できます。この機能は、re:[UC] タグを使用して、承認タスクが合格するか失敗するかを決定します。承認タスクは、「approval」(大文字と小文字を区別しない)で始まるジョブタスク名で識別され、re:[UC]タグが Approved に設定されている場合(UIの [承認 ]ボタンをクリックするか、手動で設定されている場合)に合格します。

承認プロセスの仕組みは次のとおりです。

  1. 初期実行 : モデルバージョンがまだ承認されておらず、必要な UC タグがないため、デプロイメントジョブの最初の実行は承認タスクで 常に 失敗します。

デプロイメント・ジョブの初回実行は、承認タスクで常に失敗します。

  1. 承認評価 : 承認者は、モデルバージョンページに表示されるモデルバージョンとその評価メトリクスを確認します。 これにより、承認者はモデルバージョンの品質と準備状況を評価できます。

モデルバージョンのメトリクスを確認します。

  1. 承認アクション : 承認者がモデルバージョンに問題がないと判断した場合、モデルバージョンページのデプロイメントジョブサイドバーセクションにある[ 承認 ]ボタンをクリックします。

デプロイ ジョブ サイドバーの [モデル バージョン] ページにある [承認] ボタン。

このアクションにより、ジョブの実行が自動的に修復され、モデル バージョンに UC タグが追加されます。

  • タグキーは、承認タスクの名前と一致します。たとえば、 承認ノートブックの例では、これは Approval_Checkです。
  • タグ値は Approvedに設定されます。
  1. ジョブ Continuation : 修復されたデプロイ ジョブの実行は、承認タスクから自動的に再開されます。 今回は、必要な UC タグが存在するため、合格します。その後、デプロイメントなどの後続のタスクに進みます。

必要な権限

UC タグを追加し、デプロイ ジョブをトリガーするには、次のアクセス許可が必要です。

  • UC モデルに APPLY TAG を実行します。
  • デプロイジョブの CAN MANAGE RUN を実行します。

デプロイ ジョブの状態とアクティビティ ログを表示する

モデル バージョンでデプロイ ジョブがトリガーされると、それらのデプロイの現在のステータスをモデル ページの [概要 ] タブに表示できます。ステータスの下には、アクティビティログのアクティビティ履歴が表示されます。アクティビティ ログは、モデル バージョン ページにも表示されます。

デプロイ ジョブの状態とアクティビティ ログを表示します。

必要な権限

デプロイ ジョブとアクティビティ ログを表示するには、次のアクセス許可が必要です (モデルの表示と同じです)。

  • UC モデルに対して EXECUTE を実行します。

デプロイ ジョブ テンプレート ノートブックの例

次の例のノートブックは、評価、承認、およびデプロイ タスクで構成される単純なデプロイ ジョブを作成するためのテンプレートとして使用できます。ノートブックの TODO を必ず入力して、モデルにデプロイ ジョブを構成してください。

評価ノートブック

評価ノートブックの例

Open notebook in new tab

承認ノートブック

承認ノートブックの例

Open notebook in new tab

デプロイ ノートブック

デプロイ ノートブックの例

Open notebook in new tab

デプロイ ジョブ ノートブックを作成する

デプロイ ジョブを作成するためのノートブックの例

Open notebook in new tab