1 - Delete an artifact

App UI を使用してインタラクティブに、または W&B SDK を使用してプログラム的に Artifacts を削除します。

App UIまたは W&B SDK を使用して、アーティファクトをインタラクティブに、またはプログラムで削除できます。アーティファクトを削除すると、W&B はそのアーティファクトを 論理削除 としてマークします。つまり、アーティファクトは削除対象としてマークされますが、ファイルはストレージからすぐに削除されるわけではありません。

アーティファクトの内容は、論理削除、つまり削除保留状態のままとなり、定期的に実行されるガベージコレクション プロセスが、削除対象としてマークされたすべてのアーティファクトを確認します。ガベージコレクション プロセスは、アーティファクトとその関連ファイルが、以前または以降のアーティファクト バージョンで使用されていない場合、ストレージから関連ファイルを削除します。

このページのセクションでは、特定のアーティファクト バージョンを削除する方法、アーティファクト コレクションを削除する方法、エイリアスを使用または使用せずにアーティファクトを削除する方法などについて説明します。アーティファクトが W&B から削除されるタイミングは、TTL ポリシーでスケジュールできます。詳細については、アーティファクト TTL ポリシーによるデータ保持の管理 を参照してください。

アーティファクト バージョンを削除する

アーティファクト バージョンを削除するには:

  1. アーティファクトの名前を選択します。これにより、アーティファクト ビューが展開され、そのアーティファクトに関連付けられているすべてのアーティファクト バージョンが一覧表示されます。
  2. アーティファクトのリストから、削除するアーティファクト バージョンを選択します。
  3. ワークスペースの右側にあるケバブ ドロップダウンを選択します。
  4. 削除を選択します。

アーティファクト バージョンは、delete() メソッドを使用してプログラムで削除することもできます。以下の例を参照してください。

エイリアスを持つ複数のアーティファクト バージョンを削除する

次のコード例は、エイリアスが関連付けられているアーティファクトを削除する方法を示しています。アーティファクトを作成したエンティティ、プロジェクト名、run ID を指定します。

import wandb

run = api.run("entity/project/run_id")

for artifact in run.logged_artifacts():
    artifact.delete()

アーティファクトに1つ以上のエイリアスがある場合にエイリアスを削除するには、delete_aliases パラメータをブール値 True に設定します。

import wandb

run = api.run("entity/project/run_id")

for artifact in run.logged_artifacts():
    # 1つ以上エイリアスを持つ
    # アーティファクトを削除するには
    # delete_aliases=True を設定します
    artifact.delete(delete_aliases=True)

特定のエイリアスを持つ複数のアーティファクト バージョンを削除する

次のコードは、特定のエイリアスを持つ複数のアーティファクト バージョンを削除する方法を示しています。アーティファクトを作成したエンティティ、プロジェクト名、run ID を指定します。削除ロジックを独自のものに置き換えます。

import wandb

runs = api.run("entity/project_name/run_id")

# エイリアス 'v3' と 'v4' を持つアーティファクトを削除します
for artifact_version in runs.logged_artifacts():
    # 独自の削除ロジックに置き換えます。
    if artifact_version.name[-2:] == "v3" or artifact_version.name[-2:] == "v4":
        artifact.delete(delete_aliases=True)

エイリアスを持たないアーティファクトのすべてのバージョンを削除する

次のコードスニペットは、エイリアスを持たないアーティファクトのすべてのバージョンを削除する方法を示しています。wandb.Apiproject および entity キーに、プロジェクトとエンティティの名前をそれぞれ指定します。<> をアーティファクトの名前に置き換えます。

import wandb

# wandb.Api メソッドを使用する場合は、
# エンティティとプロジェクト名を指定してください。
api = wandb.Api(overrides={"project": "project", "entity": "entity"})

artifact_type, artifact_name = "<>"  # タイプと名前を指定
for v in api.artifact_versions(artifact_type, artifact_name):
    # 'latest' などのエイリアスを持たないバージョンをクリーンアップします。
    # 注: ここには、必要な削除ロジックを入れることができます。
    if len(v.aliases) == 0:
        v.delete()

