Safeguard
Supply Chain Security•

LLM Training Cost by Chip and Model Size: 1B to 1T, Worked

Worked estimates for training 1B, 10B, 100B and 1T parameter LLMs on H100, B200, MI300X, TPU and Trainium2: FLOPs, chip-hours, cost, energy and memory.

Safeguard Security Team
66 min read

Training a language model costs roughly 6 × parameters × tokens floating point operations, divided by what your chips actually deliver, multiplied by the hourly price. At public list prices checked on 25 October 2026, that works out to a few hundred dollars for a compute-optimal 1B model, tens of thousands for 10B, about $2 million to $9 million for 100B, and hundreds of millions of dollars for a dense 1 trillion parameter model, while a 1T mixture of experts model with 50B active parameters costs about one twentieth of the dense one.

Those ranges are wide on purpose. The list price of a chip-hour varies by a factor of nearly fifteen between a Google TPU v5e and an NVIDIA B300, and the share of peak throughput a real training job sustains varies from the low 30s to the mid 50s in percent across published reports. This post shows every input, every formula and every intermediate number, so you can swap in your own price, your own utilisation and your own token budget and get your own answer. All arithmetic was done in Python on a Mac, and the scripts are included.

It belongs to our series on AI hardware. For the chips themselves, see AI chip architecture, what an AI accelerator is and GPU memory and interconnects. For prices, see GPU rental prices in 2026. For the serving side, see GPU cost per million tokens and whether AI is getting cheaper.

Key takeaways

  • Training compute is about 6·N·D FLOPs, where N is the number of parameters that are active for each token and D is the number of training tokens (Kaplan et al., 2020). For a mixture of experts model, N is the active count, not the total.
  • Compute-optimal training uses about 20 tokens per parameter, per the Chinchilla paper's own projection table: 20.2 billion tokens for 1B, 205.1 billion for 10B and 21.2 trillion for 1T (Hoffmann et al., 2022). Most production models train on far more tokens than that, because a smaller model that has seen more data is cheaper to serve.
  • Model FLOPs utilisation (MFU) in published large runs sits between about 38% and 55%: Llama 3 405B reported 38% to 43% on up to 16,384 H100s, PaLM reported 46.2% on 6,144 TPU v4 chips, and MegaScale reported 55.2% on 12,288 GPUs. This post uses 35% to 45% as the working range.
  • On those assumptions, a compute-optimal 100B dense model needs about 750,000 to 960,000 H100-hours, or about 330,000 to 420,000 B200-hours. At AWS on-demand list prices that is $5.15M to $6.62M on H100 and $4.69M to $6.03M on B200.
  • A dense 1T model at 21.2 trillion tokens needs about 1.27 × 10^26 FLOPs, which is 79M to 102M H100-hours and roughly $546M to $702M at the H100 on-demand price. The 1T MoE with 50B active parameters on the same tokens needs 20 times less compute.
  • Electricity is a small share of a rented run: under 2% of the on-demand bill in our 1T example at 8 cents per kWh. It matters much more when you own the hardware.
  • Mixed-precision Adam needs 16 bytes per parameter before activations, so a 1T model carries about 16 TB of model state. Tensor, pipeline and data parallelism with ZeRO sharding are what make that fit on 80 GB to 288 GB devices.
  • Published runs cost more than the 6ND arithmetic alone suggests. Meta's Llama 3.1 405B used 30.84M H100-hours, which implies about 34.5% MFU across the whole job, below the 38% to 43% steady-state figure, because restarts, long-context stages and other work all count.

How to read every number in this post

Every estimate here is built from four inputs. Each one has a source or a stated assumption, and each one moves the answer.

InputValue usedWhere it comes from
Training FLOPs6 × active parameters × tokensKaplan et al. 2020, section 2.1
Token budgetChinchilla-optimal (about 20 per parameter) and an over-trained caseHoffmann et al. 2022, Table 3; Llama 3 paper for the over-trained scale
Peak throughputVendor dense BF16 peak per chipVendor spec pages, listed below
UtilisationMFU of 35% (pessimistic) to 45% (optimistic)Llama 3, PaLM and MegaScale papers
PriceOn-demand list price per chip-hour, and a 3-year commitment price where publishedAWS, Azure, Google Cloud price pages, checked 25 October 2026
Effective time90% of wall-clock time spent on useful trainingLlama 3 paper reports higher than 90%
EnergyChip board power × 1.3 server overhead × PUE 1.2Vendor power figures; the 1.3 and 1.2 are our assumptions
Electricity price$0.08 per kWh, with a range of $0.05 to $0.15Our assumption

Three things these numbers are not. They are not measured benchmark results: the only measurements quoted are the ones published in the papers named. They are not quotes: real contracts at this scale are negotiated, and a large buyer pays less than list. And they are not the full cost of a model: experiments, failed runs, data, evaluation, post-training and staff are all extra, and for frontier labs those extras are large. Every cost below is an estimate built from the stated assumptions.

The cost model, step by step

Step 1: count the FLOPs

A transformer's forward pass costs about 2 FLOPs per parameter per token: one multiply and one add for each weight in each matrix multiply. The backward pass costs about twice the forward pass, because it computes gradients both for the activations and for the weights. Add them and you get about 6 FLOPs per parameter per token. Kaplan and colleagues wrote it down in 2020 as C ≈ 6N floating point operations per training token, with N counting non-embedding parameters.

C  =  6  ×  N_active  ×  D

C         total training compute, FLOPs
N_active  parameters used for each token (all of them for a dense model,
          the routed experts plus shared layers for an MoE)
D         training tokens

The formula leaves out attention's own score computation, which grows with sequence length, and it ignores the extra forward pass you pay if you recompute activations to save memory. That is why MFU, which counts only the 6N "model FLOPs", is lower than hardware FLOPs utilisation, which counts everything the chip actually executed. PaLM reported both for its 540B run: 46.2% MFU and 57.8% hardware FLOPs utilisation.

Step 2: divide by delivered throughput

chip-seconds  =  C  /  (peak_FLOP/s  ×  MFU)
chip-hours    =  chip-seconds / 3600

Peak is the vendor's dense number for the precision you train in. Almost every published large run reports MFU against BF16 peak, so BF16 dense is what we use. FP8 training can raise delivered throughput, but it does not double it in practice, and quoting MFU against an FP8 peak makes the percentage look worse even when the run is faster. Keep the precision and the peak consistent.

Step 3: multiply by the price

cost  =  chip-hours  ×  price_per_chip_hour

Cloud prices are per instance. An 8-GPU instance price divided by 8 gives the per-GPU price; TPU prices are already per chip-hour; AWS lists Trainium2 Capacity Blocks with a per-accelerator figure.

Step 4: wall clock, energy and memory

days    =  C / (peak × MFU × n_chips × effective_time) / 86,400
energy  =  chip-hours × kW_per_chip × server_overhead × PUE
memory  =  16 bytes × N_total (model state)  +  activations

Memory uses the total parameter count, not the active one, because an MoE model still has to store every expert's weights, gradients and optimizer state somewhere.

The calculator

This is the script behind the tables. It runs on any machine with Python 3; it does not touch a GPU.

# Training cost estimator: 6ND FLOPs, MFU range, chip-hours, cost, energy.
# Peak = vendor dense BF16 peak in FLOP/s. Prices in USD per chip-hour.

CHIPS = {
    # name: (dense BF16 peak FLOP/s, on-demand $/chip-h, 3-year commit $/chip-h or None)
    "H100 SXM":        (989.5e12, 6.88,  5.395),
    "B200 (HGX)":      (2.25e15,  14.242, None),
    "MI300X":          (1.3e15,   6.00,  2.634),
    "TPU v6e":         (918e12,   2.70,  1.22),
    "TPU7x Ironwood":  (2.307e15, 12.00, 5.40),
    "Trainium2":       (667e12,   2.235, None),   # Capacity Block price
}

def training_flops(params_active, tokens):
    return 6 * params_active * tokens

def chip_hours(flops, peak, mfu):
    return flops / (peak * mfu) / 3600

def wall_clock_days(flops, peak, mfu, n_chips, effective=0.9):
    return flops / (peak * mfu * n_chips * effective) / 86400

def energy_mwh(hours, kw_per_chip, pue=1.2):
    return hours * kw_per_chip * pue / 1000

