すでに W&B Server に保存されているアーティファクトをダウンロードして使用するか、アーティファクトオブジェクトを作成して渡し、必要に応じて重複排除を行います。
View-Only シートが割り当てられているチームメンバーは、アーティファクトをダウンロードできません。
W&B に保存されているアーティファクトをダウンロードして使用する
W&B に保存されているアーティファクトは、W&B Run の内外を問わずダウンロードして使用できます。W&B にすでに保存されている内容をエクスポートしたり、データを更新したりするには、Public API (wandb.Api) を使用します。
During a run
Outside of a run
W&B CLI
まず、W&B Python SDK を import します。次に、W&B Run を作成します。import wandb
with wandb.init(project="<example>", job_type="<job-type>") as run:
# 次のステップを参照
wandb.Run.use_artifact() メソッドを使用して、使用するアーティファクトを指定します。このメソッドは run object を返します。次の code snippet では、'bike-dataset' というアーティファクトに 'latest' という alias を指定しています。# 使用する artifact を指定します。形式は "name:alias" です
artifact = run.use_artifact("bike-dataset:latest")
返された object を使用して、アーティファクトの内容全体をダウンロードします。# artifact 全体をダウンロード
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:
# 使用する artifact を指定します。形式は "name:alias" です
artifact = run.use_artifact("bike-dataset:latest")
# artifact 全体をダウンロード
datadir = artifact.download()
# 特定のファイルをダウンロード
entry = artifact.get_entry("bike.png")
これは、パス name にあるファイルだけを取得します。返される Entry object には、次のメソッドがあります。
Entry.download: パス name にあるアーティファクトからファイルをダウンロードします
Entry.ref: add_reference によってエントリが参照として保存されている場合、URI を返します
まず、W&B SDK を import します。次に、Public API Class からアーティファクト object を作成します。そのアーティファクトに関連付けられている entity、project、アーティファクト、alias を指定します。import wandb
api = wandb.Api()
artifact = api.artifact("entity/project/artifact:alias")
返された object を使用して、アーティファクトの内容をダウンロードします。必要に応じて、root パラメーターにパスを渡すことで、アーティファクトの内容を特定のディレクトリにダウンロードできます。詳細は、Python SDK Reference Guide を参照してください。 W&B Server からアーティファクトをダウンロードするには、wandb artifact get コマンドを使用します。$ 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:
# 使用する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/")
別の project のアーティファクトを使用する
アーティファクトを参照するには、アーティファクトの名とその project 名を指定します。entity 名を指定すると、Entities をまたいでアーティファクトを参照することもできます。
次のコード例は、現在の W&B run への入力として、別の project のアーティファクトをクエリする方法を示しています。
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")
アーティファクト を同時に作成して使用できます。アーティファクト オブジェクトを作成し、それを 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)
アーティファクトの作成について詳しくは、アーティファクトを作成するを参照してください。