アーティファクトをダウンロードして使用する

複数の Projects から Artifacts をダウンロードして使用する。

すでに W&B サーバーに保存されているアーティファクトをダウンロードして使用するか、アーティファクト オブジェクトを構築して、必要に応じて重複排除のためにそれを渡します。

W&B に保存されているアーティファクトをダウンロードして使用する

W&B に保存されているアーティファクトを W&B Run の内外でダウンロードして使用します。Public API(wandb.Api)を使用して、W&B にすでに保存されているデータをエクスポート(または更新)します。詳細については、W&B Public API Reference guide を参照してください。

まず、W&B Python SDK をインポートします。次に、W&B Run を作成します。

import wandb

run = wandb.init(project="<example>", job_type="<job-type>")

使用したいアーティファクトを use_artifact メソッドで指定します。これにより run オブジェクトが返されます。次のコードスニペットでは、'bike-dataset' というアーティファクトを 'latest' というエイリアスで指定しています。

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 クラスからアーティファクトを作成します。エンティティ、プロジェクト、アーティファクト、およびエイリアスをそのアーティファクトに関連付けます。

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 を参照してください。