アーティファクト コレクションを削除する

アーティファクト コレクションを削除するには:

  1. 削除するアーティファクト コレクションに移動し、その上にカーソルを置きます。
  2. アーティファクト コレクション名の横にあるケバブ ドロップダウンを選択します。
  3. 削除を選択します。

delete() メソッドを使用して、プログラムでアーティファクト コレクションを削除することもできます。wandb.Apiproject および entity キーに、プロジェクトとエンティティの名前をそれぞれ指定します。

import wandb

# wandb.Api メソッドを使用する場合は、
# エンティティとプロジェクト名を指定してください。
api = wandb.Api(overrides={"project": "project", "entity": "entity"})
collection = api.artifact_collection(
    "<artifact_type>", "entity/project/artifact_collection_name"
)
collection.delete()

W&B のホスト方法に基づいてガベージコレクションを有効にする方法

W&B の共有クラウドを使用している場合、ガベージコレクションはデフォルトで有効になっています。W&B のホスト方法によっては、ガベージコレクションを有効にするために追加の手順が必要になる場合があります。これには以下が含まれます。

  • GORILLA_ARTIFACT_GC_ENABLED 環境変数を true に設定します: GORILLA_ARTIFACT_GC_ENABLED=true
  • AWSGCP 、または Minio などの他のストレージ プロバイダーを使用する場合は、バケットの バージョン管理を有効にします。Azure を使用する場合は、論理削除を有効にします

次の表は、デプロイメントの種類に基づいてガベージコレクションを有効にするための要件を満たす方法を示しています。

X は、要件を満たす必要があることを示します。

環境変数 バージョン管理を有効にする
共有クラウド
セキュア ストレージ コネクタ を使用した共有クラウド X
専用クラウド
セキュア ストレージ コネクタ を使用した専用クラウド X
顧客管理クラウド X X
顧客管理オンプレミス X X

2 - Manage artifact data retention

Time to live ポリシー (TTL)

W&B Artifact time-to-live(TTL)ポリシーを使用して、Artifacts が W&B から削除されるタイミングをスケジュールします。アーティファクトを削除すると、W&B はそのアーティファクトを ソフト削除 としてマークします。つまり、アーティファクトは削除対象としてマークされますが、ファイルはストレージからすぐに削除されるわけではありません。W&B が Artifacts を削除する方法の詳細については、Artifacts の削除 ページを参照してください。

W&B アプリで Artifacts TTL を使用してデータ保持を管理する方法については、こちらのビデオチュートリアルをご覧ください。

自動生成された Artifacts

ユーザーが生成した Artifacts のみ、TTL ポリシーを使用できます。W&B によって自動生成された Artifacts は、TTL ポリシーを設定できません。

次の Artifact の種類は、自動生成された Artifact を示します。

  • run_table
  • code
  • job
  • wandb-* で始まる任意の Artifact の種類

W&B プラットフォームで、またはプログラムで Artifact の種類を確認できます。

import wandb

run = wandb.init(project="<my-project-name>")
artifact = run.use_artifact(artifact_or_name="<my-artifact-name>")
print(artifact.type)

<> で囲まれた値を独自の値に置き換えます。

TTL ポリシーを編集および設定できるユーザーを定義する

チーム内で TTL ポリシーを設定および編集できるユーザーを定義します。TTL 権限をチーム管理者のみに付与するか、チーム管理者とチームメンバーの両方に TTL 権限を付与できます。

  1. チームのプロファイルページに移動します。
  2. [設定] タブを選択します。
  3. [Artifacts time-to-live (TTL) section] に移動します。
  4. [TTL permissions dropdown] で、TTL ポリシーを設定および編集できるユーザーを選択します。
  5. [Review and save settings] をクリックします。
  6. 変更を確認し、[Save settings] を選択します。

