メインコンテンツへスキップ
W&B Server にすでに保存されている artifact をダウンロードして使用するか、必要に応じて重複排除のために artifact object を作成して渡します。
閲覧専用 seat のチームメンバーは Artifacts をダウンロードできません。

W&B に保存されている artifact をダウンロードして使用する

W&B Run の実行中でも実行外でも、W&B に保存されている artifact をダウンロードして使用できます。W&B にすでに保存されているデータをエクスポート (または更新) するには、Public API (wandb.Api) を使用します。
まず、W&B Python SDK を import します。次に、W&B Run を作成します。
import wandb

with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 次の step を参照
wandb.Run.use_artifact() method を使用して、使いたい artifact を指定します。この method は run オブジェクトを返します。次の code snippet では、'latest' alias が付いた 'bike-dataset' という artifact を指定しています。
# 使用する artifact を指定します。形式は "name:alias" です
artifact = run.use_artifact("bike-dataset:latest")
返された object を使って、artifact の内容全体をダウンロードします。
# artifact 全体をダウンロードします
datadir = artifact.download()
必要に応じて、root パラメーターにパスを渡して、artifact の内容を特定のディレクトリにダウンロードすることもできます。wandb.Artifact.get_entry() method を使用すると、ファイルの一部だけをダウンロードできます。
# 特定のファイルをダウンロードします
entry = artifact.get_entry(name)
以上をまとめると、完全なコード例は次のようになります。
import wandb    

with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 使用する artifact を指定します。形式は "name:alias" です
    artifact = run.use_artifact("bike-dataset:latest")

    # artifact 全体をダウンロードします
    datadir = artifact.download()

    # 特定のファイルをダウンロードします
    entry = artifact.get_entry("bike.png")
これにより、パス name にあるファイルだけを取得します。返されるのは Entry オブジェクトで、次の methods があります。
  • Entry.download: パス name にあるファイルを artifact からダウンロードします
  • Entry.ref: add_reference によってそのエントリが参照として保存されている場合は、URI を返します

artifact を部分的にダウンロードする

プレフィックスを指定して、artifact の一部だけを必要に応じてダウンロードできます。単一のファイルまたはサブフォルダーの内容をダウンロードするには、path_prefix= (wandb.Artifact.download(path_prefix=)) パラメーターを使用します。
with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 使用するartifactを指定します。フォーマット: "name:alias"
    artifact = run.use_artifact("bike-dataset:latest")

    # 特定のファイルまたはサブフォルダをダウンロードする
    artifact.download(path_prefix="bike.png") # bike.png のみをダウンロード
また、特定のディレクトリからファイルをダウンロードすることもできます。その場合は、path_prefix= パラメーターにディレクトリを指定します。前のコードスニペットに続けて、次のように記述します。
# images/bikes ディレクトリ内のファイルをダウンロードする
artifact.download(path_prefix="images/bikes/") 

別のプロジェクトのartifactを使用する

artifactを参照するには、そのartifactの名をプロジェクト名とあわせて指定します。artifactの名にentity名も指定すると、entityをまたいでartifactを参照することもできます。 以下のコード例は、現在のW&B runへの入力として別のプロジェクトのartifactをクエリする方法を示しています。
with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 別のプロジェクトのartifactをW&Bでクエリし、このrunへの
    # 入力としてマークする。
    artifact = run.use_artifact("my-project/artifact:alias")

    # 別のentityのartifactを使用して、このrunへの入力としてマークする。
    artifact = run.use_artifact("my-entity/my-project/artifact:alias")

artifact を作成して同時に使用する

artifact を作成すると同時に使用できます。artifact オブジェクトを作成し、use_artifact に渡します。これにより、まだ存在していない場合は W&B に artifact が作成されます。wandb.Run.use_artifact() API は冪等であるため、何度呼び出しても問題ありません。
import wandb

with wandb.init(project="<example>", job_type="<job-type>") as run:
    artifact = wandb.Artifact("reference model")
    artifact.add_file("model.h5")
    run.use_artifact(artifact)
artifact の作成について詳しくは、artifact を作成するを参照してください。