Databricksワークスペース間における機械学習モデルの共有で紹介されている、ワークスペース間でのモデル共有の手順を実際にトライした内容となっています。
集中管理されるモデルレジストリ用のワークスペースを構築することで、開発ワークスペース、本格運用ワークスペースなどで機械学習モデルを共有することが可能となります。
本書では以下の2つのワークスペースを使用します。
- ローカルワークスペース: モデル開発を行うワークスペースとなります。
- URLは
https://local-tydb-test-environment.cloud.databricks.com/
であるとします。
- URLは
- モデルレジストリワークスペース: モデルを集中管理するためのワークスペースです。
- URLは
https://model-registry-tydb-test-environment.cloud.databricks.com/
であるとします。
- URLは
実際に運用を行う際には、これ以外にもテスト用のワークスペース、モデルを本格運用するためのワークスペースなどを要件に応じて構築することになります。
モデルレジストリワークスペースでアクセストークンを作成
API経由でワークスペースを操作するため、アクセスに必要となるパーソナルアクセストークンを作成します。
注意
パーソナルアクセストークンは厳重に管理してください。ノートブックに直接記述するのではなく、シークレットに保管することを強くお勧めします。
Settings > User Settings > Access Tokens > Generate New Tokenを選択し、トークン名、有効日数を指定してGenerateをクリックします。表示されるトークンをメモしておきます。
ローカルのワークスペースでパーソナルアクセストークンを作成
次のステップで必要となるので、上の手順に従いローカルワークスペースでもパーソナルアクセストークンを生成してメモしておきます。
ローカルのワークスペースでシークレットを作成
ここでは、Databricks CLI(コマンドラインインタフェース)を用いてシークレットを作成します。
CLIをインストールしていない場合には、ローカルマシンにインストールの上、トークンの設定を行なってください。ここでは、ローカルワークスペースのパーソナルアクセストークンが必要となります。
databricks configure --token
上記を実行すると、ホスト名とトークンを聞かれるのでホスト名にはhttps://local-tydb-test-environment.cloud.databricks.com/
、トークンはローカルワークスペースで生成したパーソナルアクセストークンを設定します。これによって、ローカルワークスペースにアクセスして各種操作を行えるようになります。
シークレットのスコープの定義
Databricksのシークレットは「スコープ」というある種のグループで管理します。ここではスコープ名はmodel-share
とします。
databricks secrets create-scope --scope model-share
シークレットの作成:リモートレジストリのホスト名
以降の3つの設定では、ワークスペースを識別できるようにスコープ名にプレフィクスを追加します。ここでは、モデルレジストリワークスペースに対するプレフィクスをremote-registry
とします。複数のワークスペースを取り扱う際には、一意となるプレフィクスを適宜つけてください。
databricks secrets put --scope model-share --key remote-registry-host
上を実行するとエディタが開きますので、今回の例ではhttps://model-registry-tydb-test-environment.cloud.databricks.com/
を入力して保存・終了します。
シークレットの作成:リモートレジストリのトークン
databricks secrets put --scope model-share --key remote-registry-token
上を実行するとエディタが開きますので、モデルレジストリワークスペースでアクセストークンを作成で作成したパーソナルアクセストークンを入力して保存・終了します。
シークレットの作成:リモートレジストリのワークスペースID
databricks secrets put --scope model-share --key remote-registry-workspace-id
ワークスペースIDは、こちらで説明されているようにブラウザから対象のワークスペースにアクセスした際にURLに含まれています。https://<databricksワークスペースのホスト名>/?o=6280049833385130
となっている場合、ワークスペースIDはo=
以降の6280049833385130
となります。
上を実行するとエディタが開きますので、モデルレジストリワークスペースのワークスペースIDを入力して保存・終了します。
サンプルノートブック
- 上のノートブックをローカルワークスペースにインポートします。
- MLランタイムが動作するクラスターにノートブックをアタッチします。
- ノートブック上部にウィジェットが表示されているので、1_registry_secret_scopeには、シークレットのスコープ名
model-share
、2_registry_secret_key_prefix
には、モデルレジストリワークスペースのプレフィクスremote-registry
を入力し、以降のセルを実行していきます。
これだけで、ワークスペース間での機械学習モデルの共有が可能となります。