Workspace Model Registry (レガシー) を使用してモデルのライフサイクルを管理する

重要

このドキュメントでは、 Workspace Model Registryについて説明します。 ワークスペースで Unity Catalog が有効になっている場合は、このページの手順を使用しないでください。 代わりに、「 Unity Catalog のモデル」を参照してください。

Workspace Model Registry から Unity Catalog にアップグレードする方法については、 「ワークフローとモデルを Unity Catalog に移行する」を参照してください。

ワークスペースのデフォルト カタログがUnity Catalog (hive_metastore ではなく) にあり、 Databricks Runtime 13.3 LTS以上を使用してクラスターを実行している場合、モデルはワークスペースのデフォルト カタログに自動的に作成され、そこから読み込まれます。構成は必要ありません。 この場合にWorkspace Model Registry使用するには、ワークロードの開始時に import mlflow; mlflow.set_registry_uri("databricks") を実行して明示的にターゲットにする必要があります。 2024 年 1 月より前に デフォルト カタログがUnity Catalog内のカタログに設定され、ワークスペース モデルレジストリが 2024 年 1 月より前に使用されていた少数のワークスペースは、この動作の対象外となり、引き続き デフォルト によってWorkspace Model Registryが使用されます。

2024 年 4 月より、 、ワークスペースのDatabricks Workspace Model Registryデフォルト カタログ が にある新しいアカウントのワークスペースのUnity Catalog を無効にしました。

この記事では、機械学習ワークフローの一部として Workspace Model Registry を使用して、ML モデルのライフサイクル全体を管理する方法について説明します。 Workspace Model Registryは、データブリックが提供するホストされたバージョンのMLflow Model Registryです。

Workspace Model Registryは以下を提供します。

  • 時系列モデルの系列 (MLflow エクスペリメントと実行によって特定の時間にモデルが生成されたもの)。

  • Model Serving

  • モデルのバージョン管理。

  • ステージの移行 (たとえば、ステージングから運用またはアーカイブへ)。

  • レジストリイベントに基づいてアクションを自動的にトリガーできるようにするためのWebhook

  • モデル イベントの Eメール 通知。

モデルの説明を作成および表示したり、コメントを残したりすることもできます。

この記事には、ワークスペース モデルレジストリ UI とワークスペース モデルレジストリ API の両方の手順が含まれています。

Workspace Model Registry概念の概要については、「MLflow を使用した機械学習ライフサイクル管理」を参照してください。

モデルを作成または登録する

UI を使用してモデルを作成または登録したり、 API を使用してモデルを登録したりできます

UIを使用したモデルの作成または登録

ワークスペースモデルレジストリにモデルを登録する方法は2つあります。 MLflow に記録されている既存のモデルを登録することも、新しい空のモデルを作成して登録し、以前に記録済みモデルを割り当てることもできます。

ノートブックから既存の記録済みモデルを登録する

  1. ワークスペースで、登録するモデルを含む MLflow の実行を特定します。

    1. ノートブックの右側のサイドバーにある エクスペリメント アイコン エクスペリメント アイコン をクリックします。

      ノートブックツールバー
    2. エクスペリメントの実行サイドバーで、実行の日付の横にあるアイコンをクリックします 外部リンク 。 [MLflow の実行] ページが表示されます。 このページには、パラメーター、メトリクス、タグ、アーティファクトのリストなど、実行の詳細が表示されます。

  2. [アーティファクト] セクションで、 xxx-model という名前のディレクトリをクリックします。

    登録する model
  3. 右端の [ モデル] ボタンをクリックします。

  4. ダイアログで、[ モデル ]ボックスをクリックし、次のいずれかの操作を行います。

    • ドロップダウン メニューから [ 新しいモデルの作成 ] を選択します。 [ モデル名 ] フィールドが表示されます。 モデル名を入力します (例: scikit-learn-power-forecasting)。

    • ドロップダウンメニューから既存のモデルを選択します。

    モデルの新規作成
  5. [ 登録する] をクリックします。

    • [ 新しいモデルの作成] を選択した場合、この登録によって scikit-learn-power-forecastingという名前のモデルが作成され、ワークスペースモデルレジストリによって管理される安全な場所にモデルがコピーされ、新しいバージョンのモデルが作成されます。

    • 既存のモデルを選択した場合、これは選択したモデルの新しいバージョンを登録します。

    しばらくすると、[ 登録する モデル] ボタンが、新しく登録されたモデル バージョンへのリンクに変わります。

    新しく作成したモデルを選択する
  6. リンクをクリックして、ワークスペース Model Registry UIで新しいモデルバージョンを開きます。 サイドバーの [ モデル ] をクリックして 、ワークスペース Model Registry モデル アイコン でモデルを見つけることもできます。

