メインコンテンツへスキップ
アーティファクトバージョンを組織で利用できるようにするには、W&B Registry の コレクションリンク します。リンクすると、そのバージョンは プロジェクトレベルのプライベートなスコープから、組織レベルの共有スコープへ 移動します。アーティファクトバージョンは、W&B Python SDK を使ってプログラムから、または W&B App でインタラクティブに リンクできます。 アーティファクトをリンクすると、W&B はソースアーティファクトとコレクションのエントリの間に参照を作成します。リンクされたバージョンは、プロジェクト内の run にログされたソースアーティファクトバージョンを参照します。コレクション内のリンクされたバージョンと、それがログされたプロジェクト内のソースバージョンの両方を表示できます。 ユースケースに応じて、artifact バージョンをリンクするには、以下のタブに記載されている手順に従ってください。
始める前に、次の点を確認してください。
  • コレクションで許可されている artifact のタイプ。コレクションのタイプの詳細については、コレクションを作成する内の「コレクションのタイプ」を参照してください。
  • コレクションが属するレジストリがすでに存在していること。レジストリが存在することを確認するには、Registry App にアクセスして検索し、そのレジストリの名を確認してください。
wandb.Run.link_artifact() または wandb.Artifact.link() を使用して、artifact バージョンをプログラムから collection にリンクできます。
wandb.Run.link_artifact() を使用して、run のコンテキスト内でアーティファクト バージョンをリンクします。wandb.Artifact.link() を使用して、run のコンテキスト外で既存のアーティファクト バージョン をリンクします。
どちらの方法でも、アーティファクトの名前 (wandb.Artifact(name="<name>")、アーティファクトのタイプ (wandb.Artifact(type="<type>")、およびアーティファクトバージョンのリンク先となるコレクションとRegistryの target_path (wandb.Artifact(target_path="<target_path>")`) を指定してください。ターゲットパスは、プレフィックス "wandb-registry"、レジストリ名、コレクション名をスラッシュ (/) で区切った形式で構成されます:
wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}

runのコンテキスト内でartifactバージョンをリンクする

wandb.Run.link_artifact() を使用して、runのコンテキスト内でartifactバージョンをcollectionにリンクします。まず wandb.init() でrunを初期化し、次にartifactオブジェクトを作成してファイルを追加します。最後に、wandb.Run.link_artifact() methodを使用して、artifactバージョンをcollectionにリンクします。この方法を使用すると、W&B プロジェクトにrunが作成されます。アーティファクトのバージョンはコレクションにリンクされ、そのrunに関連付けられます。以下のコードスニペットをコピー&ペーストしてください。<> で囲まれた値はご自身の値に置き換えてください。
import wandb

entity = "<team_entity>"          # チーム entity
project = "<project_name>"        # artifact が含まれるプロジェクト名

# run を初期化する
with wandb.init(entity = entity, project = project) as run:

  # artifact オブジェクトを作成する
  # type パラメーターは artifact オブジェクトのタイプと
  # collection のタイプの両方を指定する
  artifact = wandb.Artifact(name = "<name>", type = "<type>")

  # artifact オブジェクトにファイルを追加する。
  # ローカルマシン上のファイルパスを指定する。
  artifact.add_file(local_path = "<local_path_to_artifact>")

  # artifact のリンク先となる collection と Registry を指定する
  REGISTRY_NAME = "<registry_name>"  
  COLLECTION_NAME = "<collection_name>"
  target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"

  # artifact を collection にリンクする
  run.link_artifact(artifact = artifact, target_path = target_path)

runのコンテキスト外でartifactバージョンをリンクする

wandb.Artifact.link() を使用すると、runのコンテキスト外で既存のartifactバージョンをリンクできます。この方法では、 wandb.init() でrunを初期化する必要がありません。つまり、W&Bプロジェクトにrunは作成されません。言い換えると、 artifactバージョンはrunに関連付けられることなく、collectionにリンクされます。まず、artifactオブジェクトを作成してファイルを追加します。次に、wandb.Artifact.link() methodを使用して、artifactのバージョンをcollectionにリンクします。以下のコードスニペットをコピー&ペーストしてください。<> で囲まれた値はご自身の値に置き換えてください。
import wandb

# artifactオブジェクトを作成する
# typeパラメーターはartifactオブジェクトのタイプと
# collectionのタイプの両方を指定する
artifact = wandb.Artifact(name = "<name>", type = "<type>")

# artifactオブジェクトにファイルを追加する
# ローカルマシン上のファイルへのパスを指定する
artifact.add_file(local_path = "<local_path_to_artifact>")

# artifactのリンク先となるcollectionとRegistryを指定する
REGISTRY_NAME = "<registry_name>"  
COLLECTION_NAME = "<collection_name>"
target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"

# artifactをcollectionにリンクする
artifact.link(target_path = target_path)
Registry App では、リンクされたアーティファクトのメタデータ、バージョンデータ、使用状況、リネージ情報 などを確認できます。

Registry 内のリンクされた artifact を表示する

W&B Registry で、メタデータ、リネージ、利用状況情報など、リンクされた artifact に関する情報を表示します。
  1. W&B Registry にアクセスします。
  2. artifact をリンクした registry の名を選択します。
  3. collection の名を選択します。
  4. collection の artifact がメトリクスをログしている場合は、Show metrics をクリックして、バージョン間でメトリクスを比較します。
  5. artifact バージョンの一覧から、アクセスしたいバージョンを選択します。バージョン番号は v0 から始まり、リンクされた各 artifact バージョンに段階的に割り当てられます。
  6. artifact バージョンの詳細を表示するには、そのバージョンをクリックします。このページのタブから、そのバージョンのメタデータ (ログされたメトリクスを含む) 、リネージ、利用状況情報を表示できます。
Version タブ内の Full Name フィールドに注目してください。リンクされた artifact の完全名は、registry、collection 名、および artifact バージョンの alias またはインデックスで構成されます。
Full name of a linked artifact
wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{INTEGER}
artifact のバージョンにプログラムからアクセスするには、リンクされた artifact のフルネームが必要です。

トラブルシューティング

artifact をリンクできない場合は、以下の一般的な確認項目を再度確認してください。

個人アカウントから Artifacts をログする

個人の entity で W&B にログされた Artifacts は、レジストリにリンクできません。Artifacts は、組織内のチーム entity を使用してログしてください。組織のレジストリにリンクできるのは、組織内のチームでログされた Artifacts のみです。
artifact をレジストリにリンクする場合は、チーム entity でその artifact をログしてください。

チーム entity を確認する

W&B では、チーム名がそのチームの entity として使用されます。たとえば、チーム名が team-awesome の場合、チーム entity は team-awesome です。 次の手順でチーム名を確認できます。
  1. チームの W&B プロフィールページにアクセスします。
  2. サイトの URL をコピーします。形式は https://wandb.ai/<team> です。ここで <team> はチーム名であり、同時にチームの entity でもあります。

チーム entity でログする

  1. wandb.init() で run を初期化するときに、entity としてチームを指定します。run の初期化時に entity を指定しない場合、run にはデフォルトの entity が使用されます。これはチーム entity の場合もあれば、そうでない場合もあります。
    import wandb   
    
    with wandb.init(entity='<team_entity>', project='<project_name>') as run:
        # ここでartifactをログします
    
  2. wandb.Run.log_artifact() を使用するか、Artifact object を作成してから次のようにファイルを追加して、artifact を run にログします。
    artifact = wandb.Artifact(name="<artifact_name>", type="<type>")
    
    artifact をログする方法については、artifact を構築するを参照してください。
  3. artifact が個人の entity にログされている場合は、組織内の entity に再度ログする必要があります。

W&B App UIでRegistryのパスを確認する

UIでRegistryのパスを確認するには、2つの方法があります。空のコレクションを作成してその詳細を表示するか、コレクションのホームページにある自動生成コードをコピー&ペーストします。

自動生成されたコードをコピー&ペースト

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

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

  1. https://wandb.ai/registry/ の W&B 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"
一時コレクションの名を、アーティファクト をリンクする先のコレクションの名に置き換えてください。