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

単一の run
アーティファクト内のすべてのファイルを生成する単一の run で、アーティファクトの新しいバージョンをログします。これは、単一の run がアーティファクト内のすべてのファイルを生成する場合に該当します。 ユースケースに応じて、以下のタブのいずれかを選択して、アーティファクトの新しいバージョンを作成してください。- run の出力としてトラッキング
- 直接保存
wandb.Run.log_artifact() を使用して、アーティファクトを run に明示的に関連付けます。wandb.init()で run を作成します。wandb.Artifactで新しいアーティファクトを作成するか、既存のアーティファクトを取得します。wandb.Artifact.add_file()でアーティファクトにファイルを追加します。wandb.Run.log_artifact()で run にアーティファクトをログします。
分散 run
複数の run からなるコレクションが 1 つのバージョンを共同で作成してから、コミットできるようにします。これは、1 つの run が新しいバージョンのデータをすべて提供する、前述の単一の run モードとは異なります。- 同じバージョンで共同作業するには、コレクション内の各 run が同じ一意の ID (
distributed_id) を認識している必要があります。デフォルトでは、wandb.init(group=GROUP)で run のgroupが設定されている場合、W&B はそれをdistributed_idとして使用します。 - バージョンを「コミット」してその状態を永続的にロックする、最終の run が必要です。
- 共同作成するアーティファクトへの追加には
upsert_artifactを、コミットの確定にはfinish_artifactを使用します。
upsert_artifact を使用して同じアーティファクトにそれぞれ別の画像ファイルを追加します。
run 1
run 2
run 3
run 1 と run 2 が完了してから実行する必要があります。wandb.Run.finish_artifact() を呼び出す run は、アーティファクトにファイルを含めることができますが、必須ではありません。
既存のバージョンから新しいアーティファクトのバージョンを作成する
既存のアーティファクトのバージョンに含まれるファイルを追加、変更、または削除して、新しいアーティファクトのバージョンを作成します。W&B は変更されたファイルのみを再インデックスします。こうして作成されたバージョンを 段階的 アーティファクトと呼びます。
Artifact.add_file()、Artifact.add_dir()、Artifact.remove() などのメソッドを使用してドラフトを変更できます。メソッドの一覧については、Artifact リファレンスドキュメント を参照してください。
ドラフトの変更が完了したら、ログするか保存して、新しいアーティファクトのバージョンを作成します。
段階的アーティファクトを作成する代わりに、新しいアーティファクトを一から作成することもできます。ただし、この方法では、アーティファクトのすべてのファイルがローカルディスク上にある必要があります。段階的アーティファクトでは、以前のアーティファクトのバージョンに含まれる変更のないファイルを再利用しながら、個々のファイルを追加、削除、または変更できます。
単一の run
- run の入力としてトラッキングする
- 直接取得する
現在の run でアーティファクトを使用する場合は、
wandb.Run.use_artifact() を使用します。W&B はそのアーティファクトを run の入力として記録します。wandb.Run.use_artifact()でアーティファクトのバージョンを取得します。Artifact.new_draft()でドラフトを作成します。- ドラフト内のエントリを追加、削除、または変更します。
wandb.Run.log_artifact()でドラフトをログし、新しいアーティファクトのバージョンを作成します。
分散 run
複数の run が 1 つのアーティファクトのバージョンにファイルを追加する場合は、Artifact.upsert_artifact() と Artifact.finish_artifact() を使用します。
次の例は、アーティファクトを run への入力として使用する場合に、分散 run から新しいアーティファクトのバージョンを作成する方法を示しています。Public API を使用してアーティファクトを直接取得する場合にも、同じ方法を適用できます。