新しい登録済みモデルを作成し、記録済みモデルを割り当てる

[登録済みモデル] ページの [モデルの作成] ボタンを使用して、新しい空のモデルを作成し、記録済みモデルを割り当てることができます。 次のステップに従ってください。

  1. [登録済みモデル] ページで、[ モデルの作成] をクリックします。 モデルの名前を入力し、[ 作成] をクリックします。

  2. 「ノートブックから既存の記録済みモデルを登録する」の手順 1 から 3 に従います。

  3. [登録する Model]ダイアログで、ステップ 1で作成したモデルの名前を選択し、[ 登録する]をクリックします。 これにより、作成した名前のモデルが登録され、ワークスペースモデルレジストリによって管理される安全な場所にモデルがコピーされ、モデルバージョン Version 1が作成されます。

    しばらくすると、MLflow の実行 UI によって [登録する Model] ボタンが、新しく登録されたモデル バージョンへのリンクに置き換えられます。 エクス ペリメント の実行ページの [モデル] ダイアログの [モデル] ドロップダウン リストからモデルを選択できるようになりました。モデルバージョンの作成などの API コマンドで名前を指定して、モデルの新しいバージョンを登録することもできます。

APIを使用してモデルを登録する

Workspace モデルレジストリにモデルを登録するプログラムによる方法は 3 つあります。 すべてのメソッドは、ワークスペースモデルレジストリによって管理される安全な場所にモデルをコピーします。

  • モデルをログに記録し、MLflow エクスペリメント中に指定した名前で登録するには、 mlflow.<model-flavor>.log_model(...) メソッドを使用します。 名前の登録済みモデルが存在しない場合、メソッドは新しいモデルを登録し、バージョン 1 を作成して、 ModelVersion MLflow オブジェクトを返します。 名前の登録済みモデルが既に存在する場合、メソッドは新しいモデル バージョンを作成し、バージョン オブジェクトを返します。

    with mlflow.start_run(run_name=<run-name>) as run:
      ...
      mlflow.<model-flavor>.log_model(<model-flavor>=<model>,
        artifact_path="<model-path>",
        registered_model_name="<model-name>"
      )
    
  • すべてのエクスペリメントの実行が完了し、レジストリに追加するのに最適なモデルを決定した後、指定した名前でモデルを登録するには、 mlflow.register_model() メソッドを使用します。 このメソッドでは、 mlruns:URI 引数の実行 ID が必要です。 名前の登録済みモデルが存在しない場合、メソッドは新しいモデルを登録し、バージョン 1 を作成して、 ModelVersion MLflow オブジェクトを返します。 名前の登録済みモデルが既に存在する場合、メソッドは新しいモデル バージョンを作成し、バージョン オブジェクトを返します。

    result=mlflow.register_model("runs:<model-path>", "<model-name>")
    
  • 指定した名前で新しい登録済みモデルを作成するには、MLflow クライアント API create_registered_model() メソッドを使用します。 モデル名が存在する場合、このメソッドは MLflowExceptionをスローします。

    client = MlflowClient()
    result = client.create_registered_model("<model-name>")
    

Databricks Terraform プロバイダー および databricks_mlflow_modelにモデルを登録することもできます。

クォータ制限

2024 年 5 月より、すべてのDatabricksワークスペースに対して、 Workspace Model Registry 、ワークスペースごとの登録済みモデルとモデル バージョンの合計数にクォータ制限が課せられます。 リソース制限を参照してください。 レジストリのクォータを超えた場合、Databricks では、不要になった登録済みモデルとモデル バージョンを削除することをお勧めします。 Databricks では、制限内に収まるようにモデルの登録と保持戦略を調整することも推奨しています。 ワークスペースの制限を増やす必要がある場合は、Databricks アカウント チームにお問い合わせください。

次の図は、モデル エンティティをインベントリして削除する方法を示しています。

インベントリワークスペースモデルレジストリエンティティノートブック

ノートブックを新しいタブで開く

UIでモデルを表示する

登録済みモデルページ

登録済みモデルページは、サイドバーの モデル アイコン 「モデル 」をクリックすると 表示されます。このページには、レジストリ内のすべてのモデルが表示されます。

このページから 新しいモデルを作成できます

また、ワークスペース管理者は、このページから、 Workspace Model Registry内のすべてのモデルに対する権限を設定できます。