TTL ポリシーを作成する

アーティファクトを作成するとき、またはアーティファクトの作成後に遡及的に、アーティファクトの TTL ポリシーを設定します。

以下のすべてのコードスニペットについて、<> で囲まれたコンテンツを自分の情報に置き換えて、コードスニペットを使用します。

アーティファクトを作成するときに TTL ポリシーを設定する

W&B Python SDK を使用して、アーティファクトを作成するときに TTL ポリシーを定義します。TTL ポリシーは通常、日数で定義されます。

手順は次のとおりです。

  1. アーティファクトを作成します。
  2. ファイル、ディレクトリー、参照など、アーティファクトにコンテンツを追加します。
  3. Python の標準ライブラリの一部である datetime.timedelta データ型を使用して、TTL 制限時間を定義します。
  4. アーティファクトをログに記録します。

次のコードスニペットは、アーティファクトを作成し、TTL ポリシーを設定する方法を示しています。

import wandb
from datetime import timedelta

run = wandb.init(project="<my-project-name>", entity="<my-entity>")
artifact = wandb.Artifact(name="<artifact-name>", type="<type>")
artifact.add_file("<my_file>")

artifact.ttl = timedelta(days=30)  # TTL ポリシーを設定
run.log_artifact(artifact)

上記のコードスニペットは、アーティファクトの TTL ポリシーを 30 日に設定します。つまり、W&B は 30 日後にアーティファクトを削除します。

アーティファクトを作成した後で TTL ポリシーを設定または編集する

W&B アプリ UI または W&B Python SDK を使用して、既に存在するアーティファクトの TTL ポリシーを定義します。

  1. アーティファクトを取得します。
  2. 時間デルタをアーティファクトの ttl 属性に渡します。
  3. saveメソッドを使用してアーティファクトを更新します。

次のコードスニペットは、アーティファクトの TTL ポリシーを設定する方法を示しています。

import wandb
from datetime import timedelta

artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
artifact.ttl = timedelta(days=365 * 2)  # 2 年後に削除
artifact.save()

上記のコード例では、TTL ポリシーを 2 年に設定しています。

  1. W&B アプリ UI で W&B プロジェクトに移動します。
  2. 左側のパネルでアーティファクトアイコンを選択します。
  3. アーティファクトのリストから、TTL ポリシーを編集するアーティファクトの種類を展開します。
  4. TTL ポリシーを編集するアーティファクトバージョンを選択します。
  5. [バージョン] タブをクリックします。
  6. ドロップダウンから [TTL ポリシーの編集] を選択します。
  7. 表示されるモーダル内で、TTL ポリシードロップダウンから [カスタム] を選択します。
  8. [TTL 期間] フィールドに、TTL ポリシーを日数単位で設定します。
  9. [TTL の更新] ボタンを選択して、変更を保存します。

チームのデフォルト TTL ポリシーを設定する

チームのデフォルト TTL ポリシーを設定します。デフォルト TTL ポリシーは、それぞれの作成日に基づいて、既存および将来のすべてのアーティファクトに適用されます。既存のバージョンレベルの TTL ポリシーを持つアーティファクトは、チームのデフォルト TTL の影響を受けません。

  1. チームのプロファイルページに移動します。
  2. [設定] タブを選択します。
  3. [Artifacts time-to-live (TTL) section] に移動します。
  4. [チームのデフォルト TTL ポリシーを設定] をクリックします。
  5. [期間] フィールドに、TTL ポリシーを日数単位で設定します。
  6. [Review and save settings] をクリックします。
  7. 変更を確認し、[Save settings] を選択します。

run の外部で TTL ポリシーを設定する

パブリック API を使用して、run を取得せずにアーティファクトを取得し、TTL ポリシーを設定します。TTL ポリシーは通常、日数で定義されます。

次のコードサンプルは、パブリック API を使用してアーティファクトを取得し、TTL ポリシーを設定する方法を示しています。

api = wandb.Api()

