Download and use artifacts
W&B サーバーに既に保存されているアーティファクトをダウンロードして使用するか、アーティファクトオブジェクトを作成して必要に応じて重複排除のために渡してください。
閲覧専用のシートを持っているチームメンバーはアーティファクトをダウンロードできません。
W&B に保存されているアーティファクトをダウンロードして使用する
W&B に保存されているアーティファクトを W&B Run の内外で使用してダウンロードします。Public API (wandb.Api
) を使って、既に W&B に保存されているデータのエクスポート (または更新) を行います。詳細については、W&B Public API Reference guide を参照してください。
- During a run
- Outside of a run
- W&B CLI
まず、W&B Python SDK をインポートします。次に、W&B Run を作成します。
import wandb
run = wandb.init(project="<example>", job_type="<job-type>")
use_artifact
メソッドを使って使用したいアーティファクトを指定します。これにより、run オブジェクトが返されます。以下のコードスニペットでは、latest
というエイリアスを持つ 'bike-dataset'
というアーティファクトを指定しています。
artifact = run.use_artifact("bike-dataset:latest")
返されるオブジェクトを使って、アーティファクトのすべての内容をダウンロードします。
datadir = artifact.download()
オプションで、root パラメータにパスを渡して、アーティファクトの内容を特定のディレクトリーにダウンロードすることもできます。詳細については、Python SDK Reference Guide を参照してください。
get_path
メソッドを使って、一部のファイルのみをダウンロードすることもできます。
path = artifact.get_path(name)
これは、name
というパスにあるファイルのみを取得します。次のメソッドを持つ Entry
オブジェクトを返します。
Entry.download
: パスname
にあるアーティファクトからファイルをダウンロードするEntry.ref
:add_reference
がエントリを参照として保存した場合、その URI を返す
W&B が処理方法を知っているスキームを持つ参照は、アーティファクトファイルと同じようにダウンロードされます。詳細については、Track external files を参照してください。
まず、W&B SDK をインポートします。次に、Public API クラスからアーティファクトを作成します。そのアーティファクトに関連づけられた entity、project、artifact、および alias を提供してください。
import wandb
api = wandb.Api()
artifact = api.artifact("entity/project/artifact:alias")
返されるオブジェクトを使用して、アーティファクトの内容をダウンロードします。
artifact.download()
オプションで、root パラメータにパスを渡して、アーティファクトの内容を特定のディレクトリーにダウンロードすることもできます。詳細については、API Reference Guide を参照してください。
wandb artifact get
コマンドを使用して、W&B サーバーからアーティファクトをダウンロードします。
$ wandb artifact get project/artifact:alias --root mnist/
アーティファクトを部分的にダウンロードする
path_prefix パラメータを使用して、プレフィックスに基づいてアーティファクトの一部をダウンロードすることができます。単一のファイルやサブフォルダーの内容をダウンロードできます。
artifact = run.use_artifact("bike-dataset:latest")
artifact.download(path_prefix="bike.png") # bike.png のみをダウンロードする
別の方法として、特定のディレクトリーからファイルをダウンロードすることもできます。
artifact.download(path_prefix="images/bikes/") # images/bikes ディレクトリー内のファイルをダウンロードする
別のプロジェクトからアーティファクトを使用する
アーティファクトの名前とプロジェクト名を指定して参照します。エンティティ名と共にアーティファクトの名前を指定して、他のエンティティのアーティファクトを参照することもできます。
以下のコード例は、他のプロジェクトからアーティファクトをクエリし、現在の W&B run の入力として使用する方法を示しています。
import wandb
run = wandb.init(project="<example>", job_type="<job-type>")
# 他のプロジェクトからアーティファクトを 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 にアーティファクトがまだ存在しない場合には作成されます。use_artifact
API は冪等であるため、必要なだけ何度でも呼び出すことができます。
import wandb
artifact = wandb.Artifact("reference model")
artifact.add_file("model.h5")
run.use_artifact(artifact)
アーティファクトの作成について詳しくは、Construct an artifact を参照してください。