登録モデル

登録済みモデルページ

モデルの登録済みモデルページを表示するには、登録済みモデルページでモデル名をクリックします。 [登録済みモデル] ページには、選択したモデルに関する情報と、モデルの各バージョンに関する情報を含むテーブルが表示されます。 このページでは、次のこともできます。

登録モデル

モデル バージョン ページ

モデル バージョン ページを表示するには、次のいずれかの操作を行います。

  • [登録済みモデル] ページの [ 最新バージョン ] 列でバージョン名をクリックします。

  • 登録済みモデル ページの [バージョン] 列で バージョン 名をクリックします。

このページには、登録済みモデルの特定のバージョンに関する情報が表示され、ソース実行 (モデルを作成するために実行されたノートブックのバージョン) へのリンクも表示されます。 このページでは、次のこともできます。

モデルバージョン

モデルへのアクセスを制御する

モデルの権限を構成するには、少なくとも CAN MANAGE 権限が必要です。 モデルのアクセス許可レベルの詳細については、 MLflowモデル ACL」を参照してください。 モデル バージョンは、親モデルから権限を継承します。 モデル バージョンの権限は設定できません。

  1. サイドバーでモデル アイコン [ モデル ] をクリックします 。

  2. モデル名を選択します。

  3. [ アクセス許可] をクリックします。 「権限設定」ダイアログが開きます

    [モデルのアクセス許可] ボタン
  4. ダイアログで、 「ユーザー、グループ、またはサービスプリンシパルの選択」ドロップダウンを選択し、ユーザー、グループ、またはサービスプリンシパルを選択します。

    MLflow モデルの権限を変更する
  5. 権限ドロップダウンから権限を選択します。

  6. 追加 」をクリックし、「 保存」をクリックします。

レジストリ全体のレベルでCAN MANAGE権限を持つワークスペース管理者とユーザーは、[モデル] ページの[権限]をクリックして、ワークスペース内のすべてのモデルに権限レベルを設定できます。

モデルステージの遷移

モデル バージョンには、なしステージング、運用またはアーカイブのいずれかのステージがあります。ステージング ステージはモデルのテストと検証を目的とし、 運用 ステージはテストまたはレビュー プロセスを完了し、ライブ スコアリングのためにアプリケーションにデプロイされたモデル バージョン用です。アーカイブ済みモデルバージョンは非アクティブであると見なされ、その時点で 削除を検討できます。 モデルの異なるバージョンは、異なる段階にある可能性があります。

適切な アクセス許可 を持つユーザーは、ステージ間でモデル バージョンを移行できます。 モデル バージョンを特定のステージに移行するアクセス許可がある場合は、直接移行を行うことができます。 権限がない場合は、ステージの移行をリクエストできます。モデル バージョンを移行する権限を持つユーザーは、リクエストを承認、拒否、またはキャンセルできます

モデルステージは、UI または API を使用して移行できます。

UIを使用したモデル ステージの遷移

次の手順に従って、モデルのステージを移行します。

  1. 使用可能なモデル ステージと使用可能なオプションの一覧を表示するには、モデル バージョン ページで [ステージ: ] の横にあるドロップダウンをクリックし、別のステージへの移行を要求または選択します。

    ステージの移行 options
  2. オプションのコメントを入力し、[ OK] をクリックします。

モデル バージョンを本番運用ステージに移行する

テストと検証の後、運用ステージへの移行または移行を要求できます。

ワークスペースモデルレジストリでは、各ステージで複数のバージョンの登録済みモデルを使用できます。 運用環境に 1 つのバージョンのみが必要な場合は、[ 既存の運用モデル バージョンをアーカイブ済みに移行] をオンにすることで、現在運用環境にあるモデルのすべてのバージョンをアーカイブ済みに移行できます。

モデル バージョンの承認、却下、またはキャンセル ステージの移行要求

ステージの移行権限のないユーザーは、ステージの移行を要求できます。 要求は、モデル バージョン ページの [保留中の要求 ] セクションに表示されます。

本番運用への移行

ステージの移行要求を承認、却下、またはキャンセルするには、[ 承認]、[ 却下]、または [キャンセル] リンクをクリックします。

移行要求の作成者は、要求を取り消すこともできます。

モデル バージョンのアクティビティを表示する

要求、承認済み、保留中、およびモデル バージョンに適用されたすべての遷移を表示するには、[アクティビティ] セクションに移動します。 このアクティビティの記録は、監査または検査のためのモデルのライフサイクルの系列を提供します。

