既に W&B サーバーに保存されているアーティファクトをダウンロードするか、重複排除を行うためにアーティファクトオブジェクトを構築して渡します。
閲覧専用シートを持つチームメンバーは、アーティファクトをダウンロードできません。
W&B に保存されたアーティファクトのダウンロードと利用
W&B に保存されたアーティファクトは、W&B の run の実行中でも実行外でもダウンロードして利用できます。Public API(wandb.Api)を使用して、すでに W&B に保存されているデータをエクスポート(または更新)できます。
During a run
Outside of a run
W&B CLI
まず、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 を返します
まず、W&B SDK をインポートします。次に、Public API クラスからアーティファクトオブジェクトを作成します。そのアーティファクトに関連付けられている entity、project、artifact、alias を指定します:import wandb
api = wandb.Api()
artifact = api.artifact("entity/project/artifact:alias")
返されたオブジェクトを使って、アーティファクトの内容をダウンロードします:root パラメータにパスを渡すことで、アーティファクトの内容を特定のディレクトリにダウンロードすることもできます。詳細については、Python SDK リファレンスガイドを参照してください。 wandb artifact get コマンドを使用して、W&B サーバーからアーティファクトをダウンロードします。$ wandb artifact get project/artifact:alias --root mnist/
プレフィックスに基づいて、アーティファクトの一部だけを必要に応じてダウンロードできます。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)
アーティファクトの構築方法について詳しくは、アーティファクトの構築を参照してください。