, , ,

What a GPU cluster really costs, and how to cut it

Cost per useful GPU-hour, chargeback by allocation or by use, four savings levers and the buy-versus-rent break-even, worked through for 16 H100s shared by three teams. With a live calculator.

What a GPU cluster really costs: $3.00 list price versus $6.38 per useful GPU-hour

AI infrastructure · Kubernetes · GPU FinOps · Chargeback

Every earlier part of this series ends in the same place: GPUs that are allocated but not working. This post puts a price on it. Using a realistic example of 16 H100s shared by three teams, it shows the one number to track, how to split the bill between teams, what actually saves money, and when buying your own GPUs beats renting them. Every number comes from the live calculator, where you can change the assumptions.

Try it: GPU Cost Lab

Switch between cloud on-demand, reserved and owned. See each team’s bill, how much pays for idle GPUs, what each saving is worth, and when owning breaks even. Change any assumption.

Open the calculator →

The one numberCost per useful GPU-hour

The price list says what one GPU-hour costs. What you actually pay is the bill divided by the GPU-hours that did real work. In the example, renting on demand at $3.00 an hour:

Price you see$3.00per GPU-hour, on the invoice
vs
Price you pay$6.38per GPU-hour that did work, because half the paid hours were idle

Track this number per team and for the whole cluster. If it is more than double the list price, you have an idle problem, not a pricing problem, and no discount will fix it.

Where the money goes

43% working
49% allocated, idle
8%
GPU time doing workheld by a pod, doing nothingnot allocated

Research holds 8 GPUs at 62% busy. Product holds 6 for its chatbot at 35% busy, because it is sized for the evening peak. Platform’s notebooks hold 2 GPUs at 12% busy. That idle half costs about $17,000 a month on demand.

Paying for itThree ways to pay, three different rules

Cloud on demand$3.00 / GPU-hr

You pay for hours a GPU is allocated. Release it and the meter stops. GPU clouds charge roughly $2 to $4 for an H100; the big hyperscalers usually charge more.

You pay when: a pod holds the GPU, busy or not.
Cloud reserved$1.80 / GPU-hr

A 1 to 3 year commitment for a lower rate. Here, 40% off. The catch: you pay every hour of the term, used or not.

You pay when: always.
Own the servers$1.67 / GPU-hr

Buy two 8-GPU servers, then pay for power, rack space and people. Cheapest per hour, but only if the GPUs stay busy for years.

You pay when: always, plus the purchase up front.

Where the $1.67 comes from

hardware
power
rack
people
$5,000hardware: $240,000 server written off over 48 months
$1,251power: 10.2 kW at $0.12/kWh, cooling overhead 1.4×
$1,500rack space and network in a data centre
$2,000share of the people who run it
Per 8-GPU server per month: $9,751, or $1.67 per GPU-hour if every hour is used.

Buy or rentThe break-even is about utilisation, not price

Owning costs $1.67 per hour whether the GPU is busy or not. Renting on demand costs $3.00, but only for hours you hold. So owning wins when you hold the GPUs more than 1.67 ÷ 3.00, which is about 56% of the time. In the example the teams hold them 93% of the time, so owning pays for itself in about 21 months.

$0$0.5M$1.0M$1.5M start12 mo24 mo36 mo48 mo break-even ≈ month 21 own rent

Owning starts with $480,000 of hardware, then about $9,500 a month to run. Renting at this usage is about $32,400 a month. If usage fell below about 56%, the red line would stay under the black one.

Reserved capacity behaves like owning. You pay every hour, so the same rule applies: it only beats on-demand if you keep the GPUs busy. Commit to the base load you are sure of and rent the peaks.

Splitting the billChargeback: by allocation or by use?

RecommendedBy allocation

Each team pays for every GPU-hour it held, busy or not. Idle GPUs show up on the bill of the team holding them, which is the incentive to give them back.

Research$16,644
Product$13,140
Platform$2,628
Use with careBy actual use

The whole bill is split by GPU-hours that did work. Feels fair to light users, but a team holding idle GPUs pays almost nothing for them, so nothing changes.

Research$21,956
Product$9,785
Platform$671

Start with showback: send each team its number every month without moving money. Most of the savings come from teams simply seeing their idle hours.

Measuring it from your own cluster

You already have the data from part 1. Allocated hours come from kube-state-metrics, useful hours from the DCGM exporter:

# GPU-hours allocated per namespace over 30 days
sum by (namespace) (
  sum_over_time(kube_pod_container_resource_requests{resource="nvidia_com_gpu"}[30d:5m])
) * 5 / 60

# GPU-hours of real work per namespace over 30 days
sum by (namespace) (
  sum_over_time((DCGM_FI_DEV_GPU_UTIL{namespace!=""} / 100)[30d:5m])
) * 5 / 60

Multiply each by your hourly rate. Tools such as OpenCost and Kubecost can do this allocation for you, including GPUs, if you would rather not build it.

Cutting itFour levers, worth this much

Values for the example cluster on demand, each lever on its own:

Scale inference with trafficFewer replicas at night and weekends, using the autoscaling covered next in the series.
$4,993per month
Share light work on one GPUTime-slicing or MIG for notebooks and tests, from part 4.
$1,971per month
Reclaim idle notebooksStop GPU notebooks that have been idle for two hours.
$1,314per month
Queue jobs with KueueNo half-started jobs holding GPUs, from part 5. Same bill, more work done.
−$0.63per useful GPU-hour
On owned or reserved GPUs the bill does not drop. The same levers free GPUs instead. In the example they free about one GPU’s worth of capacity, which is the next project you do not have to buy hardware for.
Before you call it done
  • You report cost per useful GPU-hour, not just the total bill.
  • Every team gets a monthly showback with its idle hours in dollars.
  • Idle notebooks and dev pods are stopped automatically.
  • Inference scales down when traffic drops.
  • Reserved or owned capacity covers only the base load you are sure of.
  • Before buying hardware, you checked that utilisation will stay above the break-even.
Put in your own numbers

Open GPU Cost Lab, enter your real rate or server price, and switch on the levers to see what each one is worth for you.

Open the calculator →

The series so far: monitoring, logging, node lifecycle, sharing, scheduling and this post on cost. Next: autoscaling inference.

About The Author


Discover more from Journal of Intelligent Infrastructure

Subscribe to get the latest posts sent to your email.

Leave a Reply

Your email address will not be published. Required fields are marked *

Architect’s Toolkit

About the Author

Dr. Pranay Jha is a Cloud and AI Consultant with 18+ years of experience in hybrid cloud, virtualization, and enterprise infrastructure transformation. He specializes in VMware technologies, multi-cloud strategy, and Generative AI solutions. He holds a PhD in Computer Applications with research focused on Cloud and AI, has published multiple research papers, and has been a VMware vExpert since 2016 and a VMUG Community Leader.

Discover more from Journal of Intelligent Infrastructure

Subscribe now to keep reading and get access to the full archive.

Continue reading