APIを使用したモデルステージの移行

適切な アクセス許可 を持つユーザーは、モデル バージョンを新しいステージに移行できます。

モデル バージョン ステージを新しいステージに更新するには、MLflow クライアント API transition_model_version_stage() メソッドを使用します。

  client = MlflowClient()
  client.transition_model_version_stage(
    name="<model-name>",
    version=<model-version>,
    stage="<stage>",
    description="<description>"
  )

<stage> に使用できる値は、"Staging"|"staging""Archived"|"archived""Production"|"production""None"|"none"です。

推論にモデルを使用する

プレビュー

この機能はパブリックプレビュー段階です。

モデルが Workspace モデルレジストリに登録されると、バッチまたはストリーミング推論にモデルを使用するノートブックを自動的に生成できます。 または、エンドポイントを作成して、 Model Servingでのリアルタイム サービス提供にモデルを使用することもできます。

登録済みモデルページまたはモデルバージョンページの右上隅で、 をクリックします[モデルを使用] ボタン。[モデル推論の構成] ダイアログが表示され、バッチ推論、ストリーミング推論、またはリアルタイム推論を構成できます。

重要

株式会社アナコンダは、anaconda.org チャンネルの 利用規約 を更新しました。 新しい利用規約に基づいて、Anacondaのパッケージと配布に依存している場合は、商用ライセンスが必要になる場合があります。 詳細については、 Anaconda Commercial Edition FAQ を参照してください。 Anacondaチャンネルの使用は、そのサービス利用規約に準拠します。

