Overview
Veri Volumes are named persistent storage you upload to once and reference from any number of training jobs. The worker mounts the volume at/mnt/<name> before training starts; your script reads files from the mount the same way it would read any local file.
Volumes solve three problems with the upload-per-job flow:
- Reuse. Upload your dataset once, reference it from 100 training jobs without re-uploading.
- Large datasets. Files stay on disk on the worker — no full materialization into Python memory, so multi-tens-of-GB datasets work on H100-class GPUs.
- Bring your own data. S3/SQL connect paths aren’t available; Volumes are the supported path for proprietary data that doesn’t live on HuggingFace.
When to use a Volume
Pick a Volume when any of the following is true:- You expect to run more than one training job against the same dataset.
- Your dataset is larger than a few GB.
- Your dataset isn’t public and isn’t on HuggingFace.
veri datasets upload) or HuggingFace connect (veri datasets connect-hf) paths are simpler.
Billing
Volume storage is measured from regular usage snapshots and billed from your account balance when applicable.Quickstart
1
Create a volume
^[a-zA-Z0-9][a-zA-Z0-9_-]{0,127}$. Re-running with the same name is idempotent — it returns the existing volume.2
Upload your dataset
upload-dir — up to 8 files transfer concurrently:3
Reference the volume in a training job
The SDK exposes a When the worker boots, it mounts
from_volume helper that creates a Dataset pointing at a file inside the volume:my-corpus at /mnt/my-corpus and reads /mnt/my-corpus/train.jsonl directly. No download to /tmp, no in-memory list materialization.Worker behavior
Before training starts, the worker:- Mints short-lived AWS credentials scoped to the volume’s S3 prefix (read-only, 30-minute TTL).
- Checks that the volume fits in available disk (refuses if it would consume more than 80% of free space — you’ll see
volume_too_large_for_nodein the job error and need a larger GPU SKU). - Syncs the prefix to
/mnt/<volume-name>usingaws s3 sync. - Verifies the post-sync file count and total bytes against what the control plane recorded. If a file silently dropped during sync, the job fails fast with
volume_sync_incompleterather than training on partial data.
Deletion
--yes, the CLI prompts for the volume name as a confirmation and shows the file count + total bytes that will be deleted. The DB row is dropped immediately; the S3 prefix is cleaned up by a background reconciler within a minute.
There is no time-based garbage collection. Volumes stay until you delete them — the monthly billing meter is what keeps storage bills aligned with what you actually use.
API + CLI references
CLI commands
veri volumes create / upload / list / deleteREST API
/v1/volumes endpoints including multipart upload init.
