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

runのコンテキスト内でアーティファクトバージョンをリンクする

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

entity = "<team_entity>"          # チームエンティティ
project = "<project_name>"        # アーティファクトを含むプロジェクトの名前

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

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

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

  # アーティファクトのリンク先となるコレクションとレジストリを指定する
  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)

runのコンテキスト外でアーティファクトバージョンをリンクする

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

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

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

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

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

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

W&B Registry 内で、リンクされたアーティファクトのメタデータ、系譜情報、利用状況などの情報を表示します。
  1. W&B Registry にアクセスします。
  2. アーティファクトをリンクしたレジストリの名前を選択します。
  3. コレクション名を選択します。
  4. コレクションのアーティファクトがメトリクスをログしている場合、Show metrics をクリックしてバージョン間でメトリクスを比較します。
  5. アーティファクトバージョンの一覧から、表示したいバージョンを選択します。バージョン番号は、v0 から始まり、リンクされたアーティファクトの各バージョンに対して連番で割り当てられます。
  6. アーティファクトバージョンの詳細を表示するには、そのバージョンをクリックします。このページのタブから、そのバージョンのメタデータ(ログされたメトリクスを含む)、系譜情報、および利用状況を表示できます。
Version タブ内の Full Name フィールドを確認します。リンクされたアーティファクトのフルネームは、レジストリ、コレクション名、およびアーティファクトバージョンのエイリアスまたはインデックスで構成されます。
Full name of a linked artifact
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   
    
    with wandb.init(entity='<team_entity>', project='<project_name>') as run:
        # Log your artifact here
    
  2. wandb.Run.log_artifact() を使用するか、Artifact オブジェクトを作成してファイルを追加することで、run にアーティファクトをログします:
    artifact = wandb.Artifact(name="<artifact_name>", type="<type>")
    
    アーティファクトのログの詳細については、Construct artifacts を参照してください。
  3. アーティファクトがあなた個人のエンティティにログされている場合は、組織内のエンティティに対して再度ログする必要があります。

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

UI を使ってレジストリのパスを確認する方法は 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"
一時コレクションの名前を、アーティファクトをリンクしたいコレクションの名前に必ず置き換えてください。