v1.18 より前にログに記録された機械学習フロー モデル (Databricks Runtime 8.3 以前 機械学習) は、デフォルトで conda defaults チャンネル (https://repo.anaconda.com/pkgs/) でログに記録されていました。依存関係として。 このライセンス変更により、Databricks は MLflow v1.18 以降を使用してログに記録されたモデルに対する defaults チャンネルの使用を停止しました。 ログに記録されるデフォルトのチャンネルは conda-forgeになり、コミュニティが管理する https://conda-forge.org/ を指します。

MLflow v1.18 より前に、モデルの conda 環境から defaults チャンネルを除外せずにモデルをログに記録した場合、そのモデルには、意図しない defaults チャンネルへの依存関係がある可能性があります。 モデルにこの依存関係があるかどうかを手動で確認するには、記録済みモデルにパッケージ化された conda.yaml ファイル内の channel 値を調べます。たとえば、 defaults チャンネル依存関係を持つモデルの conda.yaml は次のようになります。

channels:
- defaults
dependencies:
- python=3.8.8
- pip
- pip:
    - mlflow
    - scikit-learn==0.23.2
    - cloudpickle==1.6.0
      name: mlflow-env

Databricks は、Anaconda との関係の下でモデルと対話するための Anaconda リポジトリの使用が許可されているかどうかを判断できないため、Databricks は顧客に変更を強制しません。 Databricks の使用による Anaconda.com リポジトリの使用が Anaconda の条件で許可されている場合は、何もする必要はありません。

モデルの環境で使用されるチャンネルを変更する場合は、新しい conda.yamlを使用してモデルをワークスペースモデルレジストリに再登録できます。 これを行うには、 log_model()conda_env パラメーターにチャンネルを指定します。

log_model() API の詳細については、使用しているモデル フレーバーの MLflow ドキュメント ( Scikit-Learnの log_modelなど) を参照してください。

conda.yaml ファイルの詳細については、 MLflow のドキュメントを参照してください。

モデル推論の構成ダイアログ

バッチ推論の構成

これらの手順に従ってバッチ推論ノートブックを作成すると、ノートブックは、モデルの名前を持つフォルダー内の Batch-Inference フォルダーの下のユーザー フォルダーに保存されます。 必要に応じてノートブックを編集できます。

  1. [バッチ推論] タブをクリックします。

  2. [モデル バージョン] ドロップダウンから、使用する モデル バージョン を選択します。 ドロップダウンの最初の 2 つの項目は、モデルの現在の運用バージョンとステージング バージョン (存在する場合) です。 これらのオプションのいずれかを選択すると、ノートブックは実行時に運用バージョンまたはステージング バージョンを自動的に使用します。 モデルの開発を続行するときにノートブックを更新する必要はありません。

  3. [入力テーブル] の横にある [参照] ボタンをクリックします。[ 入力データの選択 ] ダイアログが表示されます。 必要に応じて、[ コンピュート ] ドロップダウンでクラスターを変更できます。

    Unity Catalog 有効なワークスペースの場合、[入力データの選択] ダイアログでは、<catalog-name>.<database-name>.<table-name> つのレベルから選択できます。

  4. モデルの入力データを含むテーブルを選択し、[ 選択] をクリックします。 生成されたノートブックは、このデータを自動的にインポートし、モデルに送信します。 生成されたノートブックは、データがモデルに入力される前に変換が必要な場合は編集できます。

  5. 予測は、ディレクトリ dbfs:/FileStore/batch-inference内のフォルダーに保存されます。 デフォルトにより、予測はモデルと同じ名前のフォルダーに保存されます。 生成されたノートブックを実行するたびに、名前にタイムスタンプが追加された新しいファイルがこのディレクトリに書き込まれます。 タイムスタンプを含めず、ノートブックの後続の実行でファイルを上書きすることもできます。手順は、生成されたノートブックで提供されます。

    予測を保存するフォルダーを変更するには、[ 出力テーブルの場所 ] フィールドに新しいフォルダー名を入力するか、フォルダー アイコンをクリックしてディレクトリを参照し、別のフォルダーを選択します。

    予測を Unity Catalog 内の場所に保存するには、ノートブックを編集する必要があります。 Unity Catalogのデータを使用して機械学習モデルをトレーニングし、その結果をUnity Catalogに書き戻す方法を示す例については、 「機械学習チュートリアル」を参照してください。

Delta Live Tablesを使用したストリーミング推論の構成

これらの手順に従ってストリーミング推論ノートブックを作成すると、ノートブックはモデルの名前を持つフォルダー内の DLT-Inference フォルダーの下のユーザー フォルダーに保存されます。 必要に応じてノートブックを編集できます。

  1. ストリーミング (Delta Live Tables) タブをクリックします。

  2. [モデル バージョン] ドロップダウンから、使用する モデル バージョン を選択します。 ドロップダウンの最初の 2 つの項目は、モデルの現在の運用バージョンとステージング バージョン (存在する場合) です。 これらのオプションのいずれかを選択すると、ノートブックは実行時に運用バージョンまたはステージング バージョンを自動的に使用します。 モデルの開発を続行するときにノートブックを更新する必要はありません。

  3. [入力テーブル] の横にある [参照] ボタンをクリックします。[ 入力データの選択 ] ダイアログが表示されます。 必要に応じて、[ コンピュート ] ドロップダウンでクラスターを変更できます。

    Unity Catalog 有効なワークスペースの場合、[入力データの選択] ダイアログでは、<catalog-name>.<database-name>.<table-name> つのレベルから選択できます。

  4. モデルの入力データを含むテーブルを選択し、[ 選択] をクリックします。 生成されたノートブックは、入力テーブルをソースとして使用するデータ変換を作成し、MLflow PySpark 推論 UDF を統合してモデル予測を実行します。 モデルの適用前または適用後にデータに追加の変換が必要な場合は、生成されたノートブックを編集できます。

  5. 出力 Delta ライブテーブル名を指定します。 ノートブックは、指定された名前でライブ テーブルを作成し、それを使用してモデル予測を格納します。 生成されたノートブックを変更して、必要に応じてターゲット データセットをカスタマイズできます (たとえば、ストリーミング ライブ テーブルを出力として定義したり、スキーマ情報やデータ品質制約を追加したりします)。

  6. その後、このノートブックを使用して新しい Delta Live Tables パイプラインを作成するか、追加のノートブック ライブラリとして既存のパイプラインに追加できます。

リアルタイム推論を構成する

モデルサービングは、 MLflow 機械学習モデルをスケーラブルな REST API エンドポイントとして公開します。 モデルサービング エンドポイントを作成するには、 「カスタム モデルサービング エンドポイントの作成」を参照してください。

フィードバックの提供

この機能はプレビュー段階であり、フィードバックをお待ちしています。 フィードバックを提供するには、[モデル推論の構成] ダイアログの [ Provide Feedback ] をクリックします。

モデルのバージョンを比較する

モデルのバージョンは、ワークスペースモデルレジストリで比較できます。

  1. 登録済みのモデル ページで、モデル バージョンの左側にあるチェックボックスをクリックして、2 つ以上のモデル バージョンを選択します。

  2. [ 比較] をクリックします。

  3. [ <N> バージョンの比較] 画面が表示され、選択したモデル バージョンのパラメーター、スキーマ、およびメトリックを比較するテーブルが表示されます。 画面の下部で、プロットのタイプ(散布図、等高線座標、または平行座標)と、プロットするパラメーターまたはメトリクスを選択できます。

通知設定を制御する

ワークスペースモデルレジストリを設定して、指定した登録済みモデルおよびモデルバージョンでのアクティビティについてEメールで通知するように設定できます。

[登録済みモデル] ページの [ 通知対象] メニューには、次の 3 つのオプションが表示されます。

Eメール通知メニュー
  • すべての新しいアクティビティ: このモデルのすべてのモデル バージョンのすべてのアクティビティに関する Eメール 通知を送信します。 登録済みモデルを作成した場合は、この設定がデフォルトです。

  • フォローしているバージョンでのアクティビティ: フォローしているモデルバージョンについてのみEmail通知を送信します。 この選択により、フォローしているすべてのモデルバージョンの通知を受け取ります。特定のモデル バージョンの通知をオフにすることはできません。

  • 通知をミュートする: この登録済みモデルのアクティビティに関する Eメール 通知を送信しません。

次のイベントによって Email 通知がトリガーされます。

  • 新しいモデルバージョンの作成

  • ステージの移行のリクエスト

  • ステージの移行

  • 新しいコメント

次のいずれかを実行すると、モデル通知が自動的にサブスクライブされます。

  • そのモデルバージョンにコメントする

  • モデルバージョンのステージを移行する

  • モデルのステージの移行要求を行う

モデル バージョンに従っているかどうかを確認するには、 モデル バージョン ページの [フォロー状態] フィールド、または 登録済みモデル ページのモデル バージョンの表を確認します。

すべてのEメール通知をオフにする

Email 通知は、[ユーザー設定] メニューの [ワークスペース モデルレジストリ 設定] タブでオフにできます。

  1. Databricks ワークスペースの右上隅にあるユーザー名をクリックし、ドロップダウン メニューから[設定]を選択します。

  2. [ 設定 ]サイドバーで、[ 通知]を選択します。

  3. Model Registry 電子メール通知をオフにします。

アカウント管理者は、 管理者設定ページで組織全体の電子メール通知をオフにすることができます。

送信されるEメールの最大数

ワークスペースモデルレジストリは、アクティビティごとに1日ごとに各ユーザーに送信されるEメールの数を制限します。 たとえば、登録済みモデル用に作成された新しいモデルバージョンに関する Eメール を 1 日に 20 件受信した場合、ワークスペース モデルレジストリは 1 日の制限に達したことを示す Eメール を送信し、そのイベントに関する追加の Eメールは翌日まで送信されません。

許可される電子メールの数の制限を増やすには、Databricks アカウント チームにお問い合わせください。

ウェブフック

プレビュー

この機能はパブリックプレビュー段階です。

Webhookを使用すると 、ワークスペースモデルレジストリイベントをリッスンできるため、統合によってアクションが自動的にトリガーされます。 Webhook を使用して、機械学習パイプラインを自動化し、既存の CI/CD ツールやワークフローと統合できます。 たとえば、新しいモデルバージョンが作成されたときに CI ビルドをトリガーしたり、本番環境へのモデル移行が要求されるたびに Slack を通じてチームメンバーに通知したりできます。

モデルまたはモデル バージョンに注釈を付ける

モデルまたはモデル バージョンに注釈を付けることで、モデルまたはモデル バージョンに関する情報を提供できます。 たとえば、問題の概要や、使用した方法論とアルゴリズムに関する情報を含めることができます。

UIを使用してモデルまたはモデル バージョンに注釈を付ける

Databricks UI には、モデルとモデル バージョンに注釈を付ける方法がいくつか用意されています。 説明またはコメントを使用してテキスト情報を追加したり、 検索可能なキーと値のタグを追加したりできます。 説明とタグは、モデルとモデルバージョンで使用できます。コメントは、モデル バージョンでのみ使用できます。

  • 説明は、モデルに関する情報を提供することを目的としています。

  • コメントは、モデル バージョンでのアクティビティに関する継続的なディスカッションを維持する方法を提供します。

  • タグを使用すると、モデル メタデータをカスタマイズして、特定のモデルを見つけやすくすることができます。

モデルまたはモデル バージョンの説明を追加または更新する

  1. 登録済みのモデルまたはモデル バージョンのページで、[説明] の横にある [編集] をクリックします。編集ウィンドウが表示されます。

  2. 編集ウィンドウで説明を入力または編集します。

  3. [ 保存 ] をクリックして変更を保存するか 、[キャンセル] をクリックしてウィンドウを閉じます。

    モデル バージョンの説明を入力した場合、その説明は、 登録済みモデル ページの テーブルの [ 説明 ] 列に表示されます。列には、最大 32 文字または 1 行のテキストのいずれか短い方が表示されます。

モデル バージョンのコメントを追加する

  1. モデル バージョンのページを下にスクロールし、[アクティビティ] の横にある下矢印をクリックします。

  2. 編集ウィンドウにコメントを入力し、[ コメントの追加] をクリックします。

モデルまたはモデルバージョンのタグを追加する

  1. 登録済みのモデルまたはモデルバージョンのページで、まだ開いていない場合はクリックしますタグアイコン。タグテーブルが表示されます。

    タグテーブル
  2. [ 名前 ] フィールドと [ 値] フィールドをクリックし、タグのキーと値を入力します。

  3. [追加] をクリックします。

    タグを追加

モデルまたはモデルバージョンのタグを編集または削除する

既存のタグを編集または削除するには、[ アクション ] 列のアイコンを使用します。

タグアクション

APIを使用してモデル バージョンに注釈を付ける

モデル バージョンの説明を更新するには、MLflow クライアント API update_model_version() メソッドを使用します。

client = MlflowClient()
client.update_model_version(
  name="<model-name>",
  version=<model-version>,
  description="<description>"
)

登録済みモデルまたはモデル バージョンのタグを設定または更新するには、MLflow クライアント API 'set_registered_model_tag()') または ' set_model_version_tag()' メソッドを使用します。