artifact = api.artifact("entity/project/artifact:alias")

artifact.ttl = timedelta(days=365)  # 1 年後に削除

artifact.save()

TTL ポリシーを無効化する

W&B Python SDK または W&B アプリ UI を使用して、特定のアーティファクトバージョンの TTL ポリシーを無効化します。

  1. アーティファクトを取得します。
  2. アーティファクトの ttl 属性を None に設定します。
  3. saveメソッドを使用してアーティファクトを更新します。

次のコードスニペットは、アーティファクトの TTL ポリシーをオフにする方法を示しています。

artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
artifact.ttl = None
artifact.save()
  1. W&B アプリ UI で W&B プロジェクトに移動します。
  2. 左側のパネルでアーティファクトアイコンを選択します。
  3. アーティファクトのリストから、TTL ポリシーを編集するアーティファクトの種類を展開します。
  4. TTL ポリシーを編集するアーティファクトバージョンを選択します。
  5. [バージョン] タブをクリックします。
  6. [レジストリへのリンク] ボタンの横にあるミートボール UI アイコンをクリックします。
  7. ドロップダウンから [TTL ポリシーの編集] を選択します。
  8. 表示されるモーダル内で、TTL ポリシードロップダウンから [非アクティブ化] を選択します。
  9. [TTL の更新] ボタンを選択して、変更を保存します。

TTL ポリシーを表示する

Python SDK または W&B アプリ UI でアーティファクトの TTL ポリシーを表示します。

print ステートメントを使用して、アーティファクトの TTL ポリシーを表示します。次の例は、アーティファクトを取得し、その TTL ポリシーを表示する方法を示しています。

artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
print(artifact.ttl)

W&B アプリ UI でアーティファクトの TTL ポリシーを表示します。

  1. https://wandb.ai で W&B アプリに移動します。
  2. W&B プロジェクトに移動します。
  3. プロジェクト内で、左側のサイドバーにある [Artifacts] タブを選択します。
  4. コレクションをクリックします。

コレクションビュー内では、選択したコレクション内のすべてのアーティファクトを表示できます。[Time to Live] 列には、そのアーティファクトに割り当てられた TTL ポリシーが表示されます。

3 - Manage artifact storage and memory allocation

W&B Artifacts のストレージ、メモリアロケーションを管理します。

W&B は artifact ファイルを、デフォルトで米国にあるプライベートな Google Cloud Storage バケットに保存します。すべてのファイルは、保存時および転送時に暗号化されます。

機密性の高いファイルについては、Private Hosting をセットアップするか、reference artifacts を使用することをお勧めします。

トレーニング中、W&B はログ、アーティファクト、および設定ファイルを次のローカルディレクトリーにローカルに保存します。

ファイル デフォルトの場所 デフォルトの場所を変更するには、以下を設定します:
ログ ./wandb wandb.initdir 、または WANDB_DIR 環境変数を設定
artifacts ~/.cache/wandb WANDB_CACHE_DIR 環境変数
configs ~/.config/wandb WANDB_CONFIG_DIR 環境変数
アップロード用に artifacts をステージング ~/.cache/wandb-data/ WANDB_DATA_DIR 環境変数
ダウンロードされた artifacts ./artifacts WANDB_ARTIFACT_DIR 環境変数

環境変数を使用して W&B を構成するための完全なガイドについては、環境変数のリファレンスを参照してください。

ローカル artifact キャッシュのクリーンアップ

W&B は artifact ファイルをキャッシュして、ファイルを共有する バージョン 間でのダウンロードを高速化します。時間の経過とともに、このキャッシュディレクトリーが大きくなる可能性があります。wandb artifact cache cleanup コマンドを実行して、キャッシュを削除し、最近使用されていないファイルを削除します。

次のコードスニペットは、キャッシュのサイズを 1GB に制限する方法を示しています。コードスニペットをコピーして ターミナル に貼り付けます。

$ wandb artifact cache cleanup 1GB