On-prem sizing · TCO · ROIC

Why your on-prem GPUs lose to the API below 45% utilisation

Computed 2026-10-30 from the Mintok production catalog and finance parameters with the calcChip sizing kernel. Nothing here is a sales estimate.

Why on-prem utilisation decides profitability

As compute becomes scarce, the compute economy comes back into focus: how much of the throughput a deployment paid for is actually serving tokens decides whether the deployment makes money. On-prem makes this severe. The fixed cost is already sunk, every idle accelerator-hour is cost with no revenue against it, and the only way to serve more demand is another capex cycle. Sovereign and air-gapped sites feel it hardest because they cannot burst to a cloud, and in practice they have almost no visibility into the total cost of ownership or the return on the capital that bought the hardware.

Mintok gives on-prem operators that visibility at the token level. It takes a model, a target throughput and a chip, sizes the fleet from physics rather than from vendor box counts, prices every token the fleet can serve, and shows what each lever (precision, batch, utilisation, chip, financing) does to cost per million tokens and to return on invested capital.

The sizing kernel

Chip count is the largest of three constraints, and whichever wins is the binding constraint. Compute counts every token (prefill and decode); bandwidth counts decode only, because each decode step re-reads the weights once per batch; memory is the residency floor.

N = max( N_compute , N_bandwidth , N_memory , 1 )

N_compute   = ceil( 2 × T × P_active / (F_peak × s_prec × MFU × m_prec) )
N_bandwidth = ceil( T_out × P_active × b / (B × BW × MBU) )
N_memory    = ceil( (P_total × b + B × L × kv_tok) / C_mem )

T is target tokens per second (T_out for decode), P is parameters (active for MoE compute and bandwidth, total for memory residency), b is bytes per parameter, B is batch size, L is average context length, kv_tok is KV-cache bytes per token, F is peak TFLOPS, BW is memory bandwidth, C is memory per chip. MFU and MBU are the fractions of peak compute and peak bandwidth achieved in practice.

Per-chip throughput is the inverse of the same terms, and it is what turns a fleet into tokens:

tok/s per chip = min( B × BW × MBU / (P_active × b) ,
                      F_peak × s_prec × MFU × m_prec / (2 × P_active) )

Precision is one lever with three effects, applied from a single precision map:

PrecisionBytes per parameterCompute scale sMFU penalty m
BF16 / FP1621x1.00
FP8 / INT812x0.90
FP4 / INT40.54x0.80
1-bit0.12516xMFU capped at 0.25

Mixture-of-experts models use active parameters for compute and bandwidth and total parameters for memory. The KV cache grows with batch, context and layer count, so a long-context workload can flip a chip from bandwidth-bound to memory-bound without any change in demand. A latency mode adds time-to-first-token and tokens-per-second-per-user targets on top, which caps batch size and raises chip count.

TCO and ROIC

Annual cost of an owned fleet is depreciation plus power plus an operating overhead plus fixed labour and software; tokens served are capacity times utilisation; cost per million tokens is the ratio. Return on invested capital compares the market value of the tokens served with that annual cost, over the capital deployed.

Capex = N × c_chip + racks × c_rack
Dep   = Capex × (1 − r) / Y
Power = N × TDP × PUE × 8760 × p_kWh

Cost_yr   = (Dep + Power) × (1 + o) + Labour + Software
Tokens_yr = N × tok/s_chip × 31,536,000 × u

$/Mtok = Cost_yr / (Tokens_yr / 1,000,000)
ROIC   = (Tokens_yr × p_market − Cost_yr) / Capex

The market price is the blended API price for the same model from the catalog, so ROIC answers a plain question: does owning this fleet return more than buying the same tokens would cost? Lease and cloud paths use the same token denominator with the lease rate or the cloud hourly rate in the numerator. The finance parameters below are the live values the examples run on:

ParameterValue
Amortisation years Y4
Residual value r10%
WACC8%
Lease term, escalation3 years, 3% a year
Electricity p$0.07 per kWh
PUE1.3
Operating overhead o15% of depreciation plus power
Rack infrastructure$25K per rack
Labour, software per cluster$30K, $5K a year
Default utilisation u70%
Default MBU50%
Default MFU40%

