メインコンテンツへスキップ
W&B Artifacts を使用して、W&B Runs の入出力として扱うデータを追跡し、バージョン管理します。たとえば、モデル学習の run は入力としてデータセットを受け取り、出力として学習済みモデルを生成します。run にはハイパーパラメータ、メタデータ、メトリクスをログでき、さらにアーティファクトを使って、学習に使用した入力データセットを記録・追跡・バージョン管理し、出力として得られるモデルのチェックポイントを別のアーティファクトとして扱うことができます。

ユースケース

アーティファクトは、ML ワークフロー全体にわたって runs の入出力として利用できます。また、処理の入力としてデータセットやモデル、さらには他のアーティファクトも利用できます。
モデルの学習、データ処理、モデル評価の入出力を示すアーティファクトのワークフローダイアグラム
ユースケース入力出力
モデルの学習データセット(学習データと検証データ)学習済みモデル
データセットの前処理データセット(生データ)データセット(前処理済みデータ)
モデルの評価モデル + データセット(テストデータ)W&B Table
モデルの最適化モデル最適化済みモデル
以下のコードスニペットは、順に実行することを想定しています。

アーティファクトを作成する

4 行のコードでアーティファクトを作成します。
  1. W&B run を作成します。
  2. wandb.Artifact を使ってアーティファクトオブジェクトを作成します。
  3. wandb.Artifact.add_file() を使って、モデルファイルやデータセットなど 1 つ以上のファイルをアーティファクトオブジェクトに追加します。
  4. wandb.Run.log_artifact() を使って、アーティファクトを W&B にログとして記録します。
たとえば、次のコードスニペットは、dataset.h5 というファイルを example_artifact というアーティファクトにログする方法を示しています。
import wandb

with wandb.init(project="artifacts-example", job_type="add-dataset") as run:
    artifact = wandb.Artifact(name="example_artifact", type="dataset")
    artifact.add_file(local_path="./dataset.h5", name="training_dataset")
    run.log_artifact(artifact)
  • アーティファクトの type は、W&B プラットフォーム上での表示に影響します。type を指定しない場合、デフォルトで unspecified になります。
  • ドロップダウンの各ラベルは、それぞれ異なる type パラメータの値を表します。上記のコードスニペットでは、アーティファクトの typedataset です。
Amazon S3 バケットのような外部オブジェクトストレージに保存されているファイルやディレクトリへの参照を追加する方法については、外部ファイルの追跡 のページを参照してください。

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

wandb.Run.use_artifact() メソッドを使って、run の入力としてマークしたいアーティファクトを指定します。 前のコードスニペットに続いて、次のコード例では、先ほど作成した example_artifact というアーティファクトを使用する方法を示します。
with wandb.init(project="artifacts-example", job_type="add-dataset") as run:
    artifact = run.use_artifact("training_dataset:latest")  # "my_data" アーティファクトを使用する run オブジェクトを返す
この処理はアーティファクトオブジェクトを返します。 次に、返されたオブジェクトを使ってアーティファクトの内容をすべてダウンロードします。
datadir = artifact.download()  # `my_data` アーティファクト全体をデフォルトディレクトリにダウンロードします。
root パラメーター に任意のパスを渡して、特定のディレクトリにアーティファクトをダウンロードできます。アーティファクトをダウンロードするその他の方法や、指定可能な追加パラメーターについては、アーティファクトのダウンロードと利用 に関するガイドを参照してください。

次のステップ

  • アーティファクトをバージョン管理し、更新する方法を学ぶ。
  • アーティファクトの変更に応じて下流のワークフローをトリガーしたり、Slack チャンネルに通知を送ったりするために automations を使う方法を学ぶ。
  • 学習済みモデルを管理するためのスペースである registry について学ぶ。
  • Python SDKCLI のリファレンスガイドを参照する。