What "reserved vs on-demand" actually means in 2025
The phrase "reserved vs on-demand GPU pricing" collapses four different billing models that GPU clouds actually publish — and each has a different effective $/hr at the same GPU. Get the model wrong, and the procurement math falls apart.
- On-demand. The default contract — you rent per hour, you can leave at any time, and the rate sits 10–30% above spot for the SLA. This is what GPU clouds show on their pricing page as the headline rate. Example: H100 on Lambda at $2.49/hr on-demand.
- Reserved (1-year + 3-year). You commit to a fixed capacity block (typically 730 hr/yr minimum) at a discounted hourly rate. The discount is real but you owe the rate regardless of usage. Example: H100 on Lambda at $1.79/hr on a 1-year reserved contract — roughly 28% under on-demand for the same GPU.
- Spot / preemptible. Interruptible capacity sold at the market clearing price, often 50–70% below on-demand but with no SLA and short (sometimes minutes) preemption windows. Example: H100 spot at $1.49/hr on Vast.ai — the procurement baseline for fault-tolerant workloads.
- Savings Plans / Committed Use Discounts. Hyperscaler-specific (AWS Savings Plans, GCP CUDs, Azure Reservations) — you commit to $/hr spend, not capacity, and the discount tiers apply automatically across instance families. Functionally similar to reserved but less flexible on the GPU side.
The "reserved vs on-demand" headline discount looks compelling — 28–40% on H100, B200, and H200 across the major clouds. The actual decision hinges on whether your effective utilization rate (% of contracted hours you're actually consuming) clears the break-even threshold. Reserved is only cheaper per consumed hour if you actually consume the hours; otherwise you've paid for empty capacity. That makes the decision a workload-shape problem, not a pricing-page problem.
The one-line procurement rule
Reserve the floor of your workload (the slowest 20–65% of utilization you cannot pre-empt), burst the rest on spot. Don't reserve for projected peak — peak is where spot earns its discount. The Reserved Instance Advisor computes the right reserved-fraction per GPU × provider × term combination.
On-demand break-even math
The break-even formula is straightforward — and explains why most "is reserved worth it?" conversations end in a number, not a yes/no:
break_even_months = upfront_premium ÷ monthly_on_demand_savings
Where upfront_premium is the one-time fee or non-refundable prepay on the reserved contract, and monthly_on_demand_savings is (on-demand $/hr − reserved $/hr) × 730 hr/month. If your actual utilization exceeds the resulting number of months, reserved wins. If it falls short, on-demand wins.
Worked example — H100 on Lambda Labs:
- On-demand: $2.49/hr (no upfront) → $1,818/month at full 730 hr utilization.
- 1-year reserved (no upfront): $1.79/hr → $1,307/month at full utilization. Monthly savings: $511.
- Break-even: if there's a $0 upfront, the break-even is immediate — every consumed hour on the reserved rate saves $0.70 vs on-demand.
- Where it flips: if you only actually use 40% of the year (~292 hr/month), your effective on-demand $/hr stays $2.49 but your reserved rate stays a fixed $1.79 — you still pay $1.79 for 730 hr, vs $727 for 292 hr on-demand. Reserved costs more in absolute terms: $1,307 vs $727.
The same formula applies to A100 and B200, but the dollar magnitudes differ. A100 reserved-1yr runs ~25–35% under on-demand; B200 reserved-1yr runs ~20–30% under on-demand (and the absolute $/hr savings are larger because the rate is larger). The reference table below shows the % discount row so you can fold your own utilization assumption in: just multiply (utilization%) × (contracted hours) and compare to the spot pricing you'd fall back to.
The data convention (anti-hallucination protocol)
Every reserved and on-demand rate in the reference table below carries one of three states from /gpu-forward-pricing:
- Provider-native. A row in our
provider_native_ratessource set, verified against the provider's published pricing page on the date shown. This is the most authoritative state. - Estimated. A propagation from an adjacent verified rate (e.g., inferring H100 reserved-1yr on Crusoe from Crusoe's B200 reserved-1yr + 10% Blackwell premium). Carried with a helper note and a verification date stamp.
- Data pending. The cell is marked
data pendingwhen we have not independently verified the rate. We do not interpolate. The reserved-vs-on-demand spread for that row should be treated as unknown until verified.
The reference table below applies this honesty convention per-cell. The reserved-vs-on-demand spread column reports the percent savings when both cells are provider-native or estimated; rows where either cell is data pending skip the ratio and stay at "data pending" so the spread is never silently fabricated.
Workload categories that justify a commit (and the one that does not)
The classic procurement mistake is committing capacity to a workload that won't consume it. Below is the workload-shape rubric we use, sorted from "almost always right to reserve" to "almost never right to reserve":
Two compounding rules worth noting: model class matters — H100/A100 serving teams are typically the clearest reserve candidates because P50 inference traffic is steady, while B200/H200 reservation makes sense only at scale (typically 8+ GPU nodes) because the absolute savings on a single GPU don't justify the commit friction. Region matters — AWS reserved p5 is 15-20% cheaper in us-east-1 than eu-west-1, so the same utilization rate produces different effective TCO in different regions.
Reference table: on-demand vs 1-year reserved $/hr for H100, A100, B200 across 4-5 providers
The table below compares on-demand $/hr vs 1-year reserved $/hr for H100, A100-80GB, and B200 across CoreWeave, Lambda Labs, Crusoe Cloud, Vast.ai/RunPod, and AWS. Rates come from /gpu-forward-pricing's provider-native rows. Cells where we have not independently verified the current rate are marked data pending — we do not interpolate.
The 12-month savings column reports the percent reduction from on-demand to 1-year reserved for a 730 hr/yr utilization pattern. Reads "28%" means reserving that GPU for 730 hr/yr at that provider saves 28% vs running the same hours on-demand. Rows where either on-demand or reserved is data pending skip the ratio.
| GPU | Provider | On-demand $/hr | 1-yr reserved $/hr | 12-month savings % | Source |
|---|---|---|---|---|---|
| H100 (Hopper, 80GB HBM3) | Lambda Labs | $2.49 | $1.79 | ~28% | /gpu-forward-pricing row (Lambda H100) |
| H100 (Hopper, 80GB HBM3) | CoreWeave | $3.92 | $2.40 | ~39% | /gpu-forward-pricing row (CoreWeave H100) |
| H100 (Hopper, 80GB HBM3) | Vast.ai (spot) | $1.49 (spot) | data pending | data pending | Spot floor no formal 1-yr reserved |
| H100 (Hopper, 80GB HBM3) | RunPod | $2.49 | $1.89 | ~24% | /gpu-forward-pricing row (RunPod H100) |
| H100 (Hopper, 80GB HBM3) | AWS p5.48xlarge ÷8 | $4.10+ | $2.40+ | ~41% | AWS p5 reserved-1yr (8-GPU split) |
| A100-80GB (Ampere) | Lambda Labs | $1.29 | $0.99 | ~23% | /gpu-forward-pricing row (Lambda A100-80GB) |
| A100-80GB (Ampere) | CoreWeave | $2.70 | $1.79 | ~34% | /gpu-forward-pricing row (CoreWeave A100-80GB) |
| A100-80GB (Ampere) | RunPod | $2.59 | $1.99 | ~23% | /gpu-forward-pricing row (RunPod A100-80GB) |
| A100-80GB (Ampere) | Vast.ai (spot) | $0.42 (spot) | data pending | data pending | Spot floor no formal 1-yr reserved |
| A100-80GB (Ampere) | AWS p4de.24xlarge ÷8 | $5.12+ | data pending | data pending | AWS p4de on-demand (8-GPU split) |
| B200 (Blackwell, 192GB) | CoreWeave | $4.49 | $3.79 | ~16% | /gpu-forward-pricing row (CoreWeave B200) |
| B200 (Blackwell, 192GB) | Lambda Labs | $6.99 | data pending | data pending | /gpu-forward-pricing row (Lambda B200) |
| B200 (Blackwell, 192GB) | Crusoe Cloud | $4.99 | $4.29 | ~14% | /gpu-forward-pricing row (Crusoe B200) |
data pending rather than invent a number. B200 reserved rates are less standardized than H100/A100 because Blackwell supply is capacity-constrained; expect reserved-1yr pricing on B200 to widen or tighten through Q3-Q4 2026 as batch Blackwell deployments land.
Three things to read from the table:
- The % discount scales with provider size. AWS reserved delivers the largest headline % (41% on H100, well above Lambda's 28%) but at the highest absolute $/hr. The discount is generous on a percentage basis because on-demand pricing on AWS is a 2-3× premium over Lambda/CoreWeave; the math is "AWS on-demand inflated → AWS reserved moderate," not "AWS reserved legitimately cheaper per unit."
- Spot + reserve beats pure reserve on cost per consumed-hour for elastic workloads. H100 at $1.49/hr spot + 40-65% reserved gives a blended cost-per-hour of roughly $1.10-$1.20/hr on a workload that runs ~2,000 hr/yr. Pure 1-yr reserved at Lambda/CoreWeave ($1.79-$2.40/hr) loses this comparison when the workload is willing to accept spot preemption.
- B200 reserved is still emerging. Blackwell supply is constrained enough that providers are quoting reserved-1yr on a case-by-case basis — the cells where we have verified rows show ~14-16% discount, materially smaller than H100's 28-41%. If you're committing to B200 today, model the discounted $/hr against your pre-training run window closely.
Q3 2026 procurement takeaway
The reserved vs on-demand decision in Q3 2026 has the same shape as the H100 vs A100 inference decision: workload first, then within-workload optimization. Three rules that we've validated across the provider-native dataset:
Q3 2026 rule of thumb
If your workload clears the break-even by month 4, reserve. If it does not, stay on on-demand or mix reserved + spot. The Reserved Instance Advisor (/reserved-instance-advisor) processes the full per-provider × per-term matrix in /gpu-forward-pricing against your utilization assumption and recommends the right reserved-fraction. Cross-reference with the related GPU Forward Pricing Explained post for the 1m / 3m / 6m / 12m Kalshi-derived term ladder that the reservation trend signal is built from. For $/token context on H100 / A100 / B200 inference economics, see H100 vs A100 Inference Cost.
Frequently asked questions
What happens if my workload drops mid-term on a 1-year reserved GPU commit?
You still owe the contracted hourly rate for the full 730 hr/yr block — that's the structural tradeoff of a 1-year reserved commit. AWS, GCP, and Azure allow limited resale on their secondary marketplaces, but at a discount to face value. Specialized GPU clouds (CoreWeave, Lambda Labs, Crusoe Cloud) are stricter — there is no resale path, and you eat the full committed cost. Mitigation: start with a 1-year term rather than 3-year, validate sustained utilization at 60-70% for 2-3 billing cycles on on-demand, then add capacity in 3-month reserve increments rather than one big upfront commit. The Reserved Instance Advisor computes the per-provider break-even utilization rate so you can size the term to the workload, not the headroom.
Is a 3-year reserved commit worth it over 1-year in 2025?
Only if you are highly confident in 24/7 utilization for 36 months at the same or growing demand — typically large inference fleets or designated training clusters for a known multi-quarter roadmap. 3-year commits deliver ~15-25% deeper discount than 1-year on AWS and GCP, but they lock you out of migration to better-priced silicon. The realized cost of committing to A100 in 2024 when B200 prices fell in 2025 inflated the effective $/hr by 2-4× compared to a 1-year rolling strategy. For most teams, 1-year is the right default; 3-year earns its discount when you have a long-horizon workload model and a migration penalty that exceeds the additional discount.
Should I mix reserved and spot, or is spot-only cheaper?
Mixed is the right answer for most teams. Run a reserved baseline sized to your SLA-bound slowest-20-percent utilization (the floor of traffic you cannot pre-empt), and burst above that on spot. A pure spot strategy is 30-60% cheaper on a $/hr basis but exposes you to preemption on the exact hours you are most likely to be load-shedding — i.e., the wrong time to lose capacity. The Reserved Instance Advisor recommends the reserved baseline fraction (typically 40-65% of total capacity) for each GPU × provider × term combination based on your actual workload shape.
Run the break-even math on your workload
GridStackHub's calculator, optimizer, and reserved advisor all read from the same provider-native dataset this post is built on.