レジストリにアーティファクトバージョンをリンクする

リンクアーティファクトのバージョンをコレクションに追加して、組織内の他のメンバーがアクセスできるようにします。

アーティファクトをレジストリにリンクすると、そのアーティファクトがそのレジストリに「公開」されます。 レジストリにアクセスできるユーザーは、コレクション内のリンクされたアーティファクトのバージョンにアクセスできます。

言い換えれば、アーティファクトをレジストリコレクションにリンクすることによって、アーティファクトのバージョンはプライベートなプロジェクトレベルのスコープから、共有される組織レベルのスコープになります。

アーティファクトをコレクションにリンクする

アーティファクトバージョンをインタラクティブまたはプログラム的にコレクションにリンクします。

ユースケースに基づいて、以下のタブで説明されている手順に従ってアーティファクトバージョンをリンクしてください。

プログラム的にアーティファクトバージョンをコレクションにリンクするには、wandb.init.Run.link_artifact()を使用します。

target_path パラメータを使用して、リンクするアーティファクトバージョンのコレクションとレジストリを指定します。ターゲットパスは、プレフィックス “wandb-registry”、レジストリの名前、コレクション名がフォワードスラッシュで区切られています。

wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}

以下のコードスニペットをコピーして貼り付け、既存のレジストリ内のコレクションにアーティファクトバージョンをリンクしてください。<>で囲まれた値を自分の値に置き換えてください。

import wandb

# run を初期化
run = wandb.init(
  entity = "<チームエンティティ>",
  project = "<プロジェクト名>"
)

# アーティファクトオブジェクトの作成
# type パラメータは、アーティファクトオブジェクトとコレクションタイプの両方のタイプを指定します
artifact = wandb.Artifact(name = "<名前>", type = "<type>")

# アーティファクトオブジェクトにファイルを追加
# ファイルのパスをローカルマシンで指定します
artifact.add_file(local_path = "<アーティファクトのローカルパス>")

# アーティファクトをリンクするコレクションとレジストリを指定
REGISTRY_NAME = "<registry_name>"  
COLLECTION_NAME = "<collection_name>"
target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"

# アーティファクトをコレクションにリンク
run.link_artifact(artifact = artifact, target_path = target_path)
  1. Registry App に移動します。
  2. アーティファクトバージョンをリンクするコレクションの名前の隣にマウスをホバーさせます。
  3. 詳細を表示の隣にあるミートボールメニューアイコン(三つの横に並んだ点)を選択します。
  4. ドロップダウンから、新しいバージョンをリンクを選択します。
  5. サイドバーから、Team ドロップダウンからチームの名前を選択します。
  6. Project ドロップダウンからアーティファクトを含むプロジェクトの名前を選択します。
  7. Artifact ドロップダウンからアーティファクトの名前を選択します。
  8. Version ドロップダウンからコレクションにリンクしたいアーティファクトのバージョンを選択します。
  1. プロジェクトのアーティファクトブラウザに移動します。URLは: https://wandb.ai/<entity>/<project>/artifacts
  2. 左サイドバーでアーティファクトアイコンを選択します。
  3. レジストリにリンクしたいアーティファクトバージョンをクリックします。
  4. バージョン概要セクション内で、Link to registryボタンをクリックします。
  5. 画面右側に表示されるモーダルで、Select a registered model メニューのドロップダウンからアーティファクトを選択します。
  6. 次のステップ をクリックします。
  7. (任意) Aliases ドロップダウンから別名を選択します。
  8. Link to registry をクリックします。

リンクされたアーティファクトのメタデータ、バージョンデータ、使用状況、リネージ情報などをRegistry Appで表示します。

リンクされたアーティファクトをレジストリで表示する