client = MlflowClient()
client.set_registered_model_tag()(
  name="<model-name>",
  key="<key-value>",
  tag="<tag-value>"
)
client = MlflowClient()
client.set_model_version_tag()(
  name="<model-name>",
  version=<model-version>,
  key="<key-value>",
  tag="<tag-value>"
)

モデルの名前を変更する (API のみ)

登録済みモデルの名前を変更するには、MLflow クライアント API rename_registered_model() メソッドを使用します。

client=MlflowClient()
client.rename_registered_model("<model-name>", "<new-model-name>")

登録済みモデルの名前を変更できるのは、バージョンがない場合、またはすべてのバージョンが [なし] または [アーカイブ済み] ステージにある場合のみです。

モデルを検索する

ワークスペースモデルレジストリ内のモデルは、UI または API を使用して検索できます。

モデルを検索すると、少なくとも CAN READ 権限を持つモデルのみが返されます。

UIを使用したモデルの検索

登録済みのモデルを表示するには、サイドバーの モデル アイコン [モデル ] をクリックします 。

特定のモデルを検索するには、検索ボックスにテキストを入力します。 モデルの名前または名前の一部を入力できます。

登録済みモデル検索

タグで検索することもできます。 タグを tags.<key>=<value>の形式で入力します。 複数のタグを検索するには、 AND 演算子を使用します。