if __name__ == "__main__":
    n, d = 100e9, 2e12                     # 100B dense, Chinchilla tokens
    c = training_flops(n, d)
    print(f"FLOPs: {c:.3e}")
    for name, (peak, od, commit) in CHIPS.items():
        lo, hi = chip_hours(c, peak, 0.45), chip_hours(c, peak, 0.35)
        line = f"{name:15s} {lo:>12,.0f} to {hi:>12,.0f} chip-h  on-demand ${lo*od:,.0f} to ${hi*od:,.0f}"
        if commit:
            line += f"  3-yr ${lo*commit:,.0f} to ${hi*commit:,.0f}"
        print(line)
    days = wall_clock_days(c, 989.5e12, 0.45, 1024), wall_clock_days(c, 989.5e12, 0.35, 1024)
    print(f"1,024 H100s: {days[0]:.1f} to {days[1]:.1f} days")
    print(f"H100 energy at 0.91 kW per GPU, PUE 1.2: {energy_mwh(chip_hours(c, 989.5e12, 0.45), 0.91):,.0f} MWh")

Its output on our machine:

FLOPs: 1.200e+24
H100 SXM             748,601 to      962,487 chip-h  on-demand $5,150,375 to $6,621,911  3-yr $4,038,703 to $5,192,618
B200 (HGX)           329,218 to      423,280 chip-h  on-demand $4,688,724 to $6,028,360
MI300X               569,801 to      732,601 chip-h  on-demand $3,418,803 to $4,395,604  3-yr $1,500,855 to $1,929,670
TPU v6e              806,907 to    1,037,452 chip-h  on-demand $2,178,649 to $2,801,120  3-yr $984,427 to $1,265,691
TPU7x Ironwood       321,084 to      412,822 chip-h  on-demand $3,853,008 to $4,953,867  3-yr $1,733,853 to $2,229,240
Trainium2          1,110,556 to    1,427,857 chip-h  on-demand $2,482,092 to $3,191,262
1,024 H100s: 33.8 to 43.5 days
H100 energy at 0.91 kW per GPU, PUE 1.2: 817 MWh

The tables later in this post were generated by a longer version of the same script with all twelve chips and unrounded prices, so the last digit can differ by a few dollars from this short version.

Input 1: chip specifications from the vendors

Every figure below is a vendor peak, not a measurement. NVIDIA, AMD and AWS publish sparse figures alongside dense ones; sparse figures assume 2:4 structured sparsity, which dense LLM pretraining does not use, so only the dense column feeds the cost model. Where a vendor lists only a sparse number, the dense number is half of it, and NVIDIA's pages say so in their footnotes.

ChipDense BF16 peakDense FP8 peakMemoryMemory bandwidthPower (vendor)
NVIDIA H100 SXM989.5 TFLOPS (1,979 sparse)1,979 TFLOPS (3,958 sparse)80 GB HBM33.35 TB/sup to 700 W
NVIDIA H200 SXM989.5 TFLOPS (1,979 sparse)1,979 TFLOPS (3,958 sparse)141 GB4.8 TB/sup to 700 W
NVIDIA B200, per GPU of HGX B2002.25 PFLOPS (36 PFLOPS sparse per 8 GPUs)4.5 PFLOPS (72 PFLOPS sparse per 8 GPUs)1.4 TB per 8 GPUsnot on the page checkedDGX B200 system about 14.3 kW max for 8 GPUs
NVIDIA B300, per GPU of HGX B3002.25 PFLOPS (36 PFLOPS sparse per 8 GPUs)4.5 PFLOPS (72 PFLOPS sparse per 8 GPUs)2.1 TB per 8 GPUsnot on the page checkednot on the page checked
NVIDIA GB200 NVL72, per GPU2.5 PFLOPS (10 PFLOPS sparse per 2 GPUs)5 PFLOPS (20 PFLOPS sparse per 2 GPUs)186 GB HBM3E (372 GB per 2 GPUs)8 TB/s (16 TB/s per 2 GPUs)not on the page checked
AMD Instinct MI300X1.3 PFLOPS (2.61 sparse)2.61 PFLOPS192 GB HBM35.3 TB/s750 W typical board power
AMD Instinct MI325X1.3 PFLOPS (2.61 sparse)2.61 PFLOPS256 GB HBM3E6 TB/s1,000 W
AMD Instinct MI355X2.5 PFLOPS5 PFLOPS (10.1 sparse)288 GB HBM3E8 TB/s1,400 W
Intel Gaudi 31.8 PFLOPS (BF16 and FP8; dense or sparse not stated)1.8 PFLOPS128 GB HBM2e3.7 TB/snot on the page checked
Google TPU v5e197 TFLOPSnot listed (INT8 393 TOPS)16 GB800 GiB/snot published
Google TPU v5p459 TFLOPS459 TFLOPS95 GiB2,765 GB/snot published
Google TPU v6e (Trillium)918 TFLOPSnot listed (INT8 1,836 TOPS)32 GB1,638 GB/snot published
Google TPU7x (Ironwood)2,307 TFLOPS4,614 TFLOPS192 GiB7,380 GB/snot published
AWS Trainium2667 TFLOPS1,299 TFLOPS (2,563 sparse)96 GiB2.9 TB/snot published

A few notes on reading that table.

  • Per-GPU Blackwell figures are derived. NVIDIA's HGX page lists 8-GPU totals with a footnote that dense is half of the sparse figure shown. Dividing 36 PFLOPS sparse BF16 by 8 GPUs and then by 2 gives 2.25 PFLOPS dense per B200 or B300. The same page lists the B300 and B200 with identical BF16 and FP8 totals; the B300's advantage on that page is FP4 inference throughput and memory, neither of which helps a BF16 training run much.
  • Google does not label TPU figures as dense or sparse. We treat them as dense peak. Google lists 8,960 chips per v5p pod, 256 per v6e pod and 9,216 per TPU7x pod.
  • Intel's Gaudi 3 figure is stated as 1.8 PFLOPS of FP8 and BF16 compute in its architecture documentation, without a dense or sparse label. We use it as dense, which flatters Gaudi 3 if it is not.
  • Power figures differ in scope. H100, H200 and AMD figures are per board. NVIDIA's DGX B200 figure is for a whole 8-GPU system including CPUs and networking. Google and AWS do not publish per-chip power on the pages we used, so we do not estimate energy for TPUs or Trainium2.

Training speed depends mostly on the BF16 column and on how well the interconnect lets you keep the chips busy. Memory capacity decides how many chips you need just to hold the model state, and therefore how much parallelism, and therefore how hard it is to keep MFU up. Our AI chip architecture explainer and inside an NVIDIA streaming multiprocessor cover why peak and delivered throughput diverge.

Input 2: prices, checked on 25 October 2026

All prices are public list prices in US dollars, Linux, checked on 25 October 2026. The 3-year column is the published commitment price where one exists: Azure reserved VM instance prices for H100, H200 and MI300X, and Google committed use prices for TPUs. Azure lists a reservation as a total for the term, so we divide by 26,280 hours (3 × 8,760) and by 8 GPUs.

ChipInstance and regionOn-demand per instance-hourOn-demand per chip-hour3-year commitment per chip-hour
H100 SXMAWS p5.48xlarge, US East (N. Virginia)$55.04$6.88$5.40 (Azure ND96isr H100 v5, East US)
H100 SXMAzure ND96isr H100 v5, East US$98.32$12.29$5.40
H200 SXMAWS p5en.48xlarge, US East (N. Virginia)$63.296$7.91$5.28 (Azure ND96isr H200 v5, East US 2)
H200 SXMAzure ND96isr H200 v5, East US 2$84.80$10.60$5.28
B200AWS p6-b200.48xlarge, US East (N. Virginia)$113.9328$14.24not published
B300AWS p6-b300.48xlarge, US East (N. Virginia)$142.416$17.80not published
MI300XAzure ND96isr MI300X v5, East US 2$48.00$6.00$2.63
TPU v5eGoogle Cloud, us-central1per chip$1.20$0.54
TPU v5pGoogle Cloud, us-east5per chip$4.20$1.89
TPU v6eGoogle Cloud, us-east1per chip$2.70$1.22
TPU7x IronwoodGoogle Cloud, us-central1per chip$12.00$5.40
Trainium2AWS trn2.48xlarge Capacity Block, US East (Ohio)$35.7608$2.235not applicable