Worked example: Gemma 4 31B on one rack of 32 H200

The same 32 deployed H200s serve four times the tokens at FP4 as at BF16, and only the FP4 fleet above roughly 45 percent utilisation returns more than the tokens would cost from an API. Inputs: Gemma 4 31B (31B dense, 262k context, tier 3, API price $0.12 in and $0.35 out per million tokens), H200 SXM ($38K capex, 700 W, 141 GB, 4.8 TB/s), batch 32, 8k average context, 3 input tokens per output token, KV cache assumed at 0.25 MB per token at BF16.

PrecisionBytes per paramWeights + KV resident GBTokens/s per chipFleet capacity tok/s (32 chips)Binding
BF1621281,23939,600bandwidth
FP81642,47779,300bandwidth
FP40.5324,955158,600bandwidth

The fleet's annual cost is the same at every precision and utilisation, because the boxes are deployed: capex $1.241M (32 x $38K plus one $25K rack), depreciation $279K after 10 percent residual, power $18K at 1.3 PUE, overhead 15 percent, labour and software $35K, total $377K a year. What changes is how many tokens that $377K buys.

Only FP4 above about 45% utilisation beats the API price for Gemma 4 31B on H200Owned cost per million tokens, one rack of 32 H200, batch 32, 8k context, Mintok finance parametersBF16FP4blended API price for the same model$3.01$0.7510% utilisation$1.51$0.3820% utilisation$0.60$0.1550% utilisation$0.43$0.1170% utilisation$0.18
Mintok calcChip and cost engine; H200 SXM and Gemma 4 31B catalog rows as of 2026-10-30.

Return on invested capital at the blended API price of $0.1775 per million tokens:

UtilisationTokens a year, BF16ROIC, BF16Tokens a year, FP4ROIC, FP4
10%125 B-28.6%500 B-23.2%
20%250 B-26.8%1,000 B-16.0%
50%625 B-21.4%2,500 B5.4%
70%875 B-17.8%3,500 B19.7%

Two readings. First, a 31B model's API price is a commodity, so a rack of H200s at BF16 never beats it; the only route to a positive return is FP4 and high utilisation, or a cheaper chip. Second, the move from 10 to 20 percent utilisation halves cost per token but moves ROIC only a few points at BF16, because the value of the tokens is small against $377K of fixed cost. Utilisation is the lever, and precision is the multiplier on it.

From boxes to physics

Mintok takes telemetry from a deployment (requests, input and output tokens, latency per model) and converts it into a usage profile: average and peak tokens per second by model, context distribution, input ratio. That profile, not the number of boxes, is what the kernel sizes. For the Gemma 4 31B workload, if telemetry shows a peak of 5,000 output tokens per second, the requirement is 5 H200s at BF16 or 2 at FP4; at a 20,000 peak it is 17 or 5. A 32-chip rack bought on vendor guidance is 6 to 16 times the physics requirement, and that gap is the utilisation problem measured in dollars before the hardware is ordered.

The same kernel runs across every priced chip in the catalog. One rack of 32 at FP8 and 20 percent utilisation, Gemma 4 31B:

ChipTokens/s per chipCapex $KAnnual cost $K$ per million tokensROIC
MI300X2,7487292460.443-20.2%
MI355X (priced at MI350X capex)4,1291,4654550.546-21.0%
H200 SXM2,4771,2413770.753-23.2%
B200 SXM4,1292,4256920.830-22.4%
H100 SXM1,7291,0493270.937-25.3%

At this utilisation the cheapest chip per token is the one with the lowest capex per unit of bandwidth, not the fastest one. B200 doubles throughput over H200 and still costs more per token, because its capex per chip doubles too and the fleet is idle 80 percent of the time.

Acquisition mode is the last lever, and at low utilisation it is the biggest. H200 at FP8 and 20 percent utilisation, 500 billion tokens a year:

Path$ per million tokensBasis
Own0.753annual cost above
Cloud, pay per hour used0.729$6.50 per chip-hour, 20% of hours
Lease, 3-year2.458$3.2K per chip per month, paid whether used or not
Cloud, reserved 24x73.644$6.50 per chip-hour, every hour

