GPU Price List

On-demand list prices for every GPU machine type our supported cloud providers publish, normalised onto one schema. Read the remarks before comparing two rows.

Price rows
2,915
Providers
4
GPU models
42
Regions
165
Lowest $/GPU-hour
$0.3430
ProviderProviderall
GPUGPUall
RegionRegionall

Showing — rows Lowest $/GPU-hour in view —

Before you compare two rows

Every provider publishes prices on its own terms. These are the differences that change what a number means — the first three in particular will mislead you if you sort the table and read off the top row.

Topology

A GPU-hour does not buy the same machine on every row

The $ / GPU-hour column divides a machine's price by its GPU count, which makes a single-GPU PCIe box and a node in a training cluster look like the same unit. They are not.

AWS p5.48xlarge, Azure ND96isr_H100_v5 and OCI BM.GPU.H100.8 are 8-GPU SXM nodes: the GPUs are linked by NVLink inside the box and the box has 400–3,200 Gbps of RDMA / InfiniBand fabric to its neighbours. OVHcloud's H100 flavors are PCIe cards in 1, 2 or 4-GPU shapes with no cluster fabric at all, and Azure's NC H100 sizes are PCIe NVL cards rather than SXM.

For a single-GPU job or inference that difference barely matters and the cheapest row wins. For multi-node training it dominates: without a low-latency fabric the collective operations that synchronise gradients become the bottleneck, and a nominally cheaper GPU-hour can cost more per unit of work. Check the machine type, not just the price.

Partitioned GPUs

Some rows are a slice of a GPU, so their per-GPU price is not purchasable

Azure, AWS and OVHcloud all sell fractional vGPU instances. Azure NV6ads_A10_v5 is 1/6 of an A10; AWS g6f.large is 1/8 of an L4; Azure's NC24lds_xl_RTXPRO6000BSE_v6 is 1/4 of an RTX PRO 6000.

The GPUs column shows these as fractions. Because $ / GPU-hour divides by that fraction, it reports the implied cost of a whole GPU assembled from slices — a useful comparison, but not a machine you can start. Sort on $ / hour when you want what you would actually be billed.

Monthly rate

Only OVHcloud publishes a real monthly price

AWS, Azure and OCI publish an hourly rate only, so their $ / month is that rate × 730 — the on-demand run rate for a month, not a discounted monthly plan.

OVHcloud publishes an actual monthly price, and it is not hourly × 730. Rows carrying its own published figure are marked †. Most are within a couple of percent of the hourly run rate, but the A100 flavors are about 45% below it (a100-720: $4,915/month against $8,972 at the hourly rate), and the H100 flavors about 5% below.

Regions

The region column means something different per provider

AWS and Azure price every region separately, and the spread is large — the same GPU can differ by 2× between the cheapest and dearest region, so those rows are genuinely per-region prices.

OCI publishes a single global list price with no region dimension at all. Its rows therefore carry all-commercial-regions rather than a region name. OVHcloud prices per subsidiary, not per region, so its regions share one price within a given subsidiary's catalogue.

In every case this table reflects pricing, not availability. A region appearing here does not guarantee the machine has capacity, or that your account has quota for it.

Scope

List prices, on demand, excluding everything negotiable

These are public pay-as-you-go list prices. They exclude reservations, savings plans, committed-use and capacity-block discounts, enterprise agreements, credits, support plans and tax. Any sizeable GPU commitment is usually bought at a discount to these numbers, and the discount differs sharply by provider.

Costs that attach to a real deployment are also absent: block and object storage, egress, load balancers, snapshots, and the idle hours when a reserved machine sits unused.

Spot capacity

Interruptible pricing is excluded, and is not comparable across providers

The generator scripts can emit interruptible prices, but they are left out here because the four providers do not publish the same thing. Azure publishes real spot prices. AWS's public spot price feed is stale, so its script derives an estimate from the Spot Instance Advisor's typical-savings percentages. OCI has no GPU spot market, and neither does OVHcloud.

Where spot exists the discount is steep — frequently 50–80% — so a workload that tolerates interruption may invert the ranking in this table entirely.

Naming

Identical GPU names can be different silicon

Match the memory column, not just the name. “H100” is an 80 GB SXM part on AWS p5, Azure ND and OCI, but a 94 GB NVL card on Azure's NC sizes. “A100” ships in both 40 GB and 80 GB versions, priced differently. AWS reports the GPUs in its p6e-gb200 instance as B200, while Azure and OCI call their Grace-Blackwell machines GB200.

Vendor model strings are kept as each provider publishes them rather than being forced into a shared vocabulary, so filtering by GPU may need two selections to cover one chip.

Generation

Cheap per hour is not cheap per unit of work

K80, M60, P100, V100 and T4 rows look inexpensive because they are old. A current-generation GPU can be an order of magnitude faster on the same job, which usually makes it cheaper in total despite a higher hourly rate — and some modern model work simply will not fit in the older cards' memory or run on their compute capability.

Treat this table as a price reference, not a value ranking.

Gaps

Blank cells are missing source data, not zeroes

A dash means the provider does not publish that figure. Azure's retail price API carries no vCPU or RAM for a SKU, so those columns are empty for every Azure row.

Azure also prices roughly 20 RTX PRO 6000 VM sizes that it has not documented the GPU count for. Rather than guess, the generator leaves their GPU count, GPU memory and per-GPU price blank — their hourly and monthly prices are still correct. Blanks always sort to the bottom, in both directions.

Currency and tax

One currency per page, ex-tax

Every row here is USD, and the build refuses to mix currencies in one page because sorting across them would be meaningless. The Azure, OCI and OVHcloud scripts can emit other currencies — regenerate the whole set in one currency and rebuild.

All figures are exclusive of tax. This matters most for OVHcloud, whose own site displays VAT-inclusive prices in several locales; the scripts read the underlying ex-tax numbers.

Provenance

Where these numbers come from

  • Azure — 1,648 rows from azure-gpu-pricing.csv
  • AWS — 1,150 rows from aws-gpu-pricing.csv
  • OCI — 22 rows from oci-gpu-pricing.csv
  • OVHcloud — 95 rows from ovh-gpu-pricing.csv

Each CSV is produced by its own generator script, reading that provider's public pricing API or feed with no credentials: get-azure-gpu-pricing.py, get-aws-gpu-pricing.py, get-oci-gpu-pricing.py and get-ovh-gpu-pricing.py. Rerun them, then rerun build-pricing-page.py to refresh this page.

GPU hardware details are not published by any of the four pricing APIs. They come from each provider's instance-type documentation and are the part of this data most likely to go stale when new machines ship.