What the table says, and what it does not.

  • The same chip has very different prices. An H100 is $6.88 per GPU-hour on AWS on-demand and $12.29 on Azure pay-as-you-go in East US. Azure's own price feed shows the 8-GPU H100 VM at about $18.17 per hour as spot capacity, about 82% below pay-as-you-go, which is only usable by a job that can survive being interrupted. Our rental price survey covers specialist clouds, which list H100s from about $2.69 to $4.50.
  • Commitments roughly halve the list. Google's 3-year commitment prices for every TPU generation are 55% below on-demand. Azure's 3-year H100 reservation is 56% below its own pay-as-you-go, and its 1-year reservation is 36% below. Against AWS's lower on-demand H100 price, the Azure 3-year figure is only 22% lower, which is why the discount you can claim depends on which list you start from.
  • Trainium2 has no on-demand price on AWS's Linux on-demand list for the regions we checked. The $2.235 per chip-hour is the Capacity Block rate, which is a prepaid reservation for a fixed window.
  • MI355X, MI325X, Gaudi 3 and GB200 have no price in our tables. We did not find a public on-demand list price for them from a major cloud that we could tie to a per-chip figure with confidence on the check date. Azure lists an ND GB200 v6 VM at $108.16 per hour in East US, but we have not confirmed the per-VM GPU count from Azure's documentation, so we leave it out rather than guess.

For the per-chip comparison, the useful single number is dollars per delivered unit of compute. At 40% MFU, here is the cost to deliver 10^21 model FLOPs (one zettaFLOP), which is roughly what a 2.9B model needs at 20 tokens per parameter:

ChipChip-hours per 10^21 FLOPs at 40% MFUOn-demand cost3-year commitment costOn-demand $ per dense BF16 PFLOPS-hour
H100 SXM (AWS)701.8$4,828$3,786$6.95
H200 SXM (AWS)701.8$5,553$3,704$8.00
B200 (AWS)308.6$4,396not published$6.33
B300 (AWS)308.6$5,494not published$7.91
MI300X (Azure)534.2$3,205$1,407$4.62
TPU v5e3,525.1$4,230$1,904$6.09
TPU v5p1,513.0$6,354$2,859$9.15
TPU v6e756.5$2,042$923$2.94
TPU7x Ironwood301.0$3,612$1,625$5.20
Trainium2 (Capacity Block)1,041.1$2,327not applicable$3.35

This is the table people want to turn into a ranking, and it does not support one on its own. It assumes the same MFU on every chip, and MFU is exactly what differs: a framework that has had years of tuning on one architecture will reach a higher fraction of peak there than on a newer one. A smaller chip such as the TPU v5e needs many more devices for the same job, which costs more communication and lowers MFU at scale; with only 16 GB per chip it cannot practically hold a large model's training state without very wide sharding. The cheapest compute per FLOP is not cheapest per finished model if it takes three extra weeks to get running.

Input 3: utilisation, from published training reports

MFU is the ratio of the model FLOPs a job completes per second to the hardware's theoretical peak. The term comes from the PaLM paper, and it is now the standard way large training reports describe efficiency. These are the published figures we anchor on.

ReportModel and hardwareReported utilisationWhat it covers
PaLM (Chowdhery et al., 2022)540B dense, 6,144 TPU v4 chips across two pods46.2% MFU, 57.8% hardware FLOPs utilisationPretraining throughput
MegaScale (Jiang et al., 2024)175B model, 12,288 GPUs55.2% MFUPretraining throughput, 1.34 times the Megatron-LM baseline the authors compared against
Llama 3 (Meta, 2024)405B dense, 8,192 H100s43% BF16 MFU, 430 TFLOPs per GPUPretraining, 8K context
Llama 3 (Meta, 2024)405B dense, 16,384 H100s41% BF16 MFU, 400 TFLOPs per GPUPretraining, 8K context
Llama 3 (Meta, 2024)405B dense, 16,384 H100s, 131,072-token context38% BF16 MFU, 380 TFLOPs per GPULong-context pretraining

Meta's own explanation for the drop from 43% to 41% is instructive: at 16,384 GPUs the data parallel degree doubled to 128, so each data parallel group got a smaller batch to keep the global batch at 16M tokens, and smaller per-group batches use the hardware less well. Scale costs efficiency, which is why the MFU you plan for should fall as the cluster grows.

MLCommons MLPerf Training results report time to train a fixed benchmark rather than MFU for a full pretraining run, so we do not derive utilisation from them here. We use 35% to 45% for every chip and model size. That is deliberately conservative against MegaScale's 55.2% and generous for small clusters running untuned code, where 20% to 30% is common in practice. The range does not account for the second effect that matters as much as MFU: time lost to failures. Meta reports 466 job interruptions during a 54-day snapshot of Llama 3 405B pretraining, about 78% of the unexpected ones attributed to confirmed or suspected hardware issues, and an effective training time above 90%. We apply 90% effective time to wall-clock estimates. The chip-hour and cost tables do not include it, so for a large run add roughly 10% to them.

A mixture of experts model is harder to run at high MFU, because tokens are routed across devices through all-to-all communication and the expert matrices are smaller. DeepSeek-V3's technical report does not quote an MFU, but it does give enough to compute the delivered model FLOP rate: 37B activated parameters, 14.8T pretraining tokens and 2,664K H800 GPU-hours for pretraining. By 6·N·D that is about 3.29 × 10^24 FLOPs, or about 343 TFLOPs of model compute per GPU per second, against the 380 to 430 Meta reports for a dense model on H100s. DeepSeek also trained in FP8 for much of the model, so the comparison is approximate. We keep 35% to 45% for the MoE case but flag it as the optimistic side.

Input 4: how many tokens

The Chinchilla paper fitted a scaling law to more than 400 training runs and concluded that, for a fixed compute budget, parameters and tokens should grow equally: double the model, double the data. Its Table 3 projects the compute-optimal token count for several sizes. We use those numbers directly where the table has them and 20 tokens per parameter where it does not.

Model sizeCompute-optimal tokensSourceOver-trained case used hereTokens per parameter (over-trained)
1B20.2 billionChinchilla Table 315 trillion15,000
10B205.1 billionChinchilla Table 315 trillion1,500
100B2 trillion20 tokens per parameter15 trillion150
1T dense21.2 trillionChinchilla Table 340 trillion40
1T MoE, 50B active21.2 trillionsame as dense, for comparison40 trillion40 per total parameter, 800 per active

Why an over-trained case at all? Because almost nobody ships a compute-optimal model any more. Chinchilla optimises for the cheapest training run that reaches a given loss. If you will serve the model to millions of users, inference dominates the lifetime cost, and a smaller model trained on more data is cheaper to serve at the same quality. Meta trained Llama 3 8B and 70B on 15T+ tokens: about 1,875 tokens per parameter for 8B and 214 for 70B. The 405B flagship saw 15.6T tokens, about 38.5 per parameter. A fixed 15T budget for the three smaller sizes reflects that practice. For 1T, 15T would be below Chinchilla, so the over-trained case doubles the Chinchilla figure to 40T instead.

For the MoE model we assume 1T total parameters with 50B active per token, about 5% of the total. DeepSeek-V3's published ratio is 37B active out of 671B total, about 5.5%. We are not describing any specific model, only using a published ratio as a reasonable shape.

Total training compute for every case

CaseActive parametersTokensFLOPs (6·N·D)
1B, Chinchilla1B20.2B1.21 × 10^20
1B, over-trained1B15T9.0 × 10^22
10B, Chinchilla10B205.1B1.23 × 10^22
10B, over-trained10B15T9.0 × 10^23
100B, Chinchilla100B2T1.2 × 10^24
100B, over-trained100B15T9.0 × 10^24
1T dense, Chinchilla1T21.2T1.27 × 10^26
1T dense, over-trained1T40T2.4 × 10^26
1T MoE, Chinchilla tokens50B21.2T6.36 × 10^24
1T MoE, over-trained50B40T1.2 × 10^25

Our 6·N·D results for 1B, 10B and 1T match the FLOPs column of Chinchilla's Table 3 (1.21 × 10^20, 1.23 × 10^22 and 1.27 × 10^26), which is a useful check that the formula and the token counts are consistent. Llama 3 405B on 15.6T tokens gives 3.79 × 10^25, matching the 3.8 × 10^25 FLOPs Meta reports.