Owning only wins once utilisation is high enough that the fixed cost spreads thin; below that, the elastic path is cheaper even at list cloud rates. Mintok's capacity plan makes this a load-duration-curve decision: own the base layer whose capacity factor exceeds the crossover, rent the peaks. For an air-gapped site with no rent tier, the result collapses to one number, the utilisation the fleet must reach to pay back, and that number belongs in the business case before the purchase order.

The levers

Every input below is a field the user sets or the catalog supplies; the kernel recomputes chips, cost per million tokens and ROIC on each change.

GroupLeverWhat it moves
WorkloadModel (154 in catalog)parameters, active parameters, layers, context, default precision
WorkloadPrecision: BF16, FP8, FP4, 1-bitbytes per parameter, compute scale, MFU penalty; throughput and memory floor
WorkloadTarget tokens per second, peak factorchip count directly
WorkloadInput to output ratiocompute term (prefill) versus bandwidth term (decode)
WorkloadBatch sizebandwidth throughput up, KV memory up, latency per user up
WorkloadAverage context lengthKV cache, memory floor, can flip the binding constraint
WorkloadLatency targets: time to first token, tokens per second per usercaps batch, raises chip count
WorkloadMFU, MBUachieved fraction of peak compute and bandwidth
WorkloadUtilisationtokens served per year; the dominant ROIC lever
HardwareChip (54 in catalog)TFLOPS, memory, bandwidth, TDP, capex, lease, cloud rate
HardwareRack architecture (34)chips per rack, rack power, air-gap capability, rack infrastructure cost
HardwareTensor-parallel group sizereplica granularity, interconnect need
FinanceAcquisition mode: own, lease, cloud, hybridwhich cost path and which crossover
FinanceAmortisation years, residual valuedepreciation per year
FinanceWACCNPV of the multi-year comparison
FinanceLease term, escalationlease path cost
FinanceElectricity price, PUEpower cost per year
FinanceOperating overhead, labour, software per clusterfixed annual cost
FinanceMarket price per million tokens (API or rental benchmark)the value side of ROIC
DeploymentCloud region or on-prem siterental anchors, power price
DeploymentAir-gapped mode and sovereign stackhardware premium, no rent tier, accreditation gates
DeploymentLead time and rack lumpinessorder schedule, bridge rental
DeploymentCarbon intensity of the gridcarbon per million tokens alongside cost

Catalog coverage

The production catalog holds 54 chip profiles from 15 vendors, 154 model profiles from 16 vendors and 34 rack architectures, maintained by watcher agents that stage or auto-apply launches, price changes and deprecations. Browse the public pages at /silicon and /models.

DimensionCoverage
Chips54: NVIDIA 13, AMD 8, Google TPU 7, Qualcomm 5, Tenstorrent 4, AWS 3, Cerebras 2, Groq 2, Huawei 2, Meta 2, Microsoft 2, Intel 1, SambaNova 1, Ambiq 1, Apple 1
Chip classesdatacenter accelerators, wafer-scale, SRAM inference, captive hyperscaler silicon, edge modules, wearable SoCs
Priced for ownership28 chips carry capex; 13 carry a lease rate; 17 carry a cloud hourly rate
Models154: Google 25, Anthropic 22, Mistral 20, OpenAI 17, Cohere 15, xAI 10, Alibaba 9, Meta 7, Moonshot 7, DeepSeek 6, others 16
Sizable models72 with parameter counts and architecture, including 18 mixture-of-experts rows with active parameters
Capability tiersT1 Nano to T8 Ultra on 102 models
API prices112 models carry input and output prices per million tokens; 393 price-history points recorded
Rack architectures34, of which 15 are flagged air-gap capable; power density from 0.5 kW to 600 kW per rack

Gemma 4 31B has no layer count in the catalog, so the KV cache per token in the worked example is an assumption (0.25 MB at BF16) rather than a derived value. MI355X carries no capex in the catalog and was priced at the MI350X row.

Figures as of 2026-10-30. Catalog values change as watchers apply updates; rerun on the calculator for current numbers.