Manage data retention with Artifact TTL policy
Schedule when artifacts are deleted from W&B with W&B Artifact time-to-live (TTL) policy. When you delete an artifact, W&B marks that artifact as a soft-delete. In other words, the artifact is marked for deletion but files are not immediately deleted from storage. For more information on how W&B deletes artifacts, see the Delete artifacts page.
Check out this video tutorial to learn how to manage data retention with Artifacts TTL in the W&B App.
W&B deactivates the option to set a TTL policy for model artifacts linked to the Model Registry. This is to help ensure that linked models do not accidentally expire if used in production workflows.
- Only team admins can view a team's settings and access team level TTL settings such as (1) permitting who can set or edit a TTL policy or (2) setting a team default TTL.
- If you do not see the option to set or edit a TTL policy in an artifact's details in the W&B App UI or if setting a TTL programmatically does not successfully change an artifact's TTL property, your team admin has not given you permissions to do so.
Auto-generated Artifacts
Only user-generated artifacts can use TTL policies. Artifacts auto-generated by W&B cannot have TTL policies set for them.
The following Artifact types indicate an auto-generated Artifact:
run_table
code
job
- Any Artifact type starting with:
wandb-*
You can check an Artifact's type on the W&B platform or programmatically:
import wandb
run = wandb.init(project="<my-project-name>")
artifact = run.use_artifact(artifact_or_name="<my-artifact-name>")
print(artifact.type)
Replace the values enclosed with <>
with your own.
Define who can edit and set TTL policies
Define who can set and edit TTL policies within a team. You can either grant TTL permissions only to team admins, or you can grant both team admins and team members TTL permissions.
Only team admins can define who can set or edit a TTL policy.
- Navigate to your team’s profile page.
- Select the Settings tab.
- Navigate to the Artifacts time-to-live (TTL) section.
- From the TTL permissions dropdown, select who can set and edit TTL policies.
- Click on Review and save settings.
- Confirm the changes and select Save settings.
Create a TTL policy
Set a TTL policy for an artifact either when you create the artifact or retroactively after the artifact is created.
For all the code snippets below, replace the content wrapped in <>
with your information to use the code snippet.
Set a TTL policy when you create an artifact
Use the W&B Python SDK to define a TTL policy when you create an artifact. TTL policies are typically defined in days.
Defining a TTL policy when you create an artifact is similar to how you normally create an artifact. With the exception that you pass in a time delta to the artifact's ttl
attribute.
The steps are as follows:
- Create an artifact.
- Add content to the artifact such as files, a directory, or a reference.
- Define a TTL time limit with the
datetime.timedelta
data type that is part of Python's standard library. - Log the artifact.
The following code snippet demonstrates how to create an artifact and set a TTL policy.
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) # Set TTL policy
run.log_artifact(artifact)
The preceding code snippet sets the TTL policy for the artifact to 30 days. In other words, W&B deletes the artifact after 30 days.
Set or edit a TTL policy after you create an artifact
Use the W&B App UI or the W&B Python SDK to define a TTL policy for an artifact that already exists.
When you modify an artifact's TTL, the time the artifact takes to expire is still calculated using the artifact's createdAt
timestamp.
- Python SDK
- W&B App
- Fetch your artifact.
- Pass in a time delta to the artifact's
ttl
attribute. - Update the artifact with the
save
method.
The following code snippet shows how to set a TTL policy for an artifact:
import wandb
from datetime import timedelta
artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
artifact.ttl = timedelta(days=365 * 2) # Delete in two years
artifact.save()
The preceding code example sets the TTL policy to two years.
- Navigate to your W&B project in the W&B App UI.
- Select the artifact icon on the left panel.
- From the list of artifacts, expand the artifact type you
- Select on the artifact version you want to edit the TTL policy for.
- Click on the Version tab.
- From the dropdown, select Edit TTL policy.
- Within the modal that appears, select Custom from the TTL policy dropdown.
- Within the TTL duration field, set the TTL policy in units of days.
- Select the Update TTL button to save your changes.
Set default TTL policies for a team
Only team admins can set a default TTL policy for a team.
Set a default TTL policy for your team. Default TTL policies apply to all existing and future artifacts based on their respective creation dates. Artifacts with existing version-level TTL policies are not affected by the team's default TTL.
- Navigate to your team’s profile page.
- Select the Settings tab.
- Navigate to the Artifacts time-to-live (TTL) section.
- Click on the Set team's default TTL policy.
- Within the Duration field, set the TTL policy in units of days.
- Click on Review and save settings. 7/ Confirm the changes and then select Save settings.
Deactivate a TTL policy
Use the W&B Python SDK or W&B App UI to deactivate a TTL policy for a specific artifact version.
- Python SDK
- W&B App
- Fetch your artifact.
- Set the artifact's
ttl
attribute toNone
. - Update the artifact with the
save
method.
The following code snippet shows how to turn off a TTL policy for an artifact:
artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
artifact.ttl = None
artifact.save()
- Navigate to your W&B project in the W&B App UI.
- Select the artifact icon on the left panel.
- From the list of artifacts, expand the artifact type you
- Select on the artifact version you want to edit the TTL policy for.
- Click on the Version tab.
- Click on the meatball UI icon next to the Link to registry button.
- From the dropdown, select Edit TTL policy.
- Within the modal that appears, select Deactivate from the TTL policy dropdown.
- Select the Update TTL button to save your changes.
View TTL policies
View TTL policies for artifacts with the Python SDK or with the W&B App UI.
- Python SDK
- W&B App
Use a print statement to view an artifact's TTL policy. The following example shows how to retrieve an artifact and view its TTL policy:
artifact = run.use_artifact("<my-entity/my-project/my-artifact:alias>")
print(artifact.ttl)
View a TTL policy for an artifact with the W&B App UI.
- Navigate to the W&B App at https://wandb.ai.
- Go to your W&B Project.
- Within your project, select the Artifacts tab in the left sidebar.
- Click on a collection.
Within the collection view you can see all of the artifacts in the selected collection. Within the Time to Live
column you will see the TTL policy assigned to that artifact.