Skip to main content
W&B Python SDK を使用すると、W&B run からアーティファクトを作成できます。アーティファクトには、ファイル、ディレクトリ、URI、および並列 run のファイルを追加できます。ファイルを追加したら、そのアーティファクトを W&B サーバー または独自のプライベートサーバーに保存します。各アーティファクトは 1 つの run に関連付けられます。 Amazon S3 に保存されたファイルなどの外部ファイルをトラッキングする方法については、外部ファイルをトラッキングするページを参照してください。

アーティファクトを構築する

W&B アーティファクト は、次の 3 つのステップで構築します。
  1. wandb.Artifact() でアーティファクトの Python オブジェクトを作成する
  2. アーティファクトに 1 つ以上のファイルを追加する
  3. アーティファクトを W&B サーバーに保存する

wandb.Artifact() でアーティファクトの Python オブジェクトを作成する

wandb.Artifact() クラスを初期化して、アーティファクト オブジェクトを作成します。次のパラメーターを指定してください。
  • Name: アーティファクトの名前です。一意でわかりやすく、覚えやすい名前を付けてください。
  • Type: アーティファクトのタイプです。シンプルでわかりやすく、機械学習パイプラインの 1 つのステップに対応するタイプを指定してください。一般的なアーティファクト タイプには 'dataset' や 'model' があります。
W&B は、指定された「name」と「type」を使用して、W&B App 内に有向非巡回グラフを作成します。詳細については、Explore and traverse artifact graphs を参照してください。
次のコード スニペットをコピー&ペーストして、アーティファクト オブジェクトを作成します。プレースホルダー "artifact-name" と "artifact-type" は、実際の値に置き換えてください。
タイプが異なる場合でも、同じ名前のアーティファクトを複数作成することはできません。たとえば、タイプが dataset の cats という名前のアーティファクトと、タイプが model の cats という名前の別のアーティファクトを作成することはできません。
アーティファクト オブジェクトを初期化する際に、説明、メタデータ、ダイジェスト アルゴリズム、その他のパラメーターをオプションで指定できます。 たとえば、次のコード スニペットは、名前、タイプ、説明、メタデータ、ダイジェスト アルゴリズムを指定してアーティファクト オブジェクトを作成します。
MD5 は引き続きデフォルトのダイジェストアルゴリズムです。W&B Python SDK 0.29.0 以降では、digest_algorithm="XXH128" を設定することで、新しいアーティファクトに対してより高速なハッシュ処理を選択できます。MD5 を使用している既存のアーティファクト コレクションでは、引き続き MD5 が使用されます。0.29.0 より前のバージョンの SDK では、XXH128 のエントリを含むアーティファクトを Artifact.verify() で検証できません。
使用可能な属性とパラメーターの詳細については、Python SDK リファレンスガイドにある wandb.Artifact クラスの定義を参照してください。

アーティファクトに 1 つ以上のファイルを追加する

アーティファクト オブジェクトには、ファイル、ディレクトリ、外部 URI 参照 (Amazon S3 など) などを追加できます。 ファイルを 1 つ追加するには、アーティファクト オブジェクトの Artifact.add_file() メソッドを使用します。
ディレクトリを追加するには、Artifact.add_dir() メソッドを使用します:
さまざまなタイプのファイルをアーティファクトに追加する方法について詳しくは、次のセクション「アーティファクトにファイルを追加する」を参照してください。

アーティファクトを W&B サーバーに保存する

アーティファクトを W&B サーバーに保存します。保存するには、Run オブジェクトの wandb.Run.log_artifact() メソッドを使用します。
wandb.Run.log_artifact() と Artifact.save() の使い分け
  • 新しいアーティファクトを作成して特定の run に関連付けるには、wandb.Run.log_artifact() を使用します。
  • 新しい run を作成せずに既存のアーティファクトを更新するには、Artifact.save() を使用します。
