What Is a GPU Hour? How Cloud GPU Billing Works

A GPU-hour is one GPU used for one hour. Learn how providers meter it, what the price leaves out, and how to estimate a job's cost from live prices.

By Faiz Ahmed
9 min read

A GPU-hour is one GPU rented for one hour. An eight-GPU node running for one hour is eight GPU-hours, and so is one GPU running for eight hours. It is the unit almost every GPU cloud prices in, so if you can count GPU-hours you can estimate any job.

Here are current prices in that unit. Every price on this site is normalised to one GPU for one hour.

GPUCheapest $/GPU-hrProviderProviders in stock
RTX 4090$0.74RunPod3
L4$0.49RunPod2
A100$0.68LeaderGPU6
H100$2.50Hyperstack12
H200$3.43QuantaCloud5
B200$3.75Packet.ai1
Cheapest in-stock on-demand price per GPU-hour, from providers with live stock tracking. Latest stock observation: .

"Current" means an in-stock, on-demand offer, seen in the last 15 minutes, from a provider whose stock we track live. Stock is rechecked about every minute.

Per GPU or per instance: the normalisation trap

Providers publish prices in two ways. Some quote per GPU. Lambda's price list, for example, is per GPU per hour even for its eight-GPU instances. Others quote per instance. Replicate lists its multi-GPU hardware as bundles of two, four or eight GPUs, each with one price for the whole bundle. Hyperscaler instances work the same way: the AWS p5.48xlarge and the Google Cloud a3-highgpu-8g are each one machine with eight H100 GPUs and one hourly price.

Put those two numbers next to each other and the per-instance price looks eight times worse than it is. The fix is one division.

Say provider A lists an eight-GPU node at a price of X per hour, and provider B lists the same GPU at Y per GPU per hour. The numbers to compare are X ÷ 8 and Y. If you need all eight GPUs, you can also go the other way and compare X with 8 × Y. Either works. Mixing them does not.

That is why a comparison site has to normalise, and this one does. An eight-GPU instance in our data is shown at its price divided by eight, next to single-GPU offers, so every row in every table is a price per GPU-hour.

Two things survive normalisation, and you should keep them in mind:

  • You may not be able to buy one. A per-GPU price taken from an eight-GPU node is only available if you rent all eight. The minimum purchase is the instance, not the GPU.
  • The rest of the machine differs. A GPU-hour comes with some share of CPU, RAM and disk, and the share varies by provider. On Vast.ai, the docs say the GPU is exclusive to you while CPU, RAM and storage are a proportional share of the host.

The time unit needs the same care. Serverless platforms often quote per second, and Baseten quotes per minute. Multiply a per-second price by 3,600, or a per-minute price by 60, to get a price per GPU-hour. For example, Modal listed an H100 at $0.001097 per second on 21 September 2026. Times 3,600, that is about $3.95 per GPU-hour. Hold that thought, because Modal's number comes back in the section on what a price leaves out.

Billing increments by provider

The price is per hour. The meter usually is not. The increment decides what a short job costs: on a one-minute meter, a 20-second job pays for a minute.

Each row below is what the provider's own documentation or price page said on 21 September 2026.

Provider and productMetering as documented
RunPod Pods"billed by the second for compute and storage"
RunPod ServerlessFrom when a worker starts until it fully stops, "rounded up to the nearest second". Start-up time and the idle timeout (default 5 seconds) are billed
Vast.ai"Billed by the second for actual usage"
Lambda on-demand instances"billed in one-minute increments", for as long as the instance runs, "regardless if they're actively being used"
Lambda 1-Click ClustersPriced per GPU per hour, "billed in weekly increments"
ModalPriced per second
Cerebrium"billed by the second"
Beam"billed by the millisecond"
ReplicatePriced per second
Koyeb"accounted per second", with billing "rounded up to the nearest unit"
Baseten"down to the minute"
Hugging Face Inference EndpointsShown by the hour, but "the actual cost is calculated by the minute"
Google Cloud Run GPUsThe whole instance lifetime, "with a minimum of 1 minute", rounded up to the nearest 100 milliseconds
Hetzner dedicated GPU serversHourly, up to a monthly maximum
Latitude.sh bare metalHourly, monthly or yearly

The increment matters most for short, bursty work such as serving an API. For a training run that lasts hours, the difference between a second and a minute is noise. For short jobs, also check whether start-up time is billed: on RunPod Serverless it is, as the table shows.

One more rule to know before your first launch: RunPod's docs say you need at least one hour's worth of credits for your chosen configuration to deploy an on-demand pod. Per-second billing does not mean a per-second deposit.

What a GPU-hour price leaves out

The GPU-hour price covers the GPU while the instance runs. These are the usual extras.

