Dataset Buckets#

Register external cloud storage buckets (S3, GCS, Azure) with OSMO to organize datasets across multiple storage locations (This configuration is optional)

Why Use Dataset Buckets?#

Multiple dataset buckets provide flexible data management for OSMO datasets:

✓ Automatic Deduplication

Content-addressed storage means identical files are stored only once across versions, saving storage costs and transfer time.

✓ Version Control

Full version history for datasets—track changes, rollback to previous versions, and maintain reproducible workflows.

✓ Organize by Team or Project

Separate datasets across different buckets for access control, billing, or organizational boundaries.

✓ Use Existing Infrastructure

Register pre-existing S3/GCS/Azure buckets without migrating data—integrate seamlessly with existing storage.

✓ Multi-Cloud Support

Mix storage providers (AWS S3, Google Cloud Storage, Azure Blob) in the same OSMO deployment.

✓ Simplified References

Use short names (e.g., production/model-v2) instead of full URIs (s3://long-bucket-name/model-v2).

✓ Persistent & Shareable

Datasets persist beyond workflow execution and can be shared across workflows, teams, and accessed via CLI, workflows, or Web UI.

How It Works#

Bucket Registration#

1. Register Bucket 🪣

Add cloud storage

2. Set Default ⭐

Choose primary bucket

3. Use in Workflows 🔗

Reference datasets

Bucket Naming#

Once registered with a bucket name (say production), datasets in that bucket are referenced as:

  • production/imagenet

  • production/resnet50

If the bucket is set as the default bucket, datasets can be referenced without the bucket name prefix:

  • imagenet

  • resnet50

Practical Guide#

Registering Buckets#

Step 1: Register Single Bucket

Add your first cloud storage bucket:

$ cat << EOF > /tmp/dataset_config.json
{
  "buckets": {
    "production": {
      "dataset_path": "s3://my-production-bucket"
    }
  }
}
EOF

$ osmo config update DATASET --file /tmp/dataset_config.json

Step 2: Register Multiple Buckets

Add buckets from different cloud providers:

$ cat << EOF > /tmp/dataset_config.json
{
  "buckets": {
    "production": {
      "dataset_path": "s3://prod-datasets"
    },
    "staging": {
      "dataset_path": "s3://staging-datasets"
    },
    "research": {
      "dataset_path": "gs://research-bucket"
    },
    "archive": {
      "dataset_path": "azure://archive-storage"
    }
  }
}
EOF

$ osmo config update DATASET --file /tmp/dataset_config.json

Step 3: Set Default Bucket

Designate one bucket as the default (users can omit the bucket name prefix):

$ cat << EOF > /tmp/default_bucket_config.json
{
  "default_bucket": "production"
}
EOF

$ osmo config update DATASET --file /tmp/default_bucket_config.json

Step 4: Verify Configuration

List all registered buckets:

$ osmo bucket list

Bucket               Location
============================================
production (default) s3://prod-datasets
staging              s3://staging-datasets
research             gs://research-bucket
archive              azure://archive-storage

Usage Examples#

Team-Based Buckets

Separate datasets by team or department:

{
  "buckets": {
    "robotics": {
      "dataset_path": "s3://robotics-team-data"
    },
    "ml-research": {
      "dataset_path": "s3://ml-research-data"
    },
    "engineering": {
      "dataset_path": "s3://engineering-shared"
    }
  },
  "default_bucket": "robotics"
}

Workflow Usage:

inputs:
  - robotics/sim-data-2024      # Robotics team bucket
  - ml-research/models          # ML research bucket
  - synthetic-data              # Default bucket (robotics)
Environment-Based Buckets

Organize by development stage:

{
  "buckets": {
    "dev": {
      "dataset_path": "s3://dev-datasets"
    },
    "staging": {
      "dataset_path": "s3://staging-datasets"
    },
    "production": {
      "dataset_path": "s3://prod-datasets"
    }
  },
  "default_bucket": "dev"
}
Multi-Cloud Buckets

Mix storage providers:

{
  "buckets": {
    "aws-main": {
      "dataset_path": "s3://primary-storage"
    },
    "gcp-backup": {
      "dataset_path": "gs://backup-datasets"
    },
    "azure-archive": {
      "dataset_path": "azure://cold-storage"
    }
  },
  "default_bucket": "aws-main"
}

Troubleshooting#

Bucket Not Found
  • Verify bucket name matches exactly (case-sensitive)

  • Check bucket was added before workflow submission

  • Run osmo bucket list to see all registered buckets

Access Denied Errors
  • Ensure OSMO service has IAM credentials for the bucket

  • Verify bucket permissions allow read/write operations

  • Check bucket region matches OSMO cluster region

Default Bucket Not Working
  • Confirm default_bucket name matches a registered bucket

  • Verify configuration was applied: osmo config get DATASET

  • Check workflows use correct dataset reference format

Tip

Best Practices

  • Use descriptive bucket names (team, project, or environment)

  • Set a default bucket for the most common use case

  • Document bucket purposes and access policies for teams

  • Use separate buckets for production vs. development data

  • Consider data locality (bucket region near compute)

  • Review and clean up unused buckets quarterly

Note

Supported storage protocols:
  • s3:// (AWS S3)

  • gs:// (Google Cloud Storage)

  • azure:// (Azure Blob Storage)

See also

  • Learn more about datasets in OSMO at Datasets