WattOps Start free
← Blog

Self-hosting a 1-trillion-parameter model: when 8 H200s beat the API

Measurement · 28 October 2026 · 6 min read

On this pageHow it was measuredTest 1: the same machine, 1 to 256 usersTest 2: 256 to 1,024 simulated users, mixed trafficWhat the numbers showAgainst the API priceYour price, not oursMeasure your own

We served Kimi K2 Thinking, a model with 1 trillion parameters (32 billion active), on 8 rented NVIDIA H200s with vLLM, and measured what a million tokens cost at every load, with the GPUs' own energy counters running the whole time.

The result: the same 8 GPUs, in the same hour, cost $76.93 per million tokens with 1 user and $1.61 with 256 users at once, 48 times less. The API for the same model costs $2.58 for that work. So self-hosting was 30 times more expensive than the API when quiet and 37% cheaper when busy. In a second test, with 1,024 simulated users sending documents of mixed length, it reached $1.28 against the API's $3.68, and the first token still came back in 0.51 s.

The GPU hour costs the same whether it serves 1 user or 1,000. What you pay per token depends on how busy you keep it.

GPU cost per million tokens for a 1-trillion-parameter model on 8 NVIDIA H200s, by users at once: 1 user $76.93, 8 users $14.50, 32 users $4.96, 128 users $2.22, 256 users $1.61, against $2.58 for the API

How it was measured

Test 1: the same machine, 1 to 256 users

Every answer was exactly 256 tokens to a 34-token prompt, so each load did a known amount of work. Three rounds per load, medians reported.

Users at onceOutput tokens/sGPU energy per tokenAverage power, 8 GPUsGPU cost per 1M tokensElectricity per 1M tokens
1134.917.96 J2,424 W$76.93$0.75
8716.15.13 J3,676 W$14.50$0.21
322,092.81.79 J3,752 W$4.96$0.07
1284,674.31.01 J4,727 W$2.22$0.04
2566,432.30.79 J5,076 W$1.61$0.03

Idle: 648 W for the 8 GPUs with no model, 1,016 W with the model loaded.

Test 2: 256 to 1,024 simulated users, mixed traffic

The same model and server on a different machine. A load generator played the users. Each request was a synthetic document of 1 to 12 paragraphs plus a question, about 580 prompt tokens on average, asking for an answer of 64 to 512 tokens. Requests arrived at random, 2 per user. One measurement per load, and no request failed.

Users at onceOutput tokens/sGPU energy per output tokenGPU cost per 1M output tokensFirst token, p50 / p95Whole answer, p50 / p95
2562,618.81.77 J$2.900.27 s / 0.43 s16.7 s / 32.1 s
5124,182.61.19 J$1.820.37 s / 0.47 s24.6 s / 45.0 s
1,0245,960.40.87 J$1.280.51 s / 0.86 s36.4 s / 66.2 s

Throughput was still rising at 1,024 users, so this machine could take more.

Per request on 8 H200s with 256 and 1,024 simulated users: first token 0.27 s and 0.51 s, whole answer 16.7 s and 36.4 s, about 17 and 8 tokens a second per user, $2.90 and $1.28 per million tokens

More users made tokens cheaper and each answer slower. The first token stayed under a second, which is what people notice. The wait moved to the stream: at 1,024 users each answer streamed at about 8 tokens a second, close to reading speed.

What the numbers show

1. The users set the cost, not the GPU. From 1 to 256 users, tokens per second rose 48 times on the same machine, and the cost per token fell by the same 48 times. The hourly price never changed.

2. Busy is not the same as useful. With 1 user, the 8 H200s drew 2,424 W, well over twice their idle power with the model loaded, and made only 135 tokens a second. Power draw and utilization look busy long before the GPUs are full.

3. Electricity is the small part. Electricity was 1 to 2% of the cost of a token in test 1. Energy per token fell 23 times from 1 user to 256, but the bill is the GPU hour.

4. Self-hosting has a break-even, and it is an average. For 8 H200s at $37.37 an hour to beat the API's $2.58, they must serve about 4,000 tokens a second averaged over every hour, quiet hours included. In test 1 that load lies between 32 and 128 users at once, about 63% of the busiest throughput we measured. In test 2, at $27.38 an hour against $3.68, the bar is about 2,070 tokens a second, 35% of the throughput at 1,024 users. A cluster that is busy at noon and empty at night pays for the night too.

Against the API price

Kimi K2's API list price is $0.60 per million input tokens and $2.50 per million output tokens. Counting the prompts each test sent, that is $2.58 per million output tokens for test 1 and $3.68 for test 2's longer documents.

SetupSelf-hosted GPU costAPISelf-hosted against the API
1 user$76.93$2.5830× more
256 users$1.61$2.5837% less
1,024 simulated users, mixed traffic$1.28$3.6865% less

These are GPU rental costs only, not staff, storage or the rest of a server.

Your price, not ours

Tokens per second is what was measured. To use your own GPU price:

cost per 1M tokens = price per hour × 1,000,000 ÷ (tokens per second × 3,600)

The price per hour is for all the GPUs together. At $2.00 per H200 hour ($16 for 8), the 1,024-user load would cost $16 × 1,000,000 ÷ (5,960 × 3,600) = $0.75 per million tokens.

Measure your own

The question that decides self-hosting is not "how fast is the model" but "how busy are my GPUs, hour by hour". joules measures the energy of any run from the GPUs' own counters, and from joules 0.8.1, joules agent on a vLLM or SGLang server sends tokens per second and cost per million tokens to WattOps Live every few seconds, beside the API price you set. The LLM energy guide shows how to run a test like this one.

Every result we measure goes on the cost per token board, one row per test. Next: OpenAI's gpt-oss-120b on one H200.