Registry Appでメタデータ、リネージ、使用状況情報などのリンクされたアーティファクト情報を表示します。

  1. Registry App に移動します。
  2. アーティファクトをリンクしたレジストリの名前を選択します。
  3. コレクションの名前を選択します。
  4. コレクションのアーティファクトがメトリクスをログしている場合、メトリクスを表示をクリックしてバージョンを比較します。
  5. アーティファクトバージョンのリストから、アクセスしたいバージョンを選択します。バージョン番号は v0 から始まる増分で各リンクされたアーティファクトバージョンに割り当てられます。
  6. アーティファクトバージョンの詳細を表示するには、そのバージョンをクリックします。このページのタブから、そのバージョンのメタデータ(ログされたメトリクスを含む)、リネージ、使用状況情報を表示できます。

バージョンタブ 内の フルネーム フィールドに注意してください。リンクされたアーティファクトのフルネームは、レジストリ、コレクション名、アーティファクトのバージョンのエイリアスまたはインデックスから構成されています。

wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{INTEGER}

プログラム的にアーティファクトバージョンにアクセスするには、リンクされたアーティファクトのフルネームが必要です。

トラブルシューティング

アーティファクトをリンクできない場合は、次のような一般的なチェックを確認してください。

個人アカウントからアーティファクトをログする

個人エンティティを使用してW&Bにログされたアーティファクトはレジストリにリンクすることができません。 アーティファクトを組織内のチームエンティティを使用してログに記録していることを確認してください。 組織のチーム内でログに記録されたアーティファクトのみが組織のレジストリにリンクされることができます。

あなたのチームエンティティを見つける

W&B はあなたのチームの名前をチームのエンティティとして使用します。 例えば、あなたのチームが team-awesome と呼ばれている場合、あなたのチームエンティティは team-awesome です。

あなたのチームの名前を確認するには:

  1. あなたのチームの W&B プロファイルページに移動します。
  2. サイトの URL をコピーします。それはhttps://wandb.ai/<team>の形式です。ここで <team> はあなたのチームの名前とチームのエンティティの両方です。

チームエンティティからログする

  1. wandb.init()を使用して run を初期化するときに、エンティティとしてチームを指定します。もし run を初期化するときに entity を指定しなかった場合、run はあなたのデフォルトエンティティを使用しますが、それがチームエンティティであるとは限りません。
import wandb   

run = wandb.init(
  entity='<team_entity>', 
  project='<project_name>'
  )
  1. run にアーティファクトをログするには、run.log_artifact を使用するか、Artifact オブジェクトを作成してからファイルを追加します:

    artifact = wandb.Artifact(name="<artifact_name>", type="<type>")
    

    アーティファクトのログ方法についての詳細は、アーティファクトを構成するを参照してください。

  2. 個人エンティティにログされたアーティファクトがある場合、それを組織内のエンティティに再ログする必要があります。

W&B App UIでレジストリのパスを確認する

UIを使用してレジストリのパスを確認する方法は2つあります: 空のコレクションを作成してコレクションの詳細を表示するか、コレクションのホームページで自動生成されたコードをコピー&ペーストすることです。

自動生成されたコードをコピーして貼り付ける

  1. Registry app に移動します: https://wandb.ai/registry/.
  2. アーティファクトをリンクしたいレジストリをクリックします。
  3. ページの上部に自動生成されたコードブロックが表示されます。
  4. これをコピーしてコードに貼り付け、パスの最後の部分をコレクションの名前に置き換えてください。

空のコレクションを作成する

  1. Registry app に移動します: https://wandb.ai/registry/.
  2. アーティファクトをリンクしたいレジストリをクリックします。
  3. 空のコレクションをクリックします。 空のコレクションが存在しない場合は、新しいコレクションを作成します。
  4. 表示されるコードスニペット内で、.link_artifact() 内の target_path フィールドを識別します。
  5. (任意) コレクションを削除します。

例えば、上記の手順を完了した後、target_pathパラメータを持つコードブロックを見つけます:

target_path = 
      "smle-registries-bug-bash/wandb-registry-Golden Datasets/raw_images"

これを構成要素に分解すると、プログラム的にアーティファクトをリンクするために必要なパスを作成するために必要なものが見えます:

ORG_ENTITY_NAME = "smle-registries-bug-bash"
REGISTRY_NAME = "Golden Datasets"
COLLECTION_NAME = "raw_images"