Volumes are in beta for Hosted RL and Hosted SFT.
Legacy staging is being retired; volumes work the same on every cluster.
What you can do with and without a cluster allocation
On-demand training is in beta and needs beta access for your account or team. On demand, a volume works only on GPU types whose clusters support shared storage. On any other GPU type, the run is refused with a message that names the type. Pick another GPU type with
--gpu-type, or run without --volume.
Shells need a cluster allocation for your account or team, or a cluster your team owns. On-demand capacity alone doesn’t include SSH. Personal accounts can’t own clusters, so they need an allocation. Ask Prime support if you need one.
Quickstart
Install and log in to Prime CLI 0.11.0 or later. Volumes use the team set in your CLI (prime config set-team-id <team-id>). With no team set, they belong to your personal account.
1
Create a volume
2
Upload a dataset
datasets/my-data on the volume. Training runs see it at /volume/datasets/my-data.3
Optional: open a shell on the volume
Needs a cluster allocation or a cluster your team owns and an SSH key.After editing, exit the shell, run
prime volumes stop research <session-id>, and wait for the final sync. Exiting alone leaves the session open and blocks training on the volume.4
Train with the volume
Add a checkpoint configuration to save weights, then:
5
Download your checkpoints
Wait for the run to end and its volume sync to finish, then:
6
Delete the volume when you're done
Things to know
- Each run writes checkpoints under
runs/<runId>/checkpoints/. Previous runs are visible in the next run or shell at/volume/runs/. Directputuploads toruns/are refused. - A volume has one writer at a time: a training run, a read-write shell, or an upload. Wait for that writer to finish syncing before starting another. Read-only shells can coexist with a writer, but see the last saved copy.
- Changes made by a run or shell reach cloud storage when it ends. There is no periodic sync. Downloads during a run can return the previous saved contents.
- Each run gets a disk the size of your volume. It must fit the whole volume, including earlier runs, plus new checkpoints. See Choose a size.
Create a volume
Names use 1 to 40 lowercase letters, digits, and hyphens, and start and end with a letter or digit. The default size is5Ti, and the maximum is 20Ti.
create also starts a read-only shell session in the background. That session stops after 30 minutes of no use. Pass --no-warm to skip it.
List your volumes:
-o json for JSON output.
Upload data
put uploads a file or folder. Paths on the volume start at its root:
- A trailing
/on the volume path means “into this folder”. - A trailing
/on a local folder copies what’s inside it, not the folder itself. - Volume paths can use letters, digits, and
._-@%+=,:. For other names, use a shell. - Symlinks inside a folder are skipped.
- You can’t upload to
runs/.
put can upload through it instead; those changes reach cloud storage when you end the session.
Download data
get can read ordinary files through your own read-write shell, but downloads under runs/ always use cloud storage.
Open a shell on your volume
A shell is handy for downloading data on the cluster’s fast network (for example, withhf download), or for looking around and editing files. It needs a cluster allocation or a cluster your team owns and an SSH key.
runs/, and you find it at /volume. A large volume takes a while to copy. The session becomes ready after the download completes.
- Read-write: changes are saved back when the session ends. Files you delete in the shell are deleted from cloud storage too. A training run or another read-write shell holds the writer lock until its final sync completes.
- Read-only: nothing is saved back. These sessions can coexist with a writer, subject to the session limit. They read the saved contents from when the session started.
Set up your SSH key
Shells accept one key: your account’s primary SSH key. The CLI must point at the matching private key.1
Get a key pair
Use an existing pair, or create one:
2
Add the public key to your account
Open Dashboard → Tokens → SSH Keys and paste the contents of
~/.ssh/id_ed25519.pub. A new key becomes your primary key. To switch later, click Set Primary on another key.3
Point the CLI at the private key
~/.ssh/id_rsa. prime volumes ssh prints Using SSH key: <path> before it connects.chmod 600 on it, and point prime config set-ssh-key-path at it. Once you add your own key, the system-generated key stops working for shells.
Use a volume in a training run
Pass--volume to a Hosted RL or Hosted SFT run:
volume = "research" at the top of the TOML, before any tables. If the volume doesn’t exist, the CLI creates it. Use --volume-size to choose its size.
When the run starts, the whole volume is downloaded and mounted read-write at /volume. For example, a Hosted SFT data.name = "datasets/my-data" reads /volume/datasets/my-data. Earlier outputs are available under /volume/runs/. The run’s changes are saved to cloud storage when it ends, after the training pods stop. The final sync runs when the run completes, stops, fails, or pauses, so checkpoints survive prime train stop and crashes.
End any read-write shell and wait for its final sync before launching the run. A training run holds the volume’s writer lock until its own sync completes.
Train from weights already on the volume
Both Hosted SFT and RL runs can load Hugging Face-format model weights from an absolute/volume/... path. Set [model].name in a Hosted SFT config, or set the shared [model].name in an RL config with [trainer] and [orchestrator] blocks:
Checkpoint settings
Checkpointing is off unless you add[ckpt]. An empty [ckpt] block saves the final checkpoint; set interval to save during training too:
If you set only
keep_interval, the final checkpoint can be pruned when its step is not a multiple of that interval. Set keep_last to at least 1 to keep the final checkpoint too.
Neither
keep_interval nor keep_last is required. All files on /volume are synced when the run ends. RL runs write checkpoints, logs, and other run outputs there. Hosted runs currently do not save the resolved config needed for checkpoint conversion. Hosted SFT writes checkpoints there; its other outputs remain on the run’s scratch disk.Get your checkpoints back
Each run saves its checkpoints toruns/<runId>/checkpoints/step_<N>/:
trainer/.metadata. To load checkpoints outside Prime, convert them first: see Export to HF format.
Choose a size
Each run gets a disk the size of your volume. It must fit:- all existing files, including datasets, models, and earlier
runs/outputs, plus keep_last + 1checkpoints (the run writes a new one before it deletes the oldest), plus- about 20% extra.
keep_last + 1 estimate assumes keep_last is set and keep_interval is unset. If you also preserve checkpoints with keep_interval, include those extra checkpoints. Without retention limits, size for every checkpoint the run saves.
A full fine-tuning checkpoint is about 11–12 bytes per parameter (measured: ~341 GB for a 30B save, ~7.2 GB for a 0.6B save):
For example, Qwen3-30B-A3B with
keep_last = 2 holds up to 3 checkpoints, about 1 TB. With 20% extra and your datasets, use 1.5Ti. On 200Gi, even the first checkpoint doesn’t fit.
ckpt.skip_optimizer = true doesn’t make checkpoints smaller.
For the full sizing formula, the peak checkpoint count, and how to fix a run that fails with Disk quota exceeded, see Volume capacity.
Check disk usage
prime volumes du (CLI 0.13.0 or later) shows how much of the volume’s saved contents is in use. It reads cloud storage, so a live run’s or session’s changes appear only after it ends and syncs.
Make a volume bigger
20Ti but can’t shrink. Runs and shells already going keep their old size. New ones get the new size.
Delete a volume
--yes to skip the confirmation. Only team admins can delete team volumes.
You can’t delete a volume while a run uses it, a shell is open on it, or an upload is running. Stop the run (prime train stop <runId>) or the shell (prime volumes stop), then try again. If the status shows DELETE FAILED, run prime volumes delete again.