メインコンテンツへスキップ
既に W&B サーバーに保存されているアーティファクトをダウンロードするか、重複排除を行うためにアーティファクトオブジェクトを構築して渡します。
閲覧専用シートを持つチームメンバーは、アーティファクトをダウンロードできません。

W&B に保存されたアーティファクトのダウンロードと利用

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

with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 次のステップを参照
使用したいアーティファクトを wandb.Run.use_artifact() メソッドで指定します。これは run オブジェクトを返します。次のコードスニペットでは、'bike-dataset' というアーティファクトをエイリアス 'latest' 付きで指定しています:
# 使用するアーティファクトを指定します。形式は "name:alias"
artifact = run.use_artifact("bike-dataset:latest")
返されたオブジェクトを使って、アーティファクトの内容をすべてダウンロードします:
# アーティファクト全体をダウンロード
datadir = artifact.download()
root パラメータにパスを渡すことで、アーティファクトの内容を特定のディレクトリにダウンロードすることもできます。wandb.Artifact.get_entry() メソッドを使用して、ファイルの一部だけをダウンロードできます:
# 特定のファイルをダウンロード
entry = artifact.get_entry(name)
これらを組み合わせると、全体のコード例は次のようになります:
import wandb    

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

    # アーティファクト全体をダウンロード
    datadir = artifact.download()

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

アーティファクトを部分的にダウンロードする

プレフィックスに基づいて、アーティファクトの一部だけを必要に応じてダウンロードできます。path_prefix=wandb.Artifact.download(path_prefix=))パラメータを使用して、単一ファイルまたはサブフォルダ配下の内容をダウンロードします。
with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 使用するアーティファクトを指定します。形式は "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/") 

別のプロジェクトのアーティファクトを使用する

アーティファクトを参照するには、そのアーティファクト名とプロジェクト名を指定します。Entities 間でアーティファクトを参照する場合は、アーティファクト名に加えて entity 名を指定します。 次のコード例は、別のプロジェクトのアーティファクトを現在の W&B run の入力として取得する方法を示しています。
with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 別のプロジェクトのアーティファクトをW&Bに照会し、
    # このrunへの入力としてマークする。
    artifact = run.use_artifact("my-project/artifact:alias")

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

アーティファクトを同時に作成して使用する

アーティファクトを同時に作成して使用します。アーティファクトオブジェクトを作成し、それを use_artifact に渡します。これにより、まだ存在しない場合は W&B 上にアーティファクトが作成されます。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)
アーティファクトの構築方法について詳しくは、アーティファクトの構築を参照してください。