TL;DR: SageMaker Savings Plans discount everything up to a committed $/hour — notebooks, training, processing, real-time endpoints — by ~20–64% depending on term and prepayment, and the discount follows you across instance types and regions. You pay the commitment whether you use it or not, with no refunds or cancellation, so the entire game is committing to your floor: 70–80% of the usage level you never drop below. Steady 24/7 inference is the textbook fit; bursty training is not (that's Spot's job).
The numbers
- Discount tiers: 1-year no-upfront ~20–30% · 1-year all-upfront ~30–45% · 3-year all-upfront up to 64%
- Worked example: a $12/hour 24/7 endpoint ($8,640/month On-Demand) with a $10/hour plan at ~40% off lands near $5,184/month — ~$41k/year saved from one purchase
- Field example: a recommendation engine on ml.g4dn 24/7 at ~$18k/month committed $12/hour partial-upfront (
42%) → **$91k/year saved** - Not covered: storage, data transfer, and anything outside SageMaker
Do this
-
Pull 3–6 months of SageMaker usage in Cost Explorer at daily granularity, split inference from training. Less history than that = don't commit yet.
-
Find the floor, not the average: the $/hour you never dip below, excluding spend that shouldn't be committed (Spot training, serverless, experiments).
-
Commit to 70–80% of that floor. Overage bills at On-Demand — leaving headroom costs a little upside; overcommitting costs real money monthly.
-
Verify AWS's recommendation, don't trust it — the console suggestion skews optimistic. Your floor math wins.
-
Layer, don't lump: commit at the steady inference baseline; keep training on Managed Spot (bigger discounts, zero commitment) and sporadic endpoints on serverless. Start small — you can stack additional plans later as the baseline grows.
-
Assign an owner in multi-team accounts to watch plan utilization; an unwatched commitment quietly drifts to waste as teams re-architect.
Gotchas
- No cancellation, no rollover, no refunds — unused commitment is paid in full. Measure twice.
- The mid-migration trap: one team committed $20/hour, then moved half their inference to Lambda three months later — and kept paying for compute they'd stopped using. Any re-platforming in flight = wait.
- Peak ≠ baseline: committing to current-quarter peak is the standard sizing error.
- Bursty, experiment-heavy usage (weeks of $5k training, then $500) has no floor worth committing to — Spot and On-Demand serve that shape better.
Skip this if
- You're still experimenting or have under ~3 months of stable production usage.
- Training dominates the bill and it's bursty — Spot saves more with zero lock-in.
- An architecture change is underway that alters your compute shape — commit after it lands. The one-question test: "will I burn at least this much SageMaker compute every hour for the next 1–3 years?" Anything but "yes" means smaller or later.