Each step up in model size at Chinchilla tokens multiplies compute by about 100, because both N and D grow tenfold. That single fact explains most of the cost tables below: going from 10B to 100B does not cost ten times more, it costs a hundred times more, unless you hold the token count fixed.

1B parameters: worked estimate

A compute-optimal 1B model is a small job. At 1.21 × 10^20 FLOPs, an H100 at 40% MFU delivers that in about 85 hours of one GPU, which is a single 8-GPU server for about half a day.

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM76 to 97$520 to $669$408 to $524
NVIDIA H200 SXM76 to 97$598 to $769$399 to $513
NVIDIA B200 (HGX)33 to 43$474 to $609not published
NVIDIA B300 (HGX)33 to 43$592 to $761not published
AMD MI300X58 to 74$345 to $444$152 to $195
AMD MI355X30 to 38no public price checkednot published
Intel Gaudi 342 to 53no public price checkednot published
Google TPU v5e380 to 488$456 to $586$205 to $264
Google TPU v5p163 to 210$685 to $880$308 to $396
Google TPU v6e81 to 105$220 to $283$99 to $128
Google TPU7x Ironwood32 to 42$389 to $500$175 to $225
AWS Trainium2112 to 144$251 to $322not published

At that size, the price per chip-hour hardly matters: the whole run costs less than an engineer's day. What matters is setup. A small model will not reach 35% MFU on a large chip without care, because its matrices are small relative to what a B200 or Ironwood chip needs to stay busy. A batch of short sequences on a model with a hidden size of 2,048 does not saturate a device built for hidden sizes of 8,192 and up, so expect the lower end of the MFU range or below it on the biggest chips.

The over-trained 1B case is a different budget entirely. Fifteen trillion tokens is 743 times more data than Chinchilla's optimum, and compute scales with it:

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM56k to 72k$386k to $497k$303k to $389k
NVIDIA B200 (HGX)25k to 32k$352k to $452knot published
AMD MI300X43k to 55k$256k to $330k$113k to $145k
Google TPU v6e61k to 78k$163k to $210k$74k to $95k
Google TPU7x Ironwood24k to 31k$289k to $372k$130k to $167k
AWS Trainium283k to 107k$186k to $239knot published

A few hundred thousand dollars to train a 1B model on 15T tokens at list prices, and a fifth to a half of that at committed TPU or MI300X prices. Wall clock on 256 H100s is about 10 to 13 days; on 256 B200s, about 4.5 to 5.7 days.

Memory for 1B. Mixed-precision Adam needs 16 bytes per parameter: 2 for BF16 weights, 2 for BF16 gradients and 12 for the FP32 master weights plus Adam's two FP32 moment estimates, exactly as the ZeRO paper breaks it down. For a 1B model built as 20 layers with a hidden size of 2,048 (12 × 20 × 2,048² is about 1.01B parameters), that is about 16 GB of model state. Activations for one 4,096-token sequence, with selective activation recomputation, are about 5.7 GB. That fits on every chip in our table except the TPU v5e's 16 GB, with plain data parallelism and no sharding at all.

10B parameters: worked estimate

At 205.1 billion tokens a 10B model needs 1.23 × 10^22 FLOPs, about 100 times the 1B run.

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM7,677 to 9,870$53k to $68k$41k to $53k
NVIDIA H200 SXM7,677 to 9,870$61k to $78k$41k to $52k
NVIDIA B200 (HGX)3,376 to 4,341$48k to $62knot published
NVIDIA B300 (HGX)3,376 to 4,341$60k to $77knot published
AMD MI300X5,843 to 7,513$35k to $45k$15k to $20k
AMD MI355X3,039 to 3,907no public price checkednot published
Intel Gaudi 34,220 to 5,426no public price checkednot published
Google TPU v5e39k to 50k$46k to $59k$21k to $27k
Google TPU v5p17k to 21k$70k to $89k$31k to $40k
Google TPU v6e8k to 11k$22k to $29k$10k to $13k
Google TPU7x Ironwood3,293 to 4,233$40k to $51k$18k to $23k
AWS Trainium211k to 15k$25k to $33knot published

That is tens of thousands of dollars on demand, or a single 8-GPU H100 server for about 40 to 51 days. On 64 H100s at 90% effective time it is 5.6 to 7.1 days; on 64 B200s, 2.4 to 3.1 days.

The over-trained case on 15T tokens:

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM561k to 722k$3.86M to $4.97M$3.03M to $3.89M
NVIDIA B200 (HGX)247k to 317k$3.52M to $4.52Mnot published
AMD MI300X427k to 549k$2.56M to $3.30M$1.13M to $1.45M
Google TPU v6e605k to 778k$1.63M to $2.10M$738k to $949k
Google TPU7x Ironwood241k to 310k$2.89M to $3.72M$1.30M to $1.67M
AWS Trainium20.83M to 1.07M$1.86M to $2.39Mnot published

Low single-digit millions of dollars at list price, and about 25 to 33 days on 1,024 H100s.

Memory for 10B. At 16 bytes per parameter, a 10B model (50 layers, hidden size 4,096) carries about 161 GB of model state. That no longer fits on one 80 GB H100, so plain data parallelism, which keeps a full copy on every device, fails. Two standard fixes:

  • ZeRO stage 3 or fully sharded data parallel (FSDP) splits weights, gradients and optimizer states across the data parallel group. On 8 H100s, model state drops to about 20 GB per GPU, plus about 28.5 GB of activations per 4,096-token sequence: about 49 GB, which fits.
  • ZeRO stage 1 shards only the optimizer states. Per device memory is 4 bytes per parameter for weights and gradients plus 12 divided by the data parallel degree. On 64 H100s that is about 42 GB of state plus 28.5 GB of activations, about 71 GB: it fits, with little headroom.

On a 256 GB MI325X or a 288 GB MI355X, the 10B model's roughly 190 GB of state and activations fits on one device with plain data parallelism. On 192 GB parts such as the MI300X or an Ironwood chip it sits right at the limit, so a little sharding is still needed. Fewer sharding decisions is a real advantage for small teams, separate from any throughput number.

100B parameters: worked estimate

A 100B dense model at 2T tokens needs 1.2 × 10^24 FLOPs. This is the first size where the choice of chip, price and commitment shows up as millions of dollars.

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM749k to 962k$5.15M to $6.62M$4.04M to $5.19M
NVIDIA H200 SXM749k to 962k$5.92M to $7.62M$3.95M to $5.08M
NVIDIA B200 (HGX)329k to 423k$4.69M to $6.03Mnot published
NVIDIA B300 (HGX)329k to 423k$5.86M to $7.54Mnot published
AMD MI300X570k to 733k$3.42M to $4.40M$1.50M to $1.93M
AMD MI355X296k to 381kno public price checkednot published
Intel Gaudi 3412k to 529kno public price checkednot published
Google TPU v5e3.76M to 4.83M$4.51M to $5.80M$2.03M to $2.61M
Google TPU v5p1.61M to 2.07M$6.78M to $8.71M$3.05M to $3.92M
Google TPU v6e0.81M to 1.04M$2.18M to $2.80M$0.98M to $1.27M
Google TPU7x Ironwood321k to 413k$3.85M to $4.95M$1.73M to $2.23M
AWS Trainium21.11M to 1.43M$2.48M to $3.19Mnot published

On demand, the estimates range from about $2.2M on TPU v6e to about $8.7M on TPU v5p. With 3-year commitments, about $1.0M to $5.2M. Wall clock on 1,024 H100s is 34 to 44 days, and on 1,024 B200s about 15 to 19 days.

Over-trained on 15T tokens:

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM5.61M to 7.22M$38.63M to $49.66M$30.29M to $38.95M
NVIDIA B200 (HGX)2.47M to 3.17M$35.16M to $45.21Mnot published
AMD MI300X4.27M to 5.49M$25.64M to $32.97M$11.26M to $14.47M
Google TPU v6e6.05M to 7.78M$16.34M to $21.01M$7.38M to $9.49M
Google TPU7x Ironwood2.41M to 3.10M$28.90M to $37.15M$13.00M to $16.72M
AWS Trainium28.33M to 10.71M$18.62M to $23.93Mnot published

Tens of millions of dollars, and on 8,192 H100s about 32 to 41 days of wall clock.

