アーティファクト
W&Bアーティファクトを使って、データセット、モデル、依存関係、結果を機械学習パイプラインの各ステップでトラッキングしましょう。アーティファクトを使うことで、ファイルの変更履歴を完全かつ監査可能な形で取得することが簡単になります。
アーティファクトは、バージョン管理されたディレクトリーと考えることができます。アーティファクトは、runの入力または出力のどちらかです。一般的なアーティファクトには、トレーニングセット全体やモデルが含まれます。データセットを直接アーティファクトに保存するか、アーティファクト参照を使ってAmazon S3、GCP、自分のシステムなどの他のシステム内のデータを指し示すことができます。
アーティファクトは、指定されたrunの入力または出力になることができます。
アーティファクトとrunは有向グラフを形成します。なぜなら、あるW&B runは、他のrunの出力アーティファクトを入力として使用できるからです。パイプラインを事前に定義する必要はありません。Weights and Biasesは、アーティファクトを使用してログをとることで、DAGを作成してくれます。
次のアニメーションは、W&BアプリUIで表示されるアーティファクトのDAGの例を示しています。
アーティファクトのグラフの探索方法についての詳細は、アーティファクトグラフの探索と移動を参照してください。
仕組み
アーティファクトはデータのディレクトリーのようなものです。各エントリは、アーティファクト内に保存されている実際のファイルか、外部URIへの参照のどちらかです。通常のファイルシステムと同様に、アーティファクト内にフォルダを入れ子にできます。データセット、モデル、画像、HTML、コード、オーディオ、生のバイナリデータなど、あらゆるデータを保存できます。
このディレクトリーの内容を変更するたびに、W&Bはアーティファクトの新しいバージョンを作成し、以前の内容を上書きするのではなく、代わりに新しいバージョンを作成します。
例として、以下のディレクトリー構造を持つと仮定しましょう。
画像
|-- cat.png(2MB)
|-- dog.png(1MB)
次のコードスニペットは、animals
というデータセットアーティファクトを作成する方法を示しています。(以下のコードスニペットの詳細については、後のセクションで詳しく説明します)。
import wandb
run = wandb.init() # W&B Runを初期化
artifact = wandb.Artifact("animals", type="dataset")
artifact.add_dir("images") # 複数のファイルをアーティファクトに追加します
run.log_artifact(artifact) # `animals:v0`を作成します
W&Bは、新しいアーティファクトオブジェクトをW&Bに作成してログするときに、自動的にv0
というバージョンを割り当て、latest
というエイリアスを付けます。エイリアスは、アーティファクトバージョンに人間が読める名前を付けることができます。
同じ名前、タイプ、内容で別のアーティファクトを作成すると(つまり、アーティファクトの別バージョンを作成すると)、W&Bはバージョンインデックスを1つ増やします。エイリアスlatest
はアーティファクトv0
から外れ、v1
アーティファクトに割り当てられます。
W&Bは、アーティファクトのバージョン間で変更されたファイルをアップロードします。アーティファクトがどのように保存されるかの詳細については、アーティファクトのストレージを参照してください。
特定のアーティファクトを参照するには、インデックスバージョンまたはエイリアスのいずれかを使用できます。
例として、データセットのアーティファクトに新しい画像 bird.png
をアップロードしたいとします。前のコード例から続けると、ディレクトリは次のようになります。
images
|-- cat.png (2MB)
|-- dog.png (1MB)
|-- bird.png (3MB)
前のコードスニペットを再初期化します。これにより、新しいアーティファクトのバージョン animals:v1
が生成されます。W&Bはこのバージョンに自動的にエイリアス latest
を割り当てます。エイリアスをカスタマイズして、バージョンに適用するには、log_artifact
に aliases=['my-cool-alias']
を渡します。新しいバージョンを作成する方法についての詳細は、新しいアーティファクトのバージョンを作成を参照してください。
アーティファクトを使用するには、アーティファクトの名前とエイリアスを提供してください。
import wandb
run = wandb.init()
animals = run.use_artifact("animals:latest")
directory = animals.download()
アーティファクトのダウンロード方法についての詳細は、アーティファクトの使用を参照してください。
はじめ方
ユースケースに応じて、以下のリソースを参考にしてW&Bアーティファクトの使い方を学びましょう:
- W&Bアーティファクトを初めて使用する場合は、クイックスタートをお読みいただくことをお勧めします。クイックスタートでは、初めてのアーティファクトのセットアップ方法を説明しています。
- W&B開発者ガイドで、アーティファクトに関するトピックを探求してください。例えば:
- アーティファクトや新しいアーティファクトバージョンを作成する。
- アーティファクトを更新する。
- アーティファクトをダウンロードして使用する。
- アーティファクトを削除する。
- W&B SDKリファレンスガイドで、Python Artifact APIやArtifact CLIリファレンスガイドを探索してください。
ステップバイステップのビデオは、「Version Control Data and Model with W&B Artifacts」をご覧ください。