The same GPU, 30–53% less, with one condition.
Spot capacity is hardware that is installed, idle and not reserved by anyone. You get it at a fraction of the on-demand price; we get the right to take it back with 2 minutes of notice. Everything else — the node, the image, the disk, the network, the API — is identical.
- Discount
- 30–53%Against our own on-demand price, per model
- Notice
- 2minMetadata endpoint, webhook and console, at once
- Your disk
- KeptThe instance is stopped, never deleted
- Billing
- Per minuteStops at the reclaim, nothing is billed after
What we promise, and what we keep the right to do.
Spot pricing only works if the interruption is predictable. Ours is written down.
What we promise
- 2 minutes of notice before every planned reclaim, on three channels at once
- A stop, not a deletion. Disk, data, IP and configuration survive
- A fixed published price per model — no bidding, no surge
- Published reclaim rates per model, over the trailing 30 days
- Per-minute billing that stops the second the instance does
What we keep the right to do
- Reclaim any spot instance, at any hour, after the notice
- Reclaim several of your instances at once if a whole node is needed
- Refuse a relaunch while no capacity of that model is free
- Change the published spot price for future instances, never for a running one
No uptime target applies to spot. If your workload needs one, the on-demand tier carries the 99.9% monthly target in the SLA.
An interruption is a sequence you can code against.
Nothing here is a surprise to a job that polls the metadata endpoint. This is the exact order of events, with the times we commit to.
- Three channels, one momentThe notice is written to
/v1/noticeinside the instance, POSTed to your webhook and shown in the console simultaneously. Poll the endpoint every 5 to 15 seconds. - 2 minutes is enough for a checkpointA 70B checkpoint written to a persistent disk takes well under a minute. The window is sized for the write, plus a margin for a clean shutdown.
- Relaunch is a flag, not a scriptTurn on auto-relaunch and the same disk and image are queued for the next free GPU of that model. Or switch the disk to on-demand in one click.
- Instance runningTraining loop, checkpoint every 10 minutes to the persistent disk.T−12:00
- Reclaim notice published
GET /v1/noticeflips to{"reclaim_in": 120}; the webhook fires; the console shows a banner.T−02:00 - Your handler runsFlush a final checkpoint, close files, upload anything that must leave the node.T−01:40
- Instance stoppedCompute billing ends here. Disk, IP and template stay attached to the stopped instance.T−00:00
- Auto-relaunch on the next free capacityOptional. Same disk, same image; your entrypoint resumes from the last checkpoint.T+04:10
- Or: switch to on-demandOne click. Same disk on an instance that is never reclaimed, at $0.89 an hour.any time
How often it actually happens, per model.
Share of spot instances of each model reclaimed over the trailing 30 days. A rate below 5% means fewer than one interruption per twenty instance-days.
| 30-day reclaim rate | Models | Examples | Cheapest spot in the group |
|---|---|---|---|
| <5%Under one interruption per 20 instance-days | 24 | MI300X, H100, H100 NVL, H100 PCIe, A100 and 19 more | $0.03RTX A4000 |
| 5–10%Higher demand, plan for a resume | 9 | B200, MI325X, H200, H200 NVL, GH200 and 4 more | $0.08RTX PRO 4000 |
| 10–15%Higher demand, plan for a resume | 10 | RTX 5090, RTX 3090 Ti, RTX 4070 Ti SUPER, RTX 4080, RTX 4080 SUPER and 5 more | $0.05RTX 4070 Ti |
| 15–20%Higher demand, plan for a resume | 4 | RTX 3080 Ti, RTX 4070, RTX 3070, RTX 3080 | $0.03RTX 3080 |
Rates are measured, not promised: they move with demand. The number shown on each model page is the one used to decide whether a job belongs on spot.
Three ordinary jobs on an H100.
Compute only, at today's catalogue prices, billed per minute. The last column is what the same hours would cost at the cheapest on-demand rate we found anywhere else.
| Job | GPUs | GPU-hours | On spot | On-demand | You keep | Cheapest elsewhere |
|---|---|---|---|---|---|---|
| A 12-hour fine-tuneH100 SXM | 1× | 12 | $6.60 | $10.68 | $4.08 | $13.80 |
| A week of batch inference, 8 h a dayH100 SXM | 2× | 112 | $61.60 | $99.68 | $38.08 | $128.80 |
| A 3-day hyperparameter sweepH100 SXM | 4× | 288 | $158.40 | $256.32 | $97.92 | $331.20 |
Storage is excluded: a persistent disk costs $0.08 per GB-month whichever tier you run on. Run your own numbers.
A job that survives a reclaim is twenty lines of work.
The pattern is always the same: write state you can resume from, watch the notice, exit cleanly. The rest is the platform's problem.
-
Checkpoint to the persistent disk
Not to local NVMe, which is wiped with the instance. A checkpoint every few minutes costs a fraction of a percent of throughput and caps what an interruption can take from you.
-
Watch the notice
Poll
/v1/noticefrom inside the instance, or receive the webhook in your scheduler. Both fire 2 minutes before the stop. -
Resume, do not restart
Your entrypoint should look for the newest checkpoint and continue from it. With auto-relaunch on, the platform gives you the same disk on the next free GPU.
# Poll the metadata endpoint and checkpoint when a reclaim is announced. import time, requests, torch NOTICE = "http://169.254.169.254/v1/notice" def watch(model, optimizer, path): while True: r = requests.get(NOTICE, timeout=2).json() if r.get("reclaim_in") is not None: torch.save({"model": model.state_dict(), "optim": optimizer.state_dict()}, path) print("checkpoint written, %ds left" % r["reclaim_in"]) return time.sleep(10)
Hugging Face Trainer, PyTorch Lightning, Axolotl and Unsloth all write checkpoints on a schedule and resume from the newest one. Point their output directory at the persistent disk and the job is spot-ready with no code at all.
What belongs on spot, and what does not.
Run it on spot
Training and fine-tuning with checkpoints · batch and offline inference · embedding and evaluation runs · hyperparameter sweeps · rendering and simulation · data processing · CI and test pipelines · anything queued that can retry.
Run it on-demand
Production APIs with a latency budget · interactive sessions you cannot lose · a demo at a fixed hour · the last run before a deadline · anything where 2 minutes of warning is not enough to move the work elsewhere.
On-demand instancesA small on-demand baseline serves traffic without interruption; spot capacity absorbs everything that can wait a few minutes — the nightly fine-tune, the batch job, the sweep. Same images, same disks, same API, one bill.
Spot instances, in detail
How much notice do I really get?
2 minutes, every time. The notice appears on the instance metadata endpoint, is sent to your webhook and is shown in the console at the same moment. It is not best effort: the stop is scheduled 2 minutes after the notice is published.
What exactly happens at the end of the notice?
The instance is stopped, the way a machine is powered off after a clean shutdown signal. It is never deleted. The persistent disk stays attached with all its data, the reserved IP stays assigned, the template and the instance configuration are kept. Compute billing stops at that moment.
Can I be interrupted twice in a row?
Yes — capacity is capacity. If your job is set to relaunch automatically it will restart on the next free GPU, which may itself be reclaimed later. Jobs that checkpoint every few minutes barely notice; jobs that checkpoint once an hour lose up to an hour of work each time.
Is the spot price fixed, or does it move like an auction?
Fixed. Our spot price is a published rate per model, not a bid. You always know what an hour costs before you start it, and you are never outbid by someone paying more.
Does a reclaim cost me anything?
No. The 2 minutes of notice are billed like any other running minutes, the stop itself is not billed, and there is no penalty. If the instance never became reachable, nothing is billed at all.
How do I make sure I never get interrupted?
Run on the on-demand tier, which is never reclaimed, or reserve capacity for a month or more. Both use the same images and the same disks, so moving a workload between tiers is a configuration change, not a migration.
Do you reclaim during the first minutes of a job?
We avoid it: the scheduler prefers to take capacity from instances that have been running longest, so a job that just started is the last candidate. It is a preference, not a guarantee — plan for the notice in any case.
What are the published reclaim rates based on?
The share of spot instances of that model that were reclaimed over the trailing 30 days, recomputed with the catalogue. A rate below 5% means fewer than one interruption per twenty instance-days.
Designing a job around interruptions? The handling guide has the payloads and the retry patterns.
Start a spot H100 for $0.55 an hour.
Pay as you go — no contracts, no minimum commitment. Add credit, launch, stop whenever you want.
Billed per minute from the moment the instance is reachable. Minimum credit $40, no subscription.