Memory for 100B. At 80 layers and a hidden size of 10,240 (about 100.7B parameters), model state is about 1.6 TB, and activations for one 4,096-token sequence across all layers are about 114 GB with selective recomputation, or about 651 GB without it. No single device holds that. A typical layout:

  • Tensor parallelism of 8 splits every weight matrix across the 8 GPUs of one server, which share NVLink or Infinity Fabric. It also divides activation memory by 8 when combined with sequence parallelism.
  • Pipeline parallelism of 4 or 8 puts a contiguous block of layers on each group of 8 GPUs.
  • Data parallelism with ZeRO stage 1 fills out the rest of the cluster.

With TP 8, PP 8 and DP 16 on 1,024 H100s, model state is about 7.5 GB per GPU and activations about 14.3 GB, about 22 GB in total. With PP 4 and DP 32, about 28 GB. Both fit comfortably, which leaves room for larger micro-batches or longer sequences. On MI355X, PP 2 with DP 64 also fits at about 41 GB of 288 GB.

1T parameters, dense: worked estimate

A dense 1T model at Chinchilla's 21.2T tokens needs 1.27 × 10^26 FLOPs. The Chinchilla authors themselves noted that a 1T model is unlikely to be the optimal choice unless you have a budget of about 10^26 FLOPs, more than 250 times what Gopher used.

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM79.35M to 102.02M$545.94M to $701.92M$428.13M to $550.45M
NVIDIA H200 SXM79.35M to 102.02M$627.83M to $807.21M$418.80M to $538.45M
NVIDIA B200 (HGX)34.90M to 44.87M$496.99M to $638.99Mnot published
NVIDIA B300 (HGX)34.90M to 44.87M$621.24M to $798.74Mnot published
AMD MI300X60.40M to 77.66M$362.39M to $465.93M$159.09M to $204.54M
AMD MI355X31.41M to 40.38Mno public price checkednot published
Intel Gaudi 343.62M to 56.08Mno public price checkednot published
Google TPU v5e398.57M to 512.45M$478.29M to $614.94M$215.23M to $276.72M
Google TPU v5p171.06M to 219.94M$718.47M to $923.75M$323.31M to $415.69M
Google TPU v6e85.53M to 109.97M$230.94M to $296.92M$104.35M to $134.16M
Google TPU7x Ironwood34.03M to 43.76M$408.42M to $525.11M$183.79M to $236.30M
AWS Trainium2117.72M to 151.35M$263.11M to $338.28Mnot published

Hundreds of millions of dollars at list price, and $428M to $550M even at the 3-year committed rate we have for the most widely available GPU, the H100. The TPU v5e row is arithmetic only: with 16 GB per chip, a 1T dense training run would have to shard its 16 TB of state across thousands of chips before activations, which is not how anyone would build it.

Over-trained on 40T tokens:

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM149.72M to 192.50M$1.03B to $1.32B$0.81B to $1.04B
NVIDIA B200 (HGX)65.84M to 84.66M$0.94B to $1.21Bnot published
AMD MI300X113.96M to 146.52M$683.76M to $879.12M$300.17M to $385.93M
Google TPU v6e161.38M to 207.49M$435.73M to $560.22M$196.89M to $253.14M
Google TPU7x Ironwood64.22M to 82.56M$770.60M to $990.77M$346.77M to $445.85M
AWS Trainium2222.11M to 285.57M$496.43M to $638.27Mnot published

At this point the rental model itself starts to break. A run on 16,384 H100s at Chinchilla tokens would take about 224 to 288 days of wall clock, between seven and ten months. On 65,536 H100s it drops to 56 to 72 days, but 65,536 GPUs at 0.91 kW each with a PUE of 1.2 is a site drawing about 72 MW, and nobody rents that on demand. Anyone training a dense 1T model owns or has reserved the capacity for years, which is why the 3-year column, or the purchase economics in a total cost of ownership model, is the realistic one at this size.

Memory for 1T dense. With 128 layers, a hidden size of 25,600 and 200 attention heads of size 128 (about 1.007T parameters), model state is about 16.1 TB: 2 TB of BF16 weights, 2 TB of gradients and 12 TB of FP32 master weights and Adam states. Just holding that, at 90% usable memory, takes at least 223 H100s, 99 B200-class GPUs, 93 Ironwood chips or 62 MI355X GPUs. Real layouts use far more devices than that minimum, for throughput.

LayoutDevicesModel state per deviceActivations per deviceTotalFits?
H100: TP 8, PP 16, DP 128, no ZeRO16,384125.8 GB57.0 GB182.9 GBNo (80 GB)
H100: TP 8, PP 16, DP 128, ZeRO-116,38432.2 GB57.0 GB89.2 GBNo (80 GB)
H100: same, with full activation recomputation16,38432.2 GB3.4 GB35.6 GBYes
B200: TP 8, PP 8, DP 256, ZeRO-116,38463.7 GB57.0 GB120.7 GBYes (about 180 GB)
MI355X: TP 8, PP 8, DP 256, ZeRO-116,38463.7 GB57.0 GB120.7 GBYes (288 GB)
Ironwood: TP 16, PP 8, DP 128, ZeRO-116,38432.2 GB28.5 GB60.7 GBYes (192 GiB)
Trainium2: TP 16, PP 16, DP 64, ZeRO-116,38416.5 GB28.5 GB45.0 GBYes (96 GiB)
TPU v6e: TP 16, PP 32, DP 32, ZeRO-116,3848.6 GB28.5 GB37.1 GBNo (32 GB)
TPU v6e: same, with full recomputation16,3848.6 GB1.7 GB10.3 GBYes

Activations assume one 4,096-token sequence per micro-batch, sequence parallelism alongside tensor parallelism, and selective recomputation unless stated. With one-forward-one-backward pipeline scheduling, the first stage holds activations for as many micro-batches as there are stages, so the activation memory per device works out to roughly all layers' worth divided by the tensor parallel degree, as Korthikanti and colleagues show. Full recomputation keeps only each layer's input and replays the forward pass in the backward pass, which costs roughly one extra forward pass, about a third more compute, and lowers hardware efficiency relative to MFU. Which layout a team actually picks depends on the interconnect: tensor parallelism of 16 only makes sense where 16 devices share a fast scale-up domain, such as a TPU slice or an NVL72 rack, not across two 8-GPU servers.

1T parameters, mixture of experts: worked estimate

Our MoE model has 1T total parameters and 50B active per token. Compute follows the active count, so at 21.2T tokens it needs 6 × 50B × 21.2T = 6.36 × 10^24 FLOPs, exactly one twentieth of the dense 1T run.

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM3.97M to 5.10M$27.30M to $35.10M$21.41M to $27.52M
NVIDIA H200 SXM3.97M to 5.10M$31.39M to $40.36M$20.94M to $26.92M
NVIDIA B200 (HGX)1.74M to 2.24M$24.85M to $31.95Mnot published
NVIDIA B300 (HGX)1.74M to 2.24M$31.06M to $39.94Mnot published
AMD MI300X3.02M to 3.88M$18.12M to $23.30M$7.95M to $10.23M
AMD MI355X1.57M to 2.02Mno public price checkednot published
Intel Gaudi 32.18M to 2.80Mno public price checkednot published
Google TPU v5e19.93M to 25.62M$23.91M to $30.75M$10.76M to $13.84M
Google TPU v5p8.55M to 11.00M$35.92M to $46.19M$16.17M to $20.78M
Google TPU v6e4.28M to 5.50M$11.55M to $14.85M$5.22M to $6.71M
Google TPU7x Ironwood1.70M to 2.19M$20.42M to $26.26M$9.19M to $11.81M
AWS Trainium25.89M to 7.57M$13.16M to $16.91Mnot published

Over-trained on 40T tokens:

ChipChip-hours (45% to 35% MFU)On-demand cost3-year commitment cost
NVIDIA H100 SXM7.49M to 9.62M$51.50M to $66.22M$40.39M to $51.93M
NVIDIA B200 (HGX)3.29M to 4.23M$46.89M to $60.28Mnot published
AMD MI300X5.70M to 7.33M$34.19M to $43.96M$15.01M to $19.30M
Google TPU v6e8.07M to 10.37M$21.79M to $28.01M$9.84M to $12.66M
Google TPU7x Ironwood3.21M to 4.13M$38.53M to $49.54M$17.34M to $22.29M
AWS Trainium211.11M to 14.28M$24.82M to $31.91Mnot published

Tens of millions of dollars instead of hundreds, and 45 to 58 days on 4,096 H100s for the Chinchilla-token case. That gap is the reason most of the largest published open models are mixtures of experts.

