メインコンテンツへスキップ
W&B サーバーにすでに保存されている Artifacts をダウンロードして使用するか、必要に応じて Artifact オブジェクトを作成し、重複排除のためにそれを渡します。
閲覧専用シートの チームメンバー は Artifacts をダウンロードできません。

W&B に保存されている Artifacts のダウンロードと使用

W&B Run の内部または外部のどちらからでも、W&B に保存されている Artifacts をダウンロードして使用できます。W&B にすでに保存されているデータをエクスポート(または更新)するには、Public API (wandb.Api) を使用します。
まず、W&B Python SDK をインポートします。次に、W&B Run を作成します。
import wandb

with wandb.init(project="<example>", job_type="<job-type>") as run:
    # 次のステップを参照
wandb.Run.use_artifact() メソッドを使用して、使用したい Artifact を指定します。これにより Run オブジェクトが返されます。以下のコードスニペットでは、'bike-dataset' という名前で エイリアス が 'latest' の Artifact を指定しています。
# 使用する Artifact を指定します。形式は "name:alias" です。
artifact = run.use_artifact("bike-dataset:latest")
返されたオブジェクトを使用して、Artifact の全コンテンツをダウンロードします。
# Artifact 全体をダウンロードします
datadir = artifact.download()
オプションで root パラメータにパスを渡すことで、Artifact のコンテンツを特定の ディレクトリー にダウンロードできます。ファイルの サブセット のみをダウンロードするには、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 オブジェクトを返します。
  • Entry.download: パス name にある Artifact からファイルをダウンロードします。
  • Entry.ref: add_reference がエントリをリファレンスとして保存していた場合、その URI を返します。

Artifact の部分的なダウンロード

プレフィックスに基づいて Artifact の一部をオプションでダウンロードできます。単一のファイルやサブフォルダの内容をダウンロードするには、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 の Artifact を使用する

Artifact を参照するには、Artifact の名前とその プロジェクト 名を一緒に指定します。また、Entity 名と一緒に Artifact 名を指定することで、Entities を跨いで Artifacts を参照することもできます。 以下のコード例は、現在の W&B Run の入力として、別の プロジェクト から Artifact をクエリする方法を示しています。
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")

Artifact の構築と使用を同時に行う

Artifact の構築と使用を同時に行います。Artifact オブジェクトを作成し、それを use_artifact に渡します。これにより、W&B にまだ存在しない場合は Artifact が作成されます。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)
Artifact の構築に関する詳細については、Artifact の構築 を参照してください。