Storage, including while stopped. Stopping an instance stops the GPU charge, not the disk charge. Vast.ai's docs say "Storage charges continue even when instances are stopped. Delete instances completely to cease storage billing." On 21 September 2026 RunPod charged $0.10 per GB per month for a running pod's volume and $0.20 per GB per month once the pod is stopped, so parking a pod doubles its storage rate. Lambda has no stop at all: instances "can only be launched, restarted, or terminated", and its persistent filesystems bill "as long as a filesystem exists, even if it's not mounted to an instance".

Data egress. Some providers charge nothing: RunPod documents "no fees for data ingress or egress", and Lambda says "you are not charged for ingress or egress". On Vast.ai, "Data transfer costs vary by host and include both upload and download traffic". Hyperscaler egress is a topic of its own. Our data egress reference has the details.

CPU and RAM on some serverless platforms. This is the one that catches people. Modal's price page lists CPU cores and memory as separate per-second lines, charged in addition to the GPU. Cerebrium, Beam and Google Cloud Run GPUs also price CPU and memory as separate lines. Koyeb goes the other way: its instance price includes vCPU, RAM and disk. So the $3.95 Modal figure above is a GPU-only price. Modal's page also applies a multiplier of 1.15 to 1.75 times for choosing a region and 3 times for non-preemptible execution, so the headline is the floor, not the bill.

Idle time you asked for. Keeping a serverless worker warm is billed. RunPod's docs say "Active workers incur charges continuously, including when idle."

Tax. Lambda's price list says prices are "plus applicable sales tax/VAT/GST".

The estimating formula

GPU-hours = number of GPUs × hours running

Compute cost = GPU-hours × price per GPU-hour

Hours means wall-clock hours the instance is up and billed, including setup, downloads and the time you spend debugging. It does not mean hours of useful compute.

A worked example. You plan to fine-tune on four GPUs, and a test run suggests six hours. That is 4 × 6 = 24 GPU-hours. Call the live price per GPU-hour P. The compute cost is 24 × P. Take P from the table at the top of this page for your GPU, and check that the provider behind it rents that GPU in groups of four.

Then add the extras:

  • Storage: gigabytes × the monthly rate × the fraction of a month you keep the disk. Count the days after the job too, until you delete it.
  • Egress: gigabytes you download × the provider's rate, which may be zero.
  • A margin for reruns. First runs fail. Budget for a second attempt.

A bigger example, to show how fast the unit grows: an eight-GPU node for three days is 8 × 72 = 576 GPU-hours. At that scale, reserved and cluster pricing start to matter, and our GPU cluster page is the place to look.

For an always-on workload, the month is the natural unit. A month is 730 hours, so one GPU running all month is 730 GPU-hours. This table does the multiplication at the cheapest current H100 price:

GPU$/GPU-hrPer day (×24)Per month (×730)Provider
H100$2.50$60.00$1,825Hyperstack
Cheapest in-stock on-demand price per GPU-hour, for one GPU running the whole time. Per day = hourly price × 24 hours. Per month = hourly price × 730 hours (365 days × 24 ÷ 12), rounded to the nearest dollar. Storage, data transfer and tax are not included. Latest stock observation: .

If a monthly figure is what you are planning around, read about on-demand, spot and reserved pricing before you pay the on-demand rate for 730 hours in a row.

Five-line checklist

  1. Is the price per GPU or per instance? Divide by the GPU count.
  2. Is it per hour, per minute or per second? Convert to per hour.
  3. What is the billing increment and the minimum charge?
  4. What keeps billing when you stop: storage, warm workers, anything else?
  5. What is outside the price: egress, CPU and RAM, tax?

Answer those five and any two offers become comparable. Then the rule is simple: count your GPU-hours, multiply by the normalised price, add storage and egress, and pick the lowest total from a provider that has the GPU in stock. Start from the live H100 offers, the full provider list, or the daily GPU price index if you want to see how the price per GPU-hour has moved.

Sources

Source pages were retrieved with automated research tools on the dates shown and each figure was traced back to its source before publishing. Rental prices on this page are not typed: they are read live from GPUperhour's own data.

Frequently asked questions

What is a GPU hour?

A GPU-hour is one GPU rented for one hour. An eight-GPU node running for one hour uses eight GPU-hours, and one GPU running for eight hours uses the same.

How do I calculate GPU hours for a job?

Multiply the number of GPUs by the number of hours the instance is running and billed. Then multiply the GPU-hours by the price per GPU-hour to get the compute cost.

Are cloud GPUs billed by the hour?

Prices are usually quoted per hour, but metering is often finer. RunPod and Vast.ai document per-second billing, and Lambda documents one-minute increments.

Do I pay for a GPU instance while it is stopped?

You stop paying for the GPU, but storage usually keeps billing. Vast.ai's docs say storage charges continue when an instance is stopped, and RunPod charges a higher storage rate for a stopped pod's volume.

Is the price per GPU or per instance?

It can be either, and that is the most common comparison mistake. Divide an instance price by the number of GPUs in the instance before you compare it with a per-GPU price.

Related Posts