ここまでの内容をまとめると、次のコードスニペットのようになります。データセットアーティファクトを作成し、そのアーティファクトにファイルを追加して、W&B に保存します。
同じ名前とタイプでアーティファクトをログするたびに、W&B はそのアーティファクトの新しいバージョンを作成します。詳細については、新しいアーティファクトのバージョンを作成するを参照してください。
W&B は、アップロードのパフォーマンスを高めるために wandb.Run.log_artifact() の呼び出しを非同期で実行します。そのため、ループ内でアーティファクトをログすると、予期しない動作が発生することがあります。例:
アーティファクトは任意の順序でログされる可能性があるため、アーティファクトのバージョン v0 のメタデータのインデックスが 0 であるとは限りません。

アーティファクトにファイルを追加する

以下のセクションでは、さまざまなタイプのオブジェクトをアーティファクトに追加する方法を説明します。以降の例では、次のような構造のディレクトリがあるものとします。

単一のファイルを追加する

ローカルファイルを 1 つアーティファクトに追加するには、wandb.Artifact.add_file() を使用します。local_path パラメーターにファイルのローカルパスを指定します:
たとえば、ローカルの作業ディレクトリに 'hello.txt' というファイルがあるとします。
これで、アーティファクトの内容は次のようになります。
必要に応じて、name パラメーターに別の名前を渡すと、アーティファクト オブジェクト内でファイルをリネームできます。前の例に続けて、次のように記述します。
アーティファクトは次のように保存されます:
次の表は、API 呼び出しの違いによってアーティファクトの内容がどのように変わるかを示しています。

複数のファイルを追加する

ローカルディレクトリ内の複数のファイルをアーティファクトに追加するには、wandb.Artifact.add_dir() メソッドを使用します。local_path パラメーターには、対象ディレクトリのローカルパスを指定します。
次の表は、API 呼び出しによってアーティファクトの内容がどのように変わるかを示しています。

URI 参照を追加する

URI のスキームが W&B ライブラリでサポートされている場合、アーティファクトは再現性を確保するためにチェックサムなどの情報をトラッキングします。 wandb.Artifact.add_reference() メソッドを使用して、外部 URI 参照をアーティファクトに追加します。'uri' 文字列はご自身の URI に置き換えてください。必要に応じて、アーティファクト内の配置先パスを name パラメーターに指定することもできます。
アーティファクトは、次の URI スキームをサポートしています。
  • http(s)://: HTTP 経由でアクセスできるファイルへのパスです。HTTP サーバーが ETag および Content-Length 応答ヘッダーをサポートしている場合、アーティファクトは ETag 形式のチェックサムとサイズのメタデータをトラッキングします。
  • s3://: S3 内のオブジェクトまたはオブジェクトの接頭辞へのパスです。アーティファクトは、参照先のオブジェクトのチェックサムとバージョン管理情報 (バケットでオブジェクトのバージョン管理が有効な場合) をトラッキングします。オブジェクトの接頭辞は、その接頭辞配下のオブジェクトを含むように展開されます (最大 10,000 オブジェクト)。
  • gs://: GCS 内のオブジェクトまたはオブジェクトの接頭辞へのパスです。アーティファクトは、参照先のオブジェクトのチェックサムとバージョン管理情報 (バケットでオブジェクトのバージョン管理が有効な場合) をトラッキングします。オブジェクトの接頭辞は、その接頭辞配下のオブジェクトを含むように展開されます (最大 10,000 オブジェクト)。
次の表は、API 呼び出しごとにアーティファクトの内容がどのように変わるかを示しています。

並列 run からアーティファクトにファイルを追加する

大規模なデータセットや分散トレーニングでは、複数の run を並列に実行し、それぞれの出力を 1 つのアーティファクトにまとめる必要がある場合があります。

ログしたアーティファクトやその他のメタデータのパスを検索する

次のコードスニペットは、W&B Public API を使用して run 内のファイルを一覧表示し、各ファイルの名前と URL を取得する方法を示しています。<entity/project/run-id> プレースホルダーをご自身の値に置き換えてください。
利用可能な属性とメソッドの詳細については、File クラスを参照してください。
最終更新日 2026年9月30日