メインコンテンツへスキップ
Colab で試す W&B Artifact の time-to-live (TTL) ポリシーを使って、アーティファクトを W&B から削除するタイミングをスケジューリングできます。アーティファクトを削除すると、W&B はそのアーティファクトを ソフトデリート としてマークします。つまり、そのアーティファクトは削除対象としてマークされますが、ファイル自体はすぐにはストレージから削除されません。W&B がアーティファクトをどのように削除するかの詳細は、Delete artifacts ページを参照してください。 Artifacts TTL を使用したデータ保持の管理方法については、Managing data retention with Artifacts TTL という動画チュートリアルを参照してください。W&B App での Artifacts TTL を用いたデータ保持の管理方法を学べます。
W&B は、Registry にリンクされたアーティファクトに対して TTL ポリシーを設定するオプションを無効にします。これは、本番ワークフローで使用されているリンク済みアーティファクトが誤って有効期限切れにならないようにするためです。
  • Teams の管理者のみが、チームの設定 を表示でき、(1) 誰が TTL ポリシーを設定または編集できるかの許可や (2) チームのデフォルト TTL の設定など、チームレベルの TTL 設定にアクセスできます。
  • W&B App の UI でアーティファクトの詳細に TTL ポリシーを設定または編集するオプションが表示されない場合、あるいはプログラムによって TTL を設定してもアーティファクトの TTL プロパティが正常に変更されない場合は、Teams の管理者からその権限が付与されていない可能性があります。

自動生成されたアーティファクト

TTL ポリシーを使用できるのは、ユーザーが作成したアーティファクトのみです。W&B によって自動生成されるアーティファクトに対しては、TTL ポリシーを設定できません。 次のアーティファクトタイプは、自動生成されたアーティファクトであることを示します:
  • run_table
  • code
  • job
  • wandb-* で始まる任意のアーティファクトタイプ
アーティファクトのタイプは、W&B プラットフォーム上、またはプログラムで確認できます。
import wandb

with wandb.init(project="<my-project-name>") as run:
    artifact = run.use_artifact(artifact_or_name="<my-artifact-name>")
    print(artifact.type)
<> で囲まれている値を自分の値に置き換えてください。

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

チーム内で TTL ポリシーを設定および編集できるユーザーを定義します。TTL 権限をチーム管理者のみに付与することも、チーム管理者とチームメンバーの両方に TTL 権限を付与することもできます。
TTL ポリシーを設定または編集できるユーザーを定義できるのはチーム管理者のみです。
  1. チームのプロフィールページに移動します。
  2. Settings タブを選択します。
  3. Artifacts time-to-live (TTL) セクション に移動します。
  4. TTL permissions ドロップダウン から、TTL ポリシーを設定および編集できるユーザーを選択します。
  5. Review and save settings をクリックします。
  6. 変更内容を確認し、Save settings を選択します。
TTL 権限を設定する

TTL ポリシーを作成する

アーティファクトの TTL ポリシーは、アーティファクトの作成時または作成後に設定できます。 以下のすべてのコードスニペットで、<> で囲まれている部分を自分の情報に置き換えてからコードスニペットを使用してください。

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

アーティファクトを作成するときに TTL ポリシーを定義するには、W&B Python SDK を使用します。TTL ポリシーは通常、日数で定義します。
アーティファクトを作成するときに TTL ポリシーを定義する手順は、通常のアーティファクトの作成とほぼ同じです。違いは、アーティファクトの ttl 属性に time delta を渡す点だけです。
手順は次のとおりです。
  1. アーティファクトを作成します。
  2. ファイル、ディレクトリ、または参照などのコンテンツをアーティファクトに追加します。
  3. Python の標準ライブラリの一部である datetime.timedelta データ型を使用して、TTL の有効期間を定義します。
  4. アーティファクトをログに記録します。
次のコードスニペットは、アーティファクトを作成して TTL ポリシーを設定する方法を示しています。
import wandb
from datetime import timedelta

with wandb.init(project="<my-project-name>", entity="<my-entity>") as run:
    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 ポリシーを設定または編集する

既に存在するアーティファクトに対して TTL ポリシーを定義するには、W&B App UI または W&B Python SDK を使用します。
アーティファクトの TTL を変更しても、アーティファクトの有効期限までの時間はアーティファクトの createdAt タイムスタンプを基準に計算されます。
  1. アーティファクトを取得します
  2. アーティファクトの ttl 属性に時間差(timedelta)を渡します。
  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 年に設定しています。

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

デフォルト TTL ポリシーを設定できるのはチーム管理者のみです。
チームのデフォルト TTL ポリシーを設定します。デフォルト TTL ポリシーは、作成日時に基づいて、既存および今後作成されるすべてのアーティファクトに適用されます。すでにバージョンレベルの TTL ポリシーが設定されているアーティファクトは、チームのデフォルト TTL の影響を受けません。
  1. チームのプロフィールページに移動します。
  2. Settings タブを選択します。
  3. Artifacts time-to-live (TTL) セクションに移動します。
  4. Set team’s default TTL policy をクリックします。
  5. Duration フィールドで、TTL ポリシーを日数単位で設定します。
  6. Review and save settings をクリックします。 7/ 変更内容を確認し、Save settings を選択します。
デフォルト TTL ポリシーを設定する

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

public API を使用して run を取得せずにアーティファクトを取得し、TTL ポリシーを設定します。TTL ポリシーは通常、日数で定義します。 次のコードサンプルは、public API を使用してアーティファクトを取得し、TTL ポリシーを設定する方法を示します。
api = wandb.Api()

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

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

artifact.save()

TTL ポリシーを無効化する

特定のアーティファクト バージョンに対する TTL ポリシーを無効化するには、W&B Python SDK または W&B App UI を使用してください。
  1. アーティファクトを取得します
  2. アーティファクトの ttl 属性を None に設定します。
  3. save メソッドでアーティファクトを更新します。
次のコードスニペットは、アーティファクトの TTL ポリシーを無効化する方法を示しています。
artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
artifact.ttl = None
artifact.save()

TTL ポリシーを表示する

Python SDK または W&B App の UI を使用して、アーティファクトの TTL ポリシーを表示できます。
print 文を使用してアーティファクトの TTL ポリシーを表示します。次の例は、アーティファクトを取得してその TTL ポリシーを表示する方法を示しています。
artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
print(artifact.ttl)