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 ポリシーを設定または編集できるユーザーを定義できるのはチーム管理者のみです。
- チームのプロフィールページに移動します。
- Settings タブを選択します。
- Artifacts time-to-live (TTL) セクション に移動します。
- TTL permissions ドロップダウン から、TTL ポリシーを設定および編集できるユーザーを選択します。
- Review and save settings をクリックします。
- 変更内容を確認し、Save settings を選択します。
アーティファクトの TTL ポリシーは、アーティファクトの作成時または作成後に設定できます。
以下のすべてのコードスニペットで、<> で囲まれている部分を自分の情報に置き換えてからコードスニペットを使用してください。
アーティファクトを作成するときに TTL ポリシーを設定する
アーティファクトを作成するときに TTL ポリシーを定義するには、W&B Python SDK を使用します。TTL ポリシーは通常、日数で定義します。
アーティファクトを作成するときに TTL ポリシーを定義する手順は、通常のアーティファクトの作成とほぼ同じです。違いは、アーティファクトの ttl 属性に time delta を渡す点だけです。
手順は次のとおりです。
- アーティファクトを作成します。
- ファイル、ディレクトリ、または参照などのコンテンツをアーティファクトに追加します。
- Python の標準ライブラリの一部である
datetime.timedelta データ型を使用して、TTL の有効期間を定義します。
- アーティファクトをログに記録します。
次のコードスニペットは、アーティファクトを作成して 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 タイムスタンプを基準に計算されます。
- アーティファクトを取得します。
- アーティファクトの
ttl 属性に時間差(timedelta)を渡します。
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 年に設定しています。
- W&B App UI で、対象の W&B プロジェクトに移動します。
- プロジェクトのサイドバーでアーティファクトのアイコンを選択します。
- アーティファクトの一覧から、対象のアーティファクトタイプを展開します。
- TTL ポリシーを編集したいアーティファクトバージョンを選択します。
- Version タブをクリックします。
- ドロップダウンから Edit TTL policy を選択します。
- 表示されるモーダルで、TTL ポリシーのドロップダウンから Custom を選択します。
- TTL duration フィールドで、TTL ポリシーを日数単位で設定します。
- 変更内容を保存するには Update TTL ボタンを選択します。
デフォルト TTL ポリシーを設定できるのはチーム管理者のみです。
チームのデフォルト TTL ポリシーを設定します。デフォルト TTL ポリシーは、作成日時に基づいて、既存および今後作成されるすべてのアーティファクトに適用されます。すでにバージョンレベルの TTL ポリシーが設定されているアーティファクトは、チームのデフォルト TTL の影響を受けません。
- チームのプロフィールページに移動します。
- Settings タブを選択します。
- Artifacts time-to-live (TTL) セクションに移動します。
- Set team’s default TTL policy をクリックします。
- Duration フィールドで、TTL ポリシーを日数単位で設定します。
- Review and save settings をクリックします。
7/ 変更内容を確認し、Save settings を選択します。
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 ポリシーを無効化するには、W&B Python SDK または W&B App UI を使用してください。
- アーティファクトを取得します。
- アーティファクトの
ttl 属性を None に設定します。
save メソッドでアーティファクトを更新します。
次のコードスニペットは、アーティファクトの TTL ポリシーを無効化する方法を示しています。artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
artifact.ttl = None
artifact.save()
- W&B App の UI で自分の W&B プロジェクトに移動します。
- プロジェクトのサイドバーでアーティファクトアイコンを選択します。
- アーティファクト一覧から、対象のアーティファクトタイプを展開します。
- TTL ポリシーを編集したいアーティファクトバージョンを選択します。
- Version タブをクリックします。
- Link to registry ボタンの横にあるミートボールメニューアイコンをクリックします。
- ドロップダウンから Edit TTL policy を選択します。
- 表示されるモーダル内の TTL ポリシーのドロップダウンから Deactivate を選択します。
- 変更内容を保存するには Update 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)
W&B App の UI を使用して、アーティファクトの TTL ポリシーを表示します。
- W&B App にアクセスします。
- 自分の W&B プロジェクトを開きます。
- プロジェクト内のサイドバーから Artifacts タブを選択します。
- コレクションをクリックします。
コレクションビューでは、選択したコレクション内のすべてのアーティファクトを確認できます。Time to Live 列に、そのアーティファクトに割り当てられている TTL ポリシーが表示されます。