Runyard / GPU Index / Methodology

How the index is built

Every number on these pages can be traced to a provider's own published price and a fixed calculation. This page is the whole calculation. There is no proprietary engine.

1. Sources

Prices are collected directly from each provider's public pricing — their API where one exists, their pricing page where not. We do not license, scrape or resell any aggregator's data.

ProviderTypeMethod
Amazon Web ServiceshyperscalerPublic on-demand price list for Linux, us-east-1. Instance price divided by GPU count.
Microsoft AzurehyperscalerAzure Retail Prices API, Linux, eastus. Pay-as-you-go and Spot recorded separately. VM price divided by GPU count.
RunPod Secure CloudneocloudPublic GPU-type listing. Secure Cloud is RunPod's own datacentre capacity, quoted per GPU-hour.
RunPod Community CloudmarketplaceThird-party hosts renting through RunPod. Quoted per GPU-hour; a listing may have no hosts behind it.
LambdaneocloudPublic on-demand pricing page. Instance price divided by GPU count.
Vast.aimarketplacePublic offer search, verified and rentable hosts only. Each offer is one observation; on-demand rate, not interruptible bids.
CoreWeaveneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
Massed ComputeneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
CivoneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
KoyebneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
OblivusneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
DataCrunch (Verda)neocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
GPU.aimarketplacePublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
ReplicateneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
Paperspace (DigitalOcean)neocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
BeamneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
Latitude.shneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
SpheronmarketplacePublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
RuncrateneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
LyceumneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
fal.aineocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
EnvergeneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
HyperAIneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
Packet.aineocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
Cyfuture AIneocloudPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.
VultrhyperscalerPublic pricing page, parsed. Per-GPU price is the listed per-GPU rate, or the node price divided by GPU count. Prices near reserved, committed or contract terms are discarded; anything outside a plausible range for the GPU is discarded.

2. One observation per priced unit

Each config a provider sells — an instance type, a VM SKU, a marketplace offer — becomes one row: provider, GPU, GPU count, billing type, hourly price for the whole unit. Nothing is aggregated at this stage and nothing is thrown away. A marketplace with 200 listings for one GPU yields 200 rows.

Rows are only created where the GPU model and count are known with certainty from the provider's naming. SKUs we cannot map are logged and skipped, never guessed. Fractional-GPU products — a sixth of an A10, a MIG slice — are excluded: a fraction of a GPU is not a GPU price.

3. Normalise to $/GPU/hour

price per GPU-hour = unit price per hour ÷ GPUs in the unit. An 8×H100 node at $27.20/hr is recorded as $3.40 per GPU-hour. This is the only way to compare an eight-GPU hyperscaler instance with a single-card marketplace listing, and it is the convention every published index uses.

It has a known bias: a hyperscaler instance price also buys CPUs, RAM, storage and network, so hyperscaler per-GPU figures carry that overhead. We do not attempt to strip it out — there is no defensible way to — but the summary chart stacks by provider type precisely so that premium is visible rather than hidden.

4. The headline: a median of medians

For each GPU, on each day:

  1. Take every on-demand, in-stock row for that GPU.
  2. Group by provider. Reduce each provider to the median of its own per-GPU prices.
  3. The headline is the median of those provider medians.

Step 2 is what stops a provider with thirty instance sizes — or a marketplace with three hundred hosts — from dominating the figure. Every provider counts once. The result is a measure of where the market sits, not where the cheapest corner of it is.

Spot, interruptible and reserved prices never enter the median. They are recorded, and they set the “floor, any billing” figure, but a price that can be revoked or requires a commitment is not the on-demand market.

5. Cheapest, floor and monthly

Cheapest is the lowest on-demand per-GPU price seen from any provider. Floor, any billing is the lowest price across every billing type including spot. Monthly is hourly × 720, the conventional month.

6. History

Every collector run is stored as a snapshot and committed to the repository, so the history of the index is the version history of the data, and every price change is a diff anyone can inspect. Runs are at least daily. The latest snapshot is 2026-09-12; there are 27 in total.

One backfill, clearly marked. Live collection began 2026-09-11. Before that date, the only history is Lambda's, taken from the Internet Archive's dated copies of lambda.ai/pricing — 16 monthly captures from 2025-06-04. Those are real prices Lambda published on real dates; each row records the archive URL it was read from. On those dates the index is one provider, and the charts draw it as one provider's line rather than pretending to a market median. No other provider has usable archived pricing — the others render their prices in the browser, so the archive holds no numbers.

Nothing is interpolated or estimated. A run with no data for a provider is a gap in that provider's line, not a straight line across it.

7. Ranking

The summary table is ordered by provider coverage, then by price. It is deliberately not ordered by our own traffic to each GPU's page, which would make the ranking a function of the ranking.

8. Model fit

The “what fits” table on each GPU page uses the same arithmetic as the rest of Runyard: memory needed = weights (parameters × bits per weight ÷ 8) + KV cache at 8K context + about a gigabyte of runtime overhead, against 90% of the card's memory. Capacity follows total parameters even for mixture-of-experts models. Where one GPU is not enough, GPUs required = ceiling(needed ÷ usable), and the set is priced at that day's median.

9. Known limitations

  • One region per hyperscaler (us-east-1, eastus). Other regions differ.
  • Linux pricing only. Windows licensing is excluded.
  • Marketplace prices are the on-demand rate of each listing at collection time; they move continuously.
  • Fixed-price providers are assumed in stock. Only marketplaces report availability per listing.
  • The provider set is small and growing; the median moves as providers are added. A change in the median on the day a provider is added reflects coverage, not the market.
The data behind every page, as committed daily snapshots.
Browse snapshots →