アーティファクト 内のファイルの一部に変更を適用する必要があり、元のアーティファクトのサイズが大幅に大きい場合は、段階的アーティファクトを作成することをお勧めします。
ゼロから新しいアーティファクトバージョンを作成する
- Single run: 1 つの run が、新しいバージョンに必要なすべてのデータを提供します。これは最も一般的なケースで、run によって必要なデータを完全に再生成できる場合に最適です。たとえば、保存済みモデルを出力したり、分析用の表にモデルの予測を出力したりする場合です。
- 分散 run: 複数の runs がまとまって、新しいバージョンに必要なすべてのデータを提供します。これは、複数の runs がしばしば並列にデータを生成する分散ジョブに最適です。たとえば、モデルを分散方式で評価し、予測を出力する場合です。
wandb.Artifact API に、project 内に存在しない名を渡すと、W&B は新しいアーティファクトを作成し、v0 alias を割り当てます。W&B は、同じアーティファクトに再度ログするときに内容のチェックサムを計算します。アーティファクトが変更されている場合、W&B は新しいバージョン v1 を保存します。
wandb.Artifact API に、project 内の既存のアーティファクトと一致する名とアーティファクトタイプを渡すと、W&B は既存のアーティファクトを取得します。取得されたアーティファクトのバージョンは 1 より大きくなります。

単一の run
アーティファクト内のすべてのファイルを 1 つの run で生成する場合は、その run を使って アーティファクト の新しいバージョンをログします。これは、1 つの run が アーティファクト 内のすべてのファイルを生成するケースです。 ユースケースに応じて、以下のタブから 1 つ選択し、新しい アーティファクト バージョンを作成します。- run の output としてトラッキングする
- 直接保存
アーティファクト を run に明示的に関連付けるには、
wandb.Run.log_artifact() を使用します。wandb.init()で run を作成します。wandb.Artifactで新しい アーティファクト を作成するか、既存の アーティファクト を取得します。wandb.Artifact.add_file()で アーティファクト にファイルを追加します。wandb.Run.log_artifact()で アーティファクト を run にログします。
分散 run
- コレクション内の各 run は、同じバージョンで共同作業するために、同じ一意の ID (
distributed_id) を認識している必要があります。デフォルトでは、存在する場合、W&B はwandb.init(group=GROUP)で設定された run のgroupをdistributed_idとして使用します。 - バージョンを「コミット」してその状態を永続的にロックするための、最後の run が必要です。
- 共同の アーティファクト に追加するには
upsert_artifactを使用し、コミットを完了するにはfinish_artifactを使用します。
upsert_artifact を使用して、それぞれ異なる画像ファイルを同じ アーティファクト に追加します。
Run 1
Run 2
Run 3
wandb.Run.finish_artifact() を呼び出す run では、アーティファクト にファイルを含めることもできますが、必須ではありません。
既存のバージョンから新しいアーティファクト バージョンを作成する

Artifact.add_file()、Artifact.add_dir()、Artifact.remove() などのメソッドを使用してドラフトを変更できます。利用可能なメソッドの完全な一覧については、Artifact リファレンス ドキュメントを参照してください。
ドラフトの変更が完了したら、それをログするか保存して、新しいアーティファクト バージョンを作成します。
段階的アーティファクトを作成する代わりに、新しいアーティファクトを最初から作成することもできます。ただし、この方法では、すべてのアーティファクト ファイルがローカル ディスク上で利用可能である必要があります。段階的アーティファクトでは、前のアーティファクト バージョンの変更されていないファイルを再利用しながら、個々のファイルを追加、削除、または変更できます。
Single run
- run 入力としてトラッキング
- 直接取得
現在の run が アーティファクト を使用する場合は、
wandb.Run.use_artifact() を使用します。W&B は、その アーティファクト を run の入力として記録します。wandb.Run.use_artifact()で アーティファクト バージョンを取得します。Artifact.new_draft()でドラフトを作成します。- ドラフト内のエントリを追加、削除、または変更します。
wandb.Run.log_artifact()でドラフトをログして、新しい アーティファクト バージョンを作成します。
分散 run
Artifact.upsert_artifact() と Artifact.finish_artifact() を使用します。
以下の例では、アーティファクト が run への入力 として使用されるケースで、分散 run から新しい アーティファクト version を作成する方法を示します。同じ方法は、Public API を使用して アーティファクト を 直接フェッチする 場合にも適用できます。