タグベースの検索

MLflow 検索構文を使用して、モデル名とタグの両方で検索できます。例えば:

名前とタグベースの検索

APIを使用したモデルの検索

ワークスペースモデルレジストリで登録済みモデルを検索するには、MLflow クライアント API メソッド search_registered_models()

モデルにタグ を設定 している場合は、 search_registered_models()を使用してそれらのタグで検索することもできます。

print(f"Find registered models with a specific tag value")
for m in client.search_registered_models(f"tags.`<key-value>`='<tag-value>'"):
  pprint(dict(m), indent=4)

MLflow クライアント API search_model_versions() メソッドを使用して、特定のモデル名を検索し、そのバージョンの詳細を一覧表示することもできます。

from pprint import pprint

client=MlflowClient()
[pprint(mv) for mv in client.search_model_versions("name='<model-name>'")]

これは出力します:

{   'creation_timestamp': 1582671933246,
    'current_stage': 'Production',
    'description': 'A random forest model containing 100 decision trees '
                   'trained in scikit-learn',
    'last_updated_timestamp': 1582671960712,
    'name': 'sk-learn-random-forest-reg-model',
    'run_id': 'ae2cc01346de45f79a44a320aab1797b',
    'source': './mlruns/0/ae2cc01346de45f79a44a320aab1797b/artifacts/sklearn-model',
    'status': 'READY',
    'status_message': None,
    'user_id': None,
    'version': 1 }

{   'creation_timestamp': 1582671960628,
    'current_stage': 'None',
    'description': None,
    'last_updated_timestamp': 1582671960628,
    'name': 'sk-learn-random-forest-reg-model',
    'run_id': 'd994f18d09c64c148e62a785052e6723',
    'source': './mlruns/0/d994f18d09c64c148e62a785052e6723/artifacts/sklearn-model',
    'status': 'READY',
    'status_message': None,
    'user_id': None,
    'version': 2 }