Three caveats keep this from being a free lunch.

  1. Memory follows the total, not the active count. All 16 TB of model state still has to live somewhere. Expert parallelism spreads the experts across devices: if 990B of the 1T parameters sit in experts and you use 64-way expert parallelism, each device holds about 15.5B expert parameters, which is about 248 GB of state at 16 bytes each. Adding ZeRO-1 across a data parallel group of 8 cuts that to about 85 GB. At 128-way expert parallelism, it is about 124 GB before ZeRO and 43 GB with it.
  2. Utilisation is usually lower. Routing tokens to experts on other devices needs all-to-all communication twice per MoE layer, and load imbalance leaves some experts idle. DeepSeek-V3's report devotes a long section to overlapping that communication with compute, which tells you how much it costs if you do not.
  3. The comparison is not quality-neutral. A 1T MoE with 50B active parameters is not the same model as a 1T dense one. Whether it reaches the same quality at a twentieth of the compute is an empirical question, and this post does not answer it.

Wall-clock time on a stated cluster

Chip-hours tell you the bill; wall clock tells you when you get the model. These estimates divide the compute by the cluster's delivered throughput and by 90% effective training time.

CaseCluster sizeH100B200TPU7x IronwoodMI355X
1B, Chinchilla80.4 to 0.6 days0.2 days0.2 days0.2 days
1B, 15T tokens25610.2 to 13.1 days4.5 to 5.7 days4.4 to 5.6 days4.0 to 5.2 days
10B, Chinchilla645.6 to 7.1 days2.4 to 3.1 days2.4 to 3.1 days2.2 to 2.8 days
10B, 15T tokens1,02425.4 to 32.6 days11.2 to 14.4 days10.9 to 14.0 days10.0 to 12.9 days
100B, Chinchilla1,02433.8 to 43.5 days14.9 to 19.1 days14.5 to 18.7 days13.4 to 17.2 days
100B, 15T tokens8,19231.7 to 40.8 days14.0 to 17.9 days13.6 to 17.5 days12.6 to 16.1 days
1T dense, 21.2T16,384224 to 288 days99 to 127 days96 to 124 days89 to 114 days
1T dense, 21.2T65,53656 to 72 days25 to 32 days24 to 31 days22 to 29 days
1T dense, 40T65,536106 to 136 days47 to 60 days45 to 58 days42 to 54 days
1T MoE, 21.2T4,09645 to 58 days20 to 25 days19 to 25 days18 to 23 days
1T MoE, 40T8,19242 to 54 days19 to 24 days18 to 23 days17 to 22 days

Two cautions. First, wall clock does not shrink linearly with cluster size forever: Meta's own MFU fell from 43% to 41% when it doubled from 8,192 to 16,384 GPUs, and at some point adding devices adds more communication than compute. Second, the per-chip peak ratios carry straight through. A B200's dense BF16 peak is about 2.27 times an H100's, an Ironwood chip's about 2.33 times, and an MI355X's about 2.53 times, so on paper they finish proportionally sooner. Whether they do in practice depends on the software stack reaching the same MFU on each, which is not something a spec sheet can tell you.

As a check on the method, the Llama 3 405B run at 3.79 × 10^25 FLOPs on 16,384 H100s at Meta's reported 41% MFU works out to about 66 days of pure compute, or about 73 days at 90% effective time. Meta does not publish an exact wall-clock duration for pretraining, but it does describe a 54-day snapshot period within it, which is consistent with a run of a few months.

Energy in MWh and the power bill

Energy only matters directly to whoever pays the power bill, and in a rental that is the provider, who prices it in. It still shapes where large runs can happen at all. These estimates use chip-hours from the tables, a vendor power figure, a server overhead factor of 1.3 for figures that cover only the accelerator board, and a PUE of 1.2. The overhead and PUE are our assumptions, not vendor numbers. For B200 we use NVIDIA's DGX B200 system figure of about 14.3 kW divided by 8, which already includes CPUs, memory and networking, so no further server overhead is added.

CaseH100 (0.7 kW × 1.3)MI300X (0.75 kW × 1.3)MI355X (1.4 kW × 1.3)B200 (14.3 kW ÷ 8)
10B, Chinchilla8.4 to 10.8 MWh6.8 to 8.8 MWh6.6 to 8.5 MWh7.2 to 9.3 MWh
100B, Chinchilla818 to 1,051 MWh667 to 857 MWh647 to 832 MWh706 to 908 MWh
100B, 15T tokens6,131 to 7,883 MWh5,000 to 6,429 MWh4,853 to 6,240 MWh5,296 to 6,810 MWh
1T MoE, 21.2T4,333 to 5,571 MWh3,533 to 4,543 MWh3,430 to 4,410 MWh3,743 to 4,812 MWh
1T dense, 21.2T86,652 to 111,410 MWh70,667 to 90,857 MWh68,594 to 88,192 MWh74,854 to 96,241 MWh

At $0.08 per kWh, the 100B Chinchilla run's electricity costs about $52,000 to $84,000 across these chips, and the dense 1T run about $5.5M to $8.9M. At $0.05 to $0.15 per kWh the H100 1T figure moves between about $5.6M and $16.7M at the high end of energy use. Set against the on-demand compute bill, power at 8 cents is around 1.3% of the H100 1T total. That ratio is why energy barely moves a rental decision and dominates a build decision: an owner pays the power directly, every hour, for the life of the hardware.

The energy per run is closer across chips than the chip-hours are. A newer chip draws more power per device and finishes sooner, so the products land in a similar band. Treat any claim that one chip is "greener" for training with the same care as a throughput claim: it depends on the MFU each one reaches, and on what the overhead and PUE really are in the building that houses it.

For scale, Meta's model card states 39.3M cumulative H100 GPU-hours for the Llama 3.1 family, with power counted as peak capacity per device, 700 W, adjusted for power usage efficiency. The 405B model alone used 30.84M GPU-hours. At 700 W that is about 21,588 MWh at the board level before any overhead.

Memory for training, in detail

Memory is the constraint that decides how many chips a job needs before you even think about speed. There are four kinds.

Per-parameter model state, mixed-precision Adam (ZeRO paper, section 3.1)

  BF16 weights            2 bytes   ─┐
  BF16 gradients          2 bytes    ├─ 4 bytes, needed by forward/backward
  FP32 master weights     4 bytes   ─┐
  FP32 Adam momentum      4 bytes    ├─ 12 bytes, needed only by the optimizer step
  FP32 Adam variance      4 bytes   ─┘
                         ─────────
                         16 bytes per parameter

Activations (Korthikanti et al. 2022, equation 1), per layer, 16-bit:
  s · b · h · (34 + 5·a·s/h) bytes
  s = sequence length, b = micro-batch size, h = hidden size, a = attention heads
  selective recomputation drops the 5·a·s/h term; full recomputation keeps ~2·s·b·h

Plus: temporary buffers, communication buckets, fragmentation (often 10% or more)

The activation term surprises people. For our 1T architecture at a 4,096-token sequence, 5·a·s/h is 5 × 200 × 4,096 / 25,600 = 160, which is more than four times the 34 in front of it. The attention scores, the softmax output and the dropout masks grow with the square of the sequence length, and they are what selective recomputation, or a fused attention kernel that never stores the scores, eliminates. Without it, one 4,096-token sequence through a 1T model needs about 2.6 TB of activations; with it, about 456 GB, before any tensor parallel split.

How each kind of parallelism splits memory

                    weights   grads   optimizer   activations
Data parallel (DP)    copy     copy     copy        split by batch
ZeRO-1                copy     copy     ÷ DP        split by batch
ZeRO-2                copy     ÷ DP     ÷ DP        split by batch
ZeRO-3 / FSDP         ÷ DP     ÷ DP     ÷ DP        split by batch
Tensor parallel (TP)  ÷ TP     ÷ TP     ÷ TP        ÷ TP (with sequence parallel)
Pipeline (PP)         ÷ PP     ÷ PP     ÷ PP        ~ all layers' worth on stage 1
Expert parallel (EP)  experts ÷ EP for MoE layers; dense layers as above

