Skip to main content
Annotation sets group annotations together with versioning support. This enables reproducible training and iteration on your labels.

Why annotation sets?

Annotation sets provide:
  • Versioning: Track changes to your annotations over time
  • Immutability: Published sets cannot be modified, ensuring reproducibility
  • Iteration: Create new versions to improve labels without losing history

Draft vs Published

Annotation sets have two states:

Draft

  • Editable: Add, update, and delete annotations
  • Cannot train: Draft sets cannot be used for training
  • Use for: Active labeling, experimentation

Published

  • Immutable: No changes allowed
  • Can train: Required for training models
  • Use for: Final labels, reproducible experiments

Creating annotation sets

Create a new draft annotation set:
Python
Version numbers auto-increment: v1, v2, v3, etc.

Listing annotation sets

Python
Output:

Publishing

Publish a set to lock it for training:
Python
When publishing:
  1. Statistics are computed (total annotations, duration by type, etc.)
  2. The set is locked from further edits
  3. The set becomes available for training
Publishing is irreversible. If you need to make changes, create a new annotation set.

Annotation set statistics

Published sets include computed statistics:

Iteration workflow

A typical workflow for improving annotations:

Creating a new version

When you need to update labels:
  1. Create a new annotation set (starts as draft)
  2. Copy annotations from previous version (if desired)
  3. Add, edit, or delete annotations
  4. Publish when ready
Python

Deleting annotation sets

Only draft sets can be deleted:
Python
Published annotation sets cannot be deleted because they may be referenced by trained models.

Best practices

Don’t publish too early

Keep sets in draft while actively labeling:
  • Run quality checks before publishing
  • Have another person review labels
  • Verify coverage across all artifact types

Track what changed

When creating new versions, document the changes:
Python

One set per training run

Use one published annotation set per training job:
  • Makes it clear which labels produced which model
  • Enables comparison between different labeling approaches
  • Supports A/B testing of different annotation strategies