モデルまたはモデル バージョンを削除する

UI または API を使用してモデルを削除できます。

UIを使用したモデルバージョンまたはモデルの削除

警告

この操作を元に戻すことはできません。 モデル バージョンは、レジストリから削除するのではなく、アーカイブ済みステージに移行できます。 モデルを削除すると、ワークスペースモデルレジストリに保存されているすべてのモデルアーティファクトと、登録されたモデルに関連付けられているすべてのメタデータが削除されます。

モデルとモデル バージョンを削除できるのは、[なし] または [アーカイブ済み] ステージのみです。 登録済みモデルにステージング ステージまたは実稼働ステージのバージョンがある場合は、モデルを削除する前に、それらを [なし] ステージまたは [アーカイブ済み] ステージに移行する必要があります。

モデルバージョンを削除するには:

  1. サイドバーの モデル アイコン [モデル ] をクリックします 。

  2. モデル名をクリックします。

  3. モデル バージョンをクリックします。

  4. 画面の右上隅にあるケバブメニュー ケバブメニュー をクリックし、ドロップダウンメニューから[ 削除 ]を選択します。

モデルを削除するには:

  1. サイドバーの モデル アイコン [モデル ] をクリックします 。

  2. モデル名をクリックします。

  3. 画面の右上隅にあるケバブメニュー ケバブメニュー をクリックし、ドロップダウンメニューから[ 削除 ]を選択します。

APIを使用したモデルバージョンまたはモデルの削除

警告

この操作を元に戻すことはできません。 モデル バージョンは、レジストリから削除するのではなく、アーカイブ済みステージに移行できます。 モデルを削除すると、ワークスペースモデルレジストリに保存されているすべてのモデルアーティファクトと、登録されたモデルに関連付けられているすべてのメタデータが削除されます。

モデルとモデル バージョンを削除できるのは、[なし] または [アーカイブ済み] ステージのみです。 登録済みモデルにステージング ステージまたは実稼働ステージのバージョンがある場合は、モデルを削除する前に、それらを [なし] ステージまたは [アーカイブ済み] ステージに移行する必要があります。

モデル バージョンを削除する

モデル バージョンを削除するには、MLflow クライアント API delete_model_version() メソッドを使用します。

# Delete versions 1,2, and 3 of the model
client = MlflowClient()
versions=[1, 2, 3]
for version in versions:
  client.delete_model_version(name="<model-name>", version=version)

モデルを削除する

モデルを削除するには、MLflow クライアント API delete_registered_model() メソッドを使用します。

client = MlflowClient()
client.delete_registered_model(name="<model-name>")

ワークスペース間でモデルを共有する

Databricks では、 Unity Catalogの モデルを使用して、ワークスペース間でモデルを共有することをお勧めします。Unity Catalog は、クロスワークスペース モデルのアクセス、ガバナンス、監査ログをすぐにサポートします。

ただし、ワークスペース モデルレジストリを使用する場合は、いくつかの設定を使用して 複数のワークスペース間でモデルを共有する こともできます。 たとえば、独自のワークスペースでモデルを開発してログに記録し、リモートのワークスペース モデルレジストリを使用して別のワークスペースからモデルにアクセスできます。 これは、複数のチームがモデルへのアクセスを共有する場合に便利です。 複数のワークスペースを作成し、これらの環境でモデルを使用および管理できます。

ワークスペース間で MLflow オブジェクトをコピーする

Databricks ワークスペースとの間で MLflow オブジェクトをインポートまたはエクスポートするには、コミュニティ主導の Open プロジェクト MLflow エクスポート/インポートを使用して、ワークスペース間で MLflow エクスペリメント、モデル、および実行を移行できます。

これらのツールを使用すると、次のことができます。

  • 同じトラッキング サーバーまたは別のトラッキング サーバー内の他のデータサイエンティストと共有および共同作業します。 たとえば、エクスペリメントを別のユーザーからワークスペースに複製できます。

  • あるワークスペースから別のワークスペース (開発ワークスペースから運用ワークスペースなど) にモデルをコピーします。

  • MLflow エクスペリメントをコピーし、ローカル追跡サーバーから Databricks ワークスペースに実行します。

  • ミッション クリティカルなエクスペリメントとモデルを別の Databricks ワークスペースにバックアップします。

この例では、Workspace モデルレジストリを使用して機械学習アプリケーションを構築する方法を示します。

ワークスペースモデルレジストリの例