W&B Artifact の Time-to-Live (TTL) ポリシーを使用すると、W&B で artifact が削除されるタイミングをスケジュールできます。artifact を削除すると、W&B はその artifact を ソフト削除 としてマークします。つまり、artifact は削除対象としてマークされますが、ファイルは storage からすぐには削除されません。W&B が artifact をどのように削除するかについて詳しくは、Delete artifacts ページを参照してください。
W&B App で Artifacts TTL を使ってデータ保持を管理する方法については、動画チュートリアルの Managing data retention with Artifacts TTL をご覧ください。
W&B は、Registry にリンクされた artifact に対して TTL ポリシーを設定するオプションを無効化します。これは、本番ワークフローで使用されるリンク済み artifact が誤って期限切れにならないようにするためです。
- チームの設定 を表示し、(1) TTL ポリシーを設定または編集できるユーザーの許可や、(2) チームのデフォルト TTL の設定など、チームレベルの TTL 設定にアクセスできるのはチーム管理者のみです。
- W&B App UI で artifact の詳細に TTL ポリシーを設定または編集するオプションが表示されない場合、またはプログラムで TTL を設定しても artifact の TTL プロパティが正常に変更されない場合は、チーム管理者から必要な権限が付与されていません。
TTL ポリシーを使用できるのは、ユーザーが生成した Artifact のみです。W&B によって自動生成された Artifacts には、TTL ポリシーを設定できません。
次の Artifact タイプは、自動生成された Artifact であることを示します。
run_table
code
job
wandb-* で始まる任意の Artifact タイプ
Artifact のタイプは、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 ポリシーを設定または編集できるユーザーを指定できるのは、チーム管理者のみです。
- チームのプロフィールページにアクセスします。
- Settings タブを選択します。
- Artifacts time-to-live (TTL) section にアクセスします。
- TTL permissions ドロップダウンから、TTL ポリシーを設定・編集できるユーザーを選択します。
- Review and save settings をクリックします。
- 変更内容を確認し、Save settings を選択します。
artifact の作成時、または作成後に、artifact に TTL ポリシーを設定できます。
以下のすべてのコード スニペットでは、コード スニペットを使用する前に、<> で囲まれた内容を実際の情報に置き換えてください。
artifact の作成時に TTL ポリシーを設定する
W&B Python SDK を使用して、artifact の作成時に TTL ポリシーを定義します。TTL ポリシーは通常、日単位で定義します。
artifact の作成時に TTL ポリシーを定義する方法は、通常の artifact の作成 とほぼ同じです。異なるのは、artifact の ttl 属性に time delta を渡す点だけです。
手順は次のとおりです。
- artifact を作成します。
- ファイル、ディレクトリ、参照などの内容を artifact に追加します。
- Python の標準ライブラリに含まれる
datetime.timedelta データ型を使用して、TTL の有効期間を定義します。
- artifact をログします。
次の code snippet は、artifact を作成して 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)
前述のコードスニペットでは、artifact の TTL ポリシーを 30 日に設定しています。つまり、W&B は 30 日後に artifact を削除します。
artifact の作成後に TTL ポリシーを設定または編集する
W&B App UI または W&B Python SDK を使用して、既存の artifact に TTL ポリシーを設定します。
artifact の TTL を変更しても、artifact が期限切れになるまでの時間は、artifact の createdAt timestamp に基づいて計算されます。
- artifact を取得します。
- artifact の
ttl 属性に time delta を渡します。
save method で artifact を更新します。
次の code snippet は、artifact に 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 年に設定しています。
- W&B App UI で W&B のプロジェクトにアクセスします。
- プロジェクトのサイドバーで artifact アイコンを選択します。
- artifact の一覧から、対象の artifact type を展開します。
- TTL ポリシーを編集する artifact バージョンを選択します。
- Version タブをクリックします。
- ドロップダウンから Edit TTL policy を選択します。
- 表示されたモーダルで、TTL ポリシーのドロップダウンから Custom を選択します。
- TTL duration フィールドで、TTL ポリシーを日数単位で設定します。
- Update TTL ボタンを選択して変更を保存します。
チームのデフォルト TTL ポリシーを設定できるのは、チーム管理者のみです。
チームのデフォルト TTL ポリシーを設定します。デフォルト TTL ポリシーは、それぞれの作成日を基準に、既存および今後作成されるすべての artifact に適用されます。すでにバージョンレベルの TTL ポリシーが設定されている artifact には、チームのデフォルト TTL は適用されません。
- チームのプロフィールページにアクセスします。
- Settings タブを選択します。
- Artifacts time-to-live (TTL) section にアクセスします。
- Set team’s default TTL policy をクリックします。
- Duration フィールドで、TTL ポリシーを日数単位で設定します。
- Review and save settings をクリックします。
7/ 変更内容を確認し、Save settings を選択します。
Public API を使用して、run を取得せずに artifact を取得し、TTL ポリシーを設定できます。TTL ポリシーは通常、日数単位で定義されます。
次のコード例は、Public API を使用して artifact を取得し、TTL ポリシーを設定する方法を示しています。
api = wandb.Api()
artifact = api.artifact("entity/project/artifact:alias")
artifact.ttl = timedelta(days=365) # 1年後に削除
artifact.save()
W&B Python SDK または W&B App UI を使用して、特定の artifact バージョンに設定された TTL ポリシーを無効にします。
- artifact を取得します.
- artifact の
ttl 属性を None に設定します。
save method を使用して artifact を更新します。
次の コードスニペット は、artifact の TTL ポリシーを無効化する方法を示しています。artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
artifact.ttl = None
artifact.save()
- W&B App の UI で W&B のプロジェクトにアクセスします。
- プロジェクトのサイドバーで artifact アイコンを選択します。
- artifact のリストから、対象の artifact type を展開します。
- TTL ポリシーを編集する artifact バージョンを選択します。
- Version タブをクリックします。
- Link to registry ボタンの横にある アクション () メニューをクリックします。
- ドロップダウンから Edit TTL policy を選択します。
- 表示されるモーダルで、TTL ポリシーのドロップダウンから Deactivate を選択します。
- Update TTL ボタンを選択して変更を保存します。
Python SDK または W&B App UI を使用して、artifact の TTL ポリシーを確認できます。
print 文を使って artifact の TTL ポリシーを確認します。次の例は、artifact を取得して TTL ポリシーを確認する方法を示しています。artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
print(artifact.ttl)
W&B App UI を使用して artifact の TTL ポリシーを確認します。
- W&B App にアクセスします。
- W&B のプロジェクトにアクセスします。
- プロジェクト内で、プロジェクトのサイドバーにある Artifacts タブを選択します。
- collection をクリックします。
collection ビューでは、選択した collection 内のすべての artifact を確認できます。Time to Live 列には、その artifact に割り当てられている TTL ポリシーが表示されます。