Assumptions
The formula, and everything it assumes
One formula, six assumptions and a list of what is left out. Each assumption is an editable field in the estimator. Nothing here is a measurement.
The formula
Four lines
FLOPs = factor × parameters × tokens
useful FLOP/s per GPU = dense BF16 TFLOPS × 10^12 × MFU
GPU-hours = FLOPs ÷ useful FLOP/s per GPU ÷ 3,600
cost = GPU-hours × price per GPU-hour
Assumptions
What the estimate takes as given
Full fine-tune factor
6. About 2 x parameters x tokens for the forward pass plus about 4 x for the backward pass, because the backward pass computes gradients for activations and for every weight.
LoRA or QLoRA factor
4. The forward pass costs about 2 x parameters x tokens and the backward pass about 2 x, because gradients for the frozen base weights are not computed. The small adapter matrices and QLoRA dequantisation are not counted.
MFU
35% by default. The share of the GPU’s peak dense BF16 throughput that training achieves. Real values depend on the software, sequence length, batch size and hardware. This is an assumption and not a measurement of any GPU or provider.
Peak throughput
The maker’s printed dense BF16 tensor figure for the GPU. Dense means without structured sparsity. Where a maker prints only a sparse figure the GPU is left out.
Scaling
Work spreads evenly, so wall-clock time is GPU-hours divided by the GPU count. The scenario pages use 8 GPUs. Communication losses are not modelled, and cost does not depend on the count.
Price
Each provider’s lowest published on-demand price per GPU-hour for the GPU, provider-set prices only, read from its pricing page. Billing granularity is not applied, so providers that bill per hour could cost a little more.
Left out
What is not modelled
- Whether the model, optimiser state and activations fit in GPU memory. A job that does not fit needs more GPUs or a different method.
- Activation checkpointing, which recomputes work and raises FLOPs. Raise the factor to model it.
- Mixed or lower precision such as FP8. Only dense BF16 is used.
- Data preparation, evaluation runs, failed or restarted jobs, storage, data transfer and tax.
- Any measured benchmark. We did not run or read one, so none is shown.
Questions
Assumptions: common questions
Why 6 for a full fine-tune?
It is the common rule of thumb: about 2 FLOPs per parameter per token forward plus about 4 backward. It ignores attention cost and other small terms.
Why 4 for LoRA?
With the base weights frozen, the backward pass skips weight gradients for them, leaving roughly the forward pass plus the activation-gradient pass. Adapter costs and QLoRA dequantisation are not counted.
Where does 35% MFU come from?
It is our default assumption, not a finding. Change it to match your own runs.
How many GPUs have a printed dense BF16 figure?
12 entries: MI355X, MI350X, MI300X, MI325X, H100 SXM, GH200, H100 PCIe, L40S, A100 80GB, L40, A40, and A10. 11 of them have a current price.
Disclosure
Fine-Tune Cost Lab is published by the Runcrate team, who also run Runcrate, an AI cloud. Runcrate is listed in the table, marked "ours, live". It is sorted by price like every other row, with no pinned position. Other providers' prices are read from their own public pricing pages. We have no paid placement.