The ZeRO paper gives the numbers for each stage. With 64-way data parallelism, model state for a 7.5B model falls from 120 GB per device with standard data parallelism to about 31.4 GB with optimizer sharding. With all three stages, it is 1.9 GB. The paper's Table 1 even includes a 1T model: 16,000 GB of model state per device without partitioning, and 15.6 GB per device with weights, gradients and optimizer states all partitioned across 1,024 devices. More generally, optimizer-state sharding brings 16 bytes per parameter down towards 4 as the data parallel degree grows, and full sharding brings it down to 16 divided by the degree.

Each of these has a communication price. ZeRO-3 and FSDP gather each layer's weights before using them, which adds traffic proportional to the model size on every step. Tensor parallelism exchanges activations inside every layer, so it needs the fastest links you have, which is why it stays inside an NVLink, Infinity Fabric or TPU interconnect domain. Pipeline parallelism sends only activations between stages but leaves devices idle at the start and end of each batch, the "pipeline bubble", which you shrink by using many micro-batches. The Megatron-LM paper by Narayanan and colleagues is the standard reference for combining all three.

A 1T dense layout on 16,384 H100s (TP 8, PP 16, DP 128)

  one model replica = 16 pipeline stages × 8 GPUs = 128 GPUs
  ┌──────── server 1 (NVLink) ────────┐   ┌──────── server 2 ────────┐        ┌─── server 16 ───┐
  │ GPU0 … GPU7 : layers 1-8, TP=8    │ → │ layers 9-16, TP=8        │ → … → │ layers 121-128  │
  └───────────────────────────────────┘   └──────────────────────────┘        └─────────────────┘
        ▲ activations flow forward, gradients flow back, over the scale-out network

  128 such replicas, each on its own slice of data
  ZeRO-1 shards the 12 bytes/param optimizer state across the 128 replicas
  per GPU: 32.2 GB state + 3.4 GB activations (full recompute) = 35.6 GB of 80 GB

Sanity checks against published training runs

An estimate method is only worth trusting if it reproduces published numbers. Two families of open models publish enough to check.

Llama 3.1

Meta's model card gives GPU-hours on H100-80GB for each model, and the paper gives parameters, tokens and MFU.

Model6·N·DReported H100-hoursImplied MFU over the whole jobAt $6.88 (AWS on-demand)At $5.40 (Azure 3-year)
Llama 3.1 8B (15T tokens)7.2 × 10^231.46M13.8%$10.0M$7.9M
Llama 3.1 70B (15T tokens)6.3 × 10^247.0M25.3%$48.2M$37.8M
Llama 3.1 405B (15.6T tokens)3.79 × 10^2530.84M34.5%$212.2M$166.4M

The token count for 8B and 70B is listed as "15T+", so the implied MFU for those two is a lower bound: more tokens would push it higher. Meta's reported 38% to 43% steady-state MFU for 405B, applied to 3.79 × 10^25 FLOPs, gives 24.7M to 28.0M GPU-hours, or about 80% to 91% of the 30.84M reported. The remainder is the overhead every real run carries: restarts after interruptions, the long-context stage at lower MFU, and evaluation along the way. The low implied MFU for 8B fits a common pattern: small models struggle to keep a large cluster busy.

This is the most important lesson in the post. If your estimate uses steady-state MFU, add 10% to 25% for everything else, and more if your team has not run at this scale before. Meta did not publish what it paid, and the dollar columns above are what those GPU-hours would cost at today's public list prices, not what Meta spent.

DeepSeek-V3

DeepSeek's report gives a cost table: 2,664K H800 GPU-hours for pretraining, 119K for context extension and 5K for post-training, a total of 2,788K, which it prices at $5.576M assuming $2 per H800 GPU-hour. The report says this covers only the official training run and excludes prior research and ablation experiments on architectures, algorithms and data. It also says pretraining took 180K GPU-hours per trillion tokens, which is 3.7 days per trillion tokens on its 2,048-GPU cluster.

Our MoE method reproduces the shape. At 37B active parameters and 14.8T tokens, 6·N·D is 3.29 × 10^24 FLOPs, about half our 1T MoE Chinchilla case. Dividing by 2,664K GPU-hours gives about 343 TFLOPs of model compute per GPU per second. Two things follow. The $2 per hour assumption is well below the H100 on-demand list prices on major clouds today; the same 2,788K GPU-hours at AWS's $6.88 H100 rate would be about $19.2M. And the exclusion of research and ablations is the same kind of gap as in the Llama check: the headline training run is not the cost of getting there.

What these estimates leave out

  • Experiments before the final run. Scaling law sweeps, architecture ablations and data mixture tests. For a frontier model these can rival or exceed the final run; DeepSeek explicitly excludes them from its figure.
  • Failed or restarted runs. Loss spikes that force a rollback cost the compute since the last checkpoint.
  • Post-training. Supervised fine-tuning, preference tuning and reinforcement learning. DeepSeek reports only 5K GPU-hours for post-training of V3, but that varies enormously between projects.
  • Data. Licensing, collection, filtering, deduplication and tokenisation, which need CPU clusters and storage, not accelerators.
  • Storage and networking. Checkpoints of a 1T model with optimizer state are about 16 TB each. Writing them often enough to survive interruptions needs a fast parallel file system, and egress fees if you move them between clouds.
  • People. The team that keeps a 16,384-GPU job running through 466 interruptions in 54 days is not free.
  • Inference. Usually the larger lifetime cost of a model in production. That is covered in our cost per million tokens post.

Common mistakes

  1. Using total parameters for an MoE's compute. Compute follows active parameters. A 1T MoE with 50B active costs about the same per token as a 50B dense model, not a 1T one. Memory, on the other hand, follows the total.
  2. Using sparse peak as the denominator. The headline figures on several vendor pages assume 2:4 structured sparsity. Dense training does not use it. Halve the sparse figure, or use the dense column directly.
  3. Mixing precisions. Quoting MFU against BF16 peak and then multiplying by an FP8 peak double counts the gain. Pick one precision and use its peak consistently.
  4. Assuming 100% or even 60% MFU. The best published large-scale figure we found is 55.2%. Most large runs report 38% to 46%, and small or untuned jobs do worse.
  5. Forgetting the whole-job overhead. The Llama 3.1 405B check shows steady-state MFU accounts for about 80% to 91% of the GPU-hours Meta reported. Plan for the rest.
  6. Comparing prices across different billing models. On-demand, spot, Capacity Blocks and 3-year reservations are different products. A Capacity Block or a reservation price is not an on-demand price, and spot capacity can disappear mid-run.
  7. Ignoring memory until the job fails. At 16 bytes per parameter, a 10B model does not fit on one 80 GB GPU with plain data parallelism. Work out the layout before you book the cluster.
  8. Treating the cheapest compute per FLOP as the cheapest model. If one platform needs weeks of porting and tuning to reach the MFU you assumed, the engineering time and the delay are part of the cost.
  9. Scaling wall clock linearly. Doubling the cluster rarely halves the time, as Meta's 43% to 41% MFU drop shows.
  10. Quoting a single number. Every input here has a range. Report a range, and show the inputs, so the reader can rerun it.

FAQ

How much does it cost to train a 1B parameter model?

At Chinchilla-optimal data, about 20 billion tokens, roughly $220 to $880 at the on-demand list prices checked on 25 October 2026, depending on the chip, or about 76 to 97 H100-hours. On 15 trillion tokens, which is closer to how small models are trained today, about $160,000 to $655,000 at list price.

How much does it cost to train a 100B parameter model?

At 2 trillion tokens, about 1.2 × 10^24 FLOPs, the on-demand estimates range from about $2.2M to $8.7M across the chips we priced, or about $1.0M to $5.2M at 3-year commitment prices. On 15 trillion tokens, about $16M to $65M at list price. These figures cover the final run's compute only.

How much would it cost to train a 1 trillion parameter model?

A dense 1T model on 21.2 trillion tokens needs about 1.27 × 10^26 FLOPs: roughly $230M to $924M at on-demand list prices across the chips we priced, or $104M to $550M at 3-year commitment prices. A 1T mixture of experts model with 50B active parameters on the same data needs a twentieth of the compute, roughly $11.5M to $46M on demand.

What is the 6ND formula for training FLOPs?

Training compute is about 6 × N × D FLOPs, where N is the number of parameters used per token and D is the number of training tokens. The forward pass costs about 2 FLOPs per parameter per token and the backward pass about 4. Kaplan and colleagues set it out in their 2020 scaling laws paper.

What is a good MFU for LLM training?

Published large runs report 38% to 46% (Llama 3 405B at 38% to 43%, PaLM 540B at 46.2%), and MegaScale reported 55.2% on 12,288 GPUs. Planning at 35% to 45% is a reasonable range for a well-tuned job; small or new setups often land lower.

How many tokens should I train on?

For the cheapest training run at a given quality, about 20 tokens per parameter, per the Chinchilla paper. If you will serve the model heavily, training a smaller model on many more tokens usually lowers the total cost, which is why models like Llama 3 8B saw about 1,875 tokens per parameter.

How much GPU memory does training need per parameter?

About 16 bytes per parameter for mixed-precision Adam, according to the ZeRO paper: 2 for weights, 2 for gradients and 12 for FP32 master weights and the two Adam moments. Activations come on top and depend on sequence length, batch size and recomputation.

Is it cheaper to train on TPUs, Trainium or AMD GPUs than on NVIDIA?

On list price per peak FLOP, several alternatives are cheaper per chip-hour in our tables, especially with commitments. Whether a finished model is cheaper depends on the MFU your software stack reaches on each, the porting work, and availability at the scale you need. The tables assume the same MFU everywhere, which is the part you have to test.

Does FP8 training halve the cost?

No. FP8 doubles the peak on chips that support it, but not every operation runs in FP8, and published FP8 runs do not report double the delivered throughput of BF16 ones. Treat any saving as something to measure on your own model.

How much electricity does training a large model use?

A compute-optimal 100B model uses roughly 650 to 1,050 MWh in our estimates, and a dense 1T model at Chinchilla tokens roughly 69,000 to 111,000 MWh, including assumed server overhead and a PUE of 1.2. At 8 cents per kWh that is under 2% of the on-demand compute bill for the 1T case.

Where Safeguard fits, and where it does not

Safeguard does not design, program or speed up chips, and it does not lower what you pay per GPU-hour. Nothing in this post depends on Safeguard, and every estimate above stands on its own.

The connection is the software stack that every one of these training runs sits on. A training cluster runs a driver, a CUDA or ROCm or Neuron toolkit, communication libraries, a framework, a training library and a container image, and every one of those is a versioned open source or vendor component with its own security advisories. Our GPU software supply chain post walks through those layers. A month-long run on thousands of accelerators is expensive to interrupt, which makes it tempting to pin everything and never patch; knowing exactly which components and versions are in the image is what lets you make that trade-off on purpose.

What Safeguard does there, as generally available features: it generates and analyses SBOMs in SPDX and CycloneDX, scans repositories, container images and SBOM files for known vulnerable dependencies, shows which projects contain a given component and version, ranks findings with reachability analysis, and can open fix pull requests through autonomous remediation, which ships switched off. AI asset inventory (AI-BOM discovery) is in early access. What Safeguard does not do: it does not scan GPU firmware or host kernel drivers that live outside the images and SBOMs you give it, and it does not make the training run faster or cheaper.

A training image pulls framework wheels, communication libraries and serving dependencies, and each rebuild for a new run pulls them again. The same supply chain hygiene that applies to any service applies to the image you are about to run on a cluster costing thousands of dollars an hour.

More in this series

Other posts in our AI chips and costs series:

Fix it without waiting for upstream

Whatever the vulnerability, most of the risk sits in two gaps. The first is the time between a fix being published and that fix actually running in your production builds. The second, and worse, is the time before any fix exists at all, while a maintainer works out a patch and a release schedule. Waiting through both gaps is a habit, not a requirement. Safeguard gives teams three ways to close them.

1. Autonomous remediation: pull requests, not tickets

When a fixed version exists, Safeguard's Griffin models open a tested, policy gated pull request that moves the affected dependency to the safe version. You can run it on one repository or in bulk across every project that carries the vulnerable version. Remediation covers eight categories, including dependencies, licenses, security posture and findings. Reachability analysis ranks the vulnerable code paths your application actually calls first, so the first pull requests you merge are the ones that matter most. Autonomous remediation ships switched off, with every category set to Manual, so your team decides how much runs on its own and what still needs a human approval.

2. Gold Open Source: the safe version in seconds, free

gold.safeguard.sh is free and needs no login. Search any CVE or package to see affected and fixed versions, CVSS, EPSS, CISA KEV status and a recommended safe version, or use the "Am I affected?" checker. The same data is available through a free read API, README status badges and RSS threat feeds. The safeguard-sh/gold-scan-action GitHub Action can fail a build on a known exploited vulnerability, on any known vulnerability, or never, so a version you have just removed cannot quietly come back in next week's merge.

3. Gold Registry: start from components that are already fixed

registry.safeguard.sh provides hardened, drop in replacements for upstream packages and container images. Every Gold artifact is held continuously to zero exploitable critical or high CVEs, zero malware and a completed license check, with SLSA L3 or higher provenance, a Sigstore signature and a public evidence page you can hand to an auditor. An artifact loses its Gold badge if it regresses. Teams can point their own package directory at the registry so hardened equivalents resolve without changing how developers install anything.

When upstream has no fix yet, or will not ship one, Safeguard first works to get the fix accepted upstream. If the issue is severe or upstream will not move, Safeguard builds a fork, fixes the vulnerability there and publishes a hardened Gold build, so you are not stuck on a maintainer's release schedule. You can also request a hardened, compatibility tested build of a specific package. This fork and patch flow is in early access today, so ask which packages it covers before you plan around it.

Your situationWhat to use
A fixed version existsAutonomous remediation opens the upgrade pull request; Gold Open Source confirms the safe version
You need to know today whether you are affectedGold Open Source lookup and "Am I affected?" checker, free and without login
You want vulnerable versions to stop shippingThe Gold scan GitHub Action in CI, plus Safeguard policies and gates
Upstream has no fix yet, or will not ship oneA custom Gold request; fork and patch (early access)
You want to start clean on new projectsPull hardened components and images from Gold Registry

One honest limit: when the vulnerable code lives in a vendor appliance, a hosted service or an operating system runtime you do not build yourself, the fix still has to come from that vendor or distribution. The steps above apply to the open source dependencies and container images you build and ship, which is where most teams carry the largest and least tracked share of their exposure.

See how Safeguard would help

You can download Safeguard and follow the CLI docs to try these yourself.

The first demo sets up the Safeguard runner on your own machine, approves it with its device code and then scans from the terminal. For a training team, that is how you would scan the container image a run will use, and the repository that builds it, without sending source or images off the machine, for example with safeguard scan --image against the training image pinned by digest.

Click through it at your own pace, or open it full screen.

The second demo is a real CLI session: install, open the interactive terminal and ask it to fix a lodash CVE. The assistant reads the finding and the advisory, asks before any command that changes something, edits package.json to the fixed version, runs npm install and npm test with approval, prints a summary and pushes nothing. The same flow applies to the Python side of a training stack, such as moving a pinned framework or data loading dependency to a fixed version and rerunning your tests before the next run starts.

Click through it at your own pace, or open it full screen.

The third demo connects Claude to the Safeguard MCP server with OAuth and shows how to choose which tools Claude can use. When a new advisory lands for a library in your training image, an engineer can ask which projects contain the affected component and version, and get the answer from their own scan data.

Click through it at your own pace, or open it full screen.

Quick check

A 1T parameter mixture of experts model has 50B active parameters. How much training compute does it need on 21.2 trillion tokens, and how much model state memory?

Compute follows the active parameters: 6 × 50B × 21.2T is about 6.36 × 10^24 FLOPs, one twentieth of a dense 1T model on the same data. Memory follows the total: at 16 bytes per parameter for mixed-precision Adam, about 16 TB of model state, the same as the dense model, which is why expert parallelism and ZeRO sharding are needed to spread it across devices.

Meta reports 30.84M H100-hours for Llama 3.1 405B and 38% to 43% steady-state MFU. Why does 6·N·D at that MFU account for only about 80% to 91% of the hours?

Because the reported hours cover the whole job, not just steady-state pretraining. Restarts after hundreds of interruptions, the long-context stage that ran at 38% MFU, and other work all consume GPU-hours that the steady-state figure does not see. Across the whole job the implied MFU is about 34.5%, so a plan built on steady-state MFU should add 10% to 25%.

Sources

Papers and reports:

Chip specifications:

Prices, all checked 25 October 2026:

Last reviewed: 25 October 2026. Prices change often; recheck the linked price pages before relying on any figure here.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.