An independent measurement of what a Tiiny Pocket actually does, as opposed to what a spec sheet says it does. Prefill against prompt length, throughput over a long generation, what happens when more than one person uses the box, and what a reasoning model charges for the tokens nobody reads.
The same model on a busier box, or over a slower link, is a different number. This is the part a stranger needs before trusting any of it.
The newest run for each of the 20 models with something to compare, not the best run: this is what the box does now. Colour is the same for a given model in every chart below. Run 5 runs, 20260919.
One unbroken generation each, same prompt, same box. This is the number that decides whether something feels instant.
Qwen3.6-35B-A3B-turbo leads at 32.5 tok/s, 5.1x the slowest measured, Qwen3.6-27B at 6.4. Every one of these is a single stream on an idle box.
The box has 100 NPU units and a loaded model holds its share of them for as long as it is resident. This is what each one returns for what it occupies, which is the question that decides what to keep loaded.
Qwen3.5-9B returns 1.31 tok/s for every unit it holds and Qwen3.6-27B returns 0.13, a 9.8x difference in what the same slice of the box buys. In plain terms: Qwen3.5-9B occupies 16 of the 100 units and leaves 84 for everything else, while Qwen3.6-27B occupies 48 and leaves 52. The fastest model measured, Qwen3.6-35B-A3B-turbo at 32.5 tok/s, is not the most efficient: it costs 55 units to get there, against 16 for Qwen3.5-9B at 20.9 tok/s. If one model is going to sit resident while the box does other work, that gap is the whole decision; if the box only ever runs one thing, it does not matter and the previous chart is the one to read.
How fast each model reads a prompt, at four lengths. The x axis is logarithmic because the prompts are.
Qwen3-4B-Instruct-2507 reads fastest at its best length, 2,277 tok/s, against 309 for GLM-4.7-Flash. A line that climbs to the right is a model that gets cheaper per token as the prompt grows.
Every caller added together as more of them arrive at once. A line that climbs is a box that batches; a flat line is a box that queues.
All 20 of them are flat, the best managing 1.18x at its deepest level. This is one accelerator serving one sequence at a time, so a second caller waits rather than shares. It is the single most important thing to know before putting a Tiiny behind anything with more than one user.
Newest first. Each block is one model on one day, with the numbers exactly as the device reported them.
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| music | gateway/v1/music/generate | 404 | neither a WAV nor a session id came back |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| music | gateway/v1/music/generate | 400 | neither a WAV nor a session id came back |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| music | gateway/v1/music/generate | 400 | neither a WAV nor a session id came back |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| music | gateway/v1/music/generate | 400 | neither a WAV nor a session id came back |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| embed | gateway/v1/embeddings | 502 | the response could not be read as this test expects |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| speech | gateway/v1/audio/speech | 500 | no WAV came back, in any envelope this knows |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| speech | gateway/v1/audio/speech | 500 | no WAV came back, in any envelope this knows |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| speech | gateway/v1/audio/speech | 500 | no WAV came back, in any envelope this knows |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/ocr | 400 | the response could not be read as this test expects |
| ocr fallback | gateway/v1/chat/completions | 400 | the chat fallback refused it too, so there is no route left to read a page with |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/ocr | 400 | the response could not be read as this test expects |
| ocr fallback | gateway/v1/chat/completions | 400 | the chat fallback refused it too, so there is no route left to read a page with |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/chat/completions | 400 | the /v1/ocr route refused it and the chat fallback refused it as well |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/chat/completions | 400 | the /v1/ocr route refused it and the chat fallback refused it as well |
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 11.3x the wait, 0.94s at 68 tokens against 10.59s at 6,256. Reading got cheaper per token as the prompt grew, from 74 to 447 tok/s. Decode stayed near 37 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.94 s | 74 | 40.5 |
| 328 | 1.59 s | 210 | 39.6 |
| 1,576 | 3.90 s | 391 | 39.2 |
| 6,256 | 10.59 s | 447 | 37.4 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.02x the aggregate of one, and wall time grows in step with the callers, 8s to 65s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking on and off came out the same, within 0.1s and 0 tokens. Either this model does not reason on this prompt, or it ignores the switch. Nothing here is a cost.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
50x the prompt cost 8.2x the wait, 1.05s at 127 tokens against 8.57s at 6,315. Reading got cheaper per token as the prompt grew, from 127 to 581 tok/s. Decode stayed near 16 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 127 | 1.05 s | 127 | 20.3 |
| 387 | 1.06 s | 322 | 20.3 |
| 1,635 | 2.56 s | 602 | 17.3 |
| 6,315 | 8.57 s | 581 | 15.6 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.07x the aggregate of one, and wall time grows in step with the callers, 9s to 68s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 10.4s sooner and used 197 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 19 against 19 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 11.7x the wait, 0.57s at 72 tokens against 6.70s at 6,260. Reading got cheaper per token as the prompt grew, from 131 to 740 tok/s. Decode stayed near 46 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.57 s | 131 | 44.1 |
| 332 | 0.89 s | 385 | 44.5 |
| 1,580 | 2.18 s | 700 | 39.8 |
| 6,260 | 6.70 s | 740 | 45.5 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.06x the aggregate of one, and wall time grows in step with the callers, 8s to 35s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time. 4 request(s) failed and are not in these figures.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 10.4x the wait, 0.67s at 72 tokens against 6.92s at 6,260. Reading got cheaper per token as the prompt grew, from 115 to 718 tok/s. Decode stayed near 23 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.67 s | 115 | 23.4 |
| 332 | 0.97 s | 358 | 24.3 |
| 1,580 | 2.30 s | 668 | 22.1 |
| 6,260 | 6.92 s | 718 | 23.1 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.17x the aggregate of one, and wall time grows in step with the callers, 7s to 49s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 3.0s and 93 tokens to the same question. The decode rate barely moved, 50 against 48 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 12.4x the wait, 0.56s at 72 tokens against 6.89s at 6,260. Reading got cheaper per token as the prompt grew, from 134 to 719 tok/s. Decode stayed near 55 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.56 s | 134 | 57.0 |
| 332 | 0.92 s | 367 | 50.2 |
| 1,580 | 2.29 s | 664 | 48.1 |
| 6,260 | 6.89 s | 719 | 54.7 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.07x the aggregate of one, and wall time grows in step with the callers, 7s to 55s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 5.7s and 158 tokens to the same question. The decode rate barely moved, 25 against 25 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 11.7x the wait, 0.58s at 72 tokens against 6.81s at 6,260. Reading got cheaper per token as the prompt grew, from 128 to 695 tok/s. Decode stayed near 55 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.58 s | 128 | 58.4 |
| 332 | 0.98 s | 346 | 59.8 |
| 1,580 | 2.41 s | 634 | 57.5 |
| 6,260 | 6.81 s | 695 | 55.1 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.03x the aggregate of one, and wall time grows in step with the callers, 6s to 46s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 4.2s and 127 tokens to the same question. The decode rate barely moved, 29 against 29 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
96x the prompt cost 20.2x the wait, 0.81s at 65 tokens against 16.46s at 6,253. Reading got cheaper per token as the prompt grew, from 83 to 286 tok/s. Decode stayed near 22 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 65 | 0.81 s | 83 | 31.5 |
| 325 | 1.54 s | 179 | 31.1 |
| 1,573 | 4.10 s | 309 | 28.1 |
| 6,253 | 16.46 s | 286 | 21.6 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.11x the aggregate of one, and wall time grows in step with the callers, 12s to 86s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 30.4s and 494 tokens to the same question. The decode rate barely moved, 16 against 16 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 8.6x the wait, 1.27s at 72 tokens against 11.00s at 6,260. Reading got cheaper per token as the prompt grew, from 61 to 453 tok/s. Decode stayed near 10 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 1.27 s | 61 | 10.2 |
| 332 | 2.00 s | 174 | 10.3 |
| 1,580 | 3.96 s | 391 | 10.2 |
| 6,260 | 11.00 s | 453 | 9.9 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.18x the aggregate of one, and wall time grows in step with the callers, 19s to 128s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 16.7s sooner and used 359 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 20 against 18 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 10.4x the wait, 1.27s at 72 tokens against 13.13s at 6,260. Reading got cheaper per token as the prompt grew, from 62 to 480 tok/s. Decode stayed near 10 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 1.27 s | 62 | 9.9 |
| 332 | 1.84 s | 190 | 10.1 |
| 1,580 | 3.79 s | 409 | 9.8 |
| 6,260 | 13.13 s | 480 | 9.7 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.11x the aggregate of one, and wall time grows in step with the callers, 16s to 121s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 0.8s and 48 tokens to the same question. The decode rate barely moved, 22 against 22 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 10.5x the wait, 1.24s at 72 tokens against 12.95s at 6,260. Reading got cheaper per token as the prompt grew, from 62 to 486 tok/s. Decode stayed near 13 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 1.24 s | 62 | 12.9 |
| 332 | 1.84 s | 188 | 12.8 |
| 1,580 | 3.73 s | 413 | 12.8 |
| 6,260 | 12.95 s | 486 | 12.6 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.16x the aggregate of one, and wall time grows in step with the callers, 30s to 209s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 5.6s sooner and used 30 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 6 against 6 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 18.7x the wait, 0.27s at 68 tokens against 4.96s at 6,256. Reading got cheaper per token as the prompt grew, from 305 to 960 tok/s. Decode stayed near 21 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.27 s | 305 | 23.7 |
| 328 | 0.49 s | 736 | 22.9 |
| 1,576 | 1.32 s | 1,038 | 20.3 |
| 6,256 | 4.96 s | 960 | 20.7 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.00x the aggregate of one, and wall time grows in step with the callers, 6s to 50s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 0.8s and 48 tokens to the same question. The decode rate barely moved, 51 against 52 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 17.2x the wait, 0.34s at 68 tokens against 5.93s at 6,256. Reading got cheaper per token as the prompt grew, from 209 to 799 tok/s. Decode stayed near 40 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.34 s | 209 | 51.4 |
| 328 | 0.62 s | 548 | 51.4 |
| 1,576 | 1.58 s | 844 | 47.2 |
| 6,256 | 5.93 s | 799 | 40.2 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.05x the aggregate of one, and wall time grows in step with the callers, 7s to 52s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 1.6s sooner and used 33 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 26 against 26 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 20.5x the wait, 0.23s at 68 tokens against 4.82s at 6,256. Reading got cheaper per token as the prompt grew, from 311 to 978 tok/s. Decode stayed near 48 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.23 s | 311 | 59.2 |
| 328 | 0.41 s | 691 | 61.4 |
| 1,576 | 1.11 s | 1,151 | 55.1 |
| 6,256 | 4.82 s | 978 | 48.1 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.03x the aggregate of one, and wall time grows in step with the callers, 5s to 43s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking on and off came out the same, within 0.5s and 9 tokens. Either this model does not reason on this prompt, or it ignores the switch. Nothing here is a cost.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 22.4x the wait, 0.22s at 68 tokens against 5.01s at 6,256. Reading got cheaper per token as the prompt grew, from 327 to 941 tok/s. Decode stayed near 48 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.22 s | 327 | 62.3 |
| 328 | 0.40 s | 713 | 61.7 |
| 1,576 | 1.11 s | 1,150 | 54.6 |
| 6,256 | 5.01 s | 941 | 48.3 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.01x the aggregate of one, and wall time grows in step with the callers, 5s to 43s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking on and off came out the same, within 0.4s and 8 tokens. Either this model does not reason on this prompt, or it ignores the switch. Nothing here is a cost.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
89x the prompt cost 20.3x the wait, 0.24s at 70 tokens against 4.88s at 6,258. Reading got cheaper per token as the prompt grew, from 324 to 968 tok/s. Decode stayed near 31 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 70 | 0.24 s | 324 | 41.2 |
| 330 | 0.42 s | 695 | 40.7 |
| 1,578 | 1.14 s | 1,139 | 35.8 |
| 6,258 | 4.88 s | 968 | 30.9 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.05x the aggregate of one, and wall time grows in step with the callers, 6s to 43s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking on and off came out the same, within 0.3s and 0 tokens. Either this model does not reason on this prompt, or it ignores the switch. Nothing here is a cost.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
85x the prompt cost 15.1x the wait, 0.25s at 74 tokens against 3.77s at 6,262. Reading got cheaper per token as the prompt grew, from 326 to 1,254 tok/s. Decode stayed near 42 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 74 | 0.25 s | 326 | 45.4 |
| 334 | 0.43 s | 680 | 41.2 |
| 1,582 | 1.09 s | 1,187 | 43.1 |
| 6,262 | 3.77 s | 1,254 | 41.5 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.01x the aggregate of one, and wall time grows in step with the callers, 7s to 58s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 16.4s and 357 tokens to the same question. The decode rate barely moved, 22 against 22 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
95x the prompt cost 16.5x the wait, 0.27s at 66 tokens against 4.42s at 6,254. Reading got cheaper per token as the prompt grew, from 272 to 1,068 tok/s. Decode stayed near 35 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 66 | 0.27 s | 272 | 39.4 |
| 326 | 0.42 s | 684 | 40.4 |
| 1,574 | 1.08 s | 1,191 | 40.2 |
| 6,254 | 4.42 s | 1,068 | 34.7 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.07x the aggregate of one, and wall time grows in step with the callers, 6s to 42s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 2.1s sooner and used 79 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 32 against 32 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| music | gateway/v1/music/generate | 400 | neither a WAV nor a session id came back |
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 8.3x the wait, 0.44s at 72 tokens against 3.67s at 6,260. Reading got cheaper per token as the prompt grew, from 172 to 1,356 tok/s. Decode stayed near 41 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.44 s | 172 | 40.9 |
| 332 | 0.59 s | 585 | 39.7 |
| 1,580 | 1.24 s | 1,240 | 39.9 |
| 6,260 | 3.67 s | 1,356 | 40.9 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.06x the aggregate of one, and wall time grows in step with the callers, 8s to 64s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 11.7s and 247 tokens to the same question. The decode rate barely moved, 21 against 21 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 21.0x the wait, 0.16s at 72 tokens against 3.34s at 6,260. Reading got cheaper per token as the prompt grew, from 533 to 1,419 tok/s. Decode stayed near 35 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.16 s | 533 | 42.8 |
| 332 | 0.27 s | 1,146 | 41.8 |
| 1,580 | 0.69 s | 1,900 | 38.5 |
| 6,260 | 3.34 s | 1,419 | 35.5 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.03x the aggregate of one, and wall time grows in step with the callers, 8s to 61s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 14.3s and 302 tokens to the same question. The decode rate barely moved, 21 against 21 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 21.9x the wait, 0.14s at 68 tokens against 2.98s at 6,256. Reading got cheaper per token as the prompt grew, from 584 to 1,590 tok/s. Decode stayed near 34 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.14 s | 584 | 39.7 |
| 328 | 0.23 s | 1,359 | 39.1 |
| 1,576 | 0.58 s | 2,277 | 36.4 |
| 6,256 | 2.98 s | 1,590 | 33.7 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.04x the aggregate of one, and wall time grows in step with the callers, 8s to 66s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 4.8s sooner and used 85 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 20 against 20 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/ocr | 404 | the response could not be read as this test expects |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| music | gateway/v1/music/generate | 200 | neither a WAV nor a session id came back |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/ocr | 404 | the response could not be read as this test expects |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/ocr | 400 | the response could not be read as this test expects |
The device answered and the benchmark did not understand the answer. That is a bug here rather than a fault on the box, and the first such reply is kept so it can be chased without loading the model again.
| test | path | status | what was wrong |
|---|---|---|---|
| ocr | gateway/v1/ocr | 400 | the response could not be read as this test expects |
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 12.0x the wait, 0.55s at 72 tokens against 6.60s at 6,260. Reading got cheaper per token as the prompt grew, from 137 to 751 tok/s. Decode stayed near 50 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.55 s | 137 | 46.6 |
| 332 | 0.92 s | 368 | 52.7 |
| 1,580 | 2.13 s | 713 | 51.4 |
| 6,260 | 6.60 s | 751 | 50.4 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.05x the aggregate of one, and wall time grows in step with the callers, 7s to 53s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 0.7s and 33 tokens to the same question. The decode rate barely moved, 26 against 26 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 11.5x the wait, 0.60s at 72 tokens against 6.88s at 6,260. Reading got cheaper per token as the prompt grew, from 130 to 723 tok/s. Decode stayed near 23 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.60 s | 130 | 23.1 |
| 332 | 0.96 s | 362 | 24.7 |
| 1,580 | 2.28 s | 674 | 23.6 |
| 6,260 | 6.88 s | 723 | 23.4 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.00x the aggregate of one, and wall time grows in step with the callers, 6s to 49s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 2.0s and 86 tokens to the same question. The decode rate barely moved, 48 against 45 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 12.0x the wait, 0.57s at 72 tokens against 6.82s at 6,260. Reading got cheaper per token as the prompt grew, from 130 to 726 tok/s. Decode stayed near 55 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.57 s | 130 | 56.9 |
| 332 | 0.94 s | 361 | 56.5 |
| 1,580 | 2.25 s | 677 | 56.0 |
| 6,260 | 6.82 s | 726 | 54.8 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.13x the aggregate of one, and wall time grows in step with the callers, 7s to 49s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 1.8s and 67 tokens to the same question. The decode rate barely moved, 28 against 28 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 8.4x the wait, 1.30s at 72 tokens against 10.93s at 6,260. Reading got cheaper per token as the prompt grew, from 60 to 456 tok/s. Decode stayed near 10 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 1.30 s | 60 | 10.4 |
| 332 | 2.00 s | 175 | 10.0 |
| 1,580 | 3.95 s | 392 | 9.9 |
| 6,260 | 10.93 s | 456 | 10.1 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.24x the aggregate of one, and wall time grows in step with the callers, 19s to 131s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 19.7s sooner and used 424 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 20 against 19 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 19.2x the wait, 0.25s at 68 tokens against 4.88s at 6,256. Reading got cheaper per token as the prompt grew, from 319 to 976 tok/s. Decode stayed near 21 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.25 s | 319 | 24.7 |
| 328 | 0.48 s | 751 | 23.0 |
| 1,576 | 1.29 s | 1,063 | 20.7 |
| 6,256 | 4.88 s | 976 | 21.2 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.00x the aggregate of one, and wall time grows in step with the callers, 6s to 49s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 0.8s and 32 tokens to the same question. The decode rate barely moved, 51 against 49 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 17.8x the wait, 0.33s at 68 tokens against 5.85s at 6,256. Reading got cheaper per token as the prompt grew, from 219 to 810 tok/s. Decode stayed near 41 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.33 s | 219 | 53.3 |
| 328 | 0.61 s | 557 | 52.9 |
| 1,576 | 1.56 s | 857 | 48.2 |
| 6,256 | 5.85 s | 810 | 40.8 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.04x the aggregate of one, and wall time grows in step with the callers, 7s to 52s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 1.1s and 35 tokens to the same question. The decode rate barely moved, 26 against 26 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 21.2x the wait, 0.23s at 68 tokens against 4.83s at 6,256. Reading got cheaper per token as the prompt grew, from 321 to 976 tok/s. Decode stayed near 47 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.23 s | 321 | 60.9 |
| 328 | 0.41 s | 696 | 60.5 |
| 1,576 | 1.12 s | 1,142 | 53.0 |
| 6,256 | 4.83 s | 976 | 47.4 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.00x the aggregate of one, and wall time grows in step with the callers, 6s to 46s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking on and off came out the same, within 0.1s and 7 tokens. Either this model does not reason on this prompt, or it ignores the switch. Nothing here is a cost.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
92x the prompt cost 21.5x the wait, 0.23s at 68 tokens against 5.00s at 6,256. Reading got cheaper per token as the prompt grew, from 313 to 942 tok/s. Decode stayed near 48 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 68 | 0.23 s | 313 | 61.7 |
| 328 | 0.40 s | 706 | 59.9 |
| 1,576 | 1.12 s | 1,145 | 55.1 |
| 6,256 | 5.00 s | 942 | 48.1 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.02x the aggregate of one, and wall time grows in step with the callers, 6s to 43s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking finished 1.3s sooner and used 36 fewer tokens than not thinking. That is not a measurement error: having reasoned, the model writes a much shorter answer, and the reasoning tokens are counted in the total. The decode rate barely moved, 30 against 30 tok/s.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
89x the prompt cost 20.5x the wait, 0.24s at 70 tokens against 4.89s at 6,258. Reading got cheaper per token as the prompt grew, from 328 to 966 tok/s. Decode stayed near 32 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 70 | 0.24 s | 328 | 40.7 |
| 330 | 0.42 s | 689 | 40.7 |
| 1,578 | 1.14 s | 1,136 | 37.1 |
| 6,258 | 4.89 s | 966 | 32.0 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.12x the aggregate of one, and wall time grows in step with the callers, 6s to 43s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking on and off came out the same, within 0.3s and 0 tokens. Either this model does not reason on this prompt, or it ignores the switch. Nothing here is a cost.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
85x the prompt cost 16.1x the wait, 0.24s at 74 tokens against 3.82s at 6,262. Reading got cheaper per token as the prompt grew, from 326 to 1,239 tok/s. Decode stayed near 41 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 74 | 0.24 s | 326 | 45.4 |
| 334 | 0.43 s | 687 | 44.6 |
| 1,582 | 1.09 s | 1,189 | 42.3 |
| 6,262 | 3.82 s | 1,239 | 40.9 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.03x the aggregate of one, and wall time grows in step with the callers, 7s to 59s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 16.1s and 354 tokens to the same question. The decode rate barely moved, 22 against 22 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
95x the prompt cost 17.8x the wait, 0.25s at 66 tokens against 4.44s at 6,254. Reading got cheaper per token as the prompt grew, from 295 to 1,064 tok/s. Decode stayed near 34 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 66 | 0.25 s | 295 | 38.7 |
| 326 | 0.42 s | 684 | 41.4 |
| 1,574 | 1.08 s | 1,189 | 40.3 |
| 6,254 | 4.44 s | 1,064 | 34.0 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.02x the aggregate of one, and wall time grows in step with the callers, 5s to 43s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Thinking on and off came out the same, within 0.1s and 17 tokens. Either this model does not reason on this prompt, or it ignores the switch. Nothing here is a cost.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 19.5x the wait, 0.17s at 72 tokens against 3.32s at 6,260. Reading got cheaper per token as the prompt grew, from 496 to 1,427 tok/s. Decode stayed near 36 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.17 s | 496 | 40.0 |
| 332 | 0.27 s | 1,135 | 43.1 |
| 1,580 | 0.68 s | 1,920 | 39.7 |
| 6,260 | 3.32 s | 1,427 | 36.5 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.04x the aggregate of one, and wall time grows in step with the callers, 8s to 60s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 9.9s and 211 tokens to the same question. The decode rate barely moved, 21 against 21 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 12.1x the wait, 0.55s at 72 tokens against 6.67s at 6,260. Reading got cheaper per token as the prompt grew, from 136 to 744 tok/s. Decode stayed near 43 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.55 s | 136 | 46.9 |
| 332 | 0.86 s | 395 | 46.4 |
| 1,580 | 2.15 s | 709 | 44.9 |
| 6,260 | 6.67 s | 744 | 43.4 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.03x the aggregate of one, and wall time grows in step with the callers, 8s to 58s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 1.0s and 33 tokens to the same question. The decode rate barely moved, 23 against 23 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 11.3x the wait, 0.61s at 72 tokens against 6.88s at 6,260. Reading got cheaper per token as the prompt grew, from 127 to 722 tok/s. Decode stayed near 22 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.61 s | 127 | 22.7 |
| 332 | 0.97 s | 358 | 24.1 |
| 1,580 | 2.31 s | 666 | 22.2 |
| 6,260 | 6.88 s | 722 | 22.0 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.08x the aggregate of one, and wall time grows in step with the callers, 7s to 7005s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time. 6 request(s) failed and are not in these figures.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 11.8x the wait, 0.56s at 72 tokens against 6.65s at 6,260. Reading got cheaper per token as the prompt grew, from 133 to 746 tok/s. Decode stayed near 45 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.56 s | 133 | 46.5 |
| 332 | 0.85 s | 399 | 46.0 |
| 1,580 | 2.15 s | 708 | 44.2 |
| 6,260 | 6.65 s | 746 | 45.1 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.03x the aggregate of one, and wall time grows in step with the callers, 8s to 60s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 1.1s and 33 tokens to the same question. The decode rate barely moved, 23 against 23 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 11.8x the wait, 0.55s at 72 tokens against 6.56s at 6,260. Reading got cheaper per token as the prompt grew, from 135 to 756 tok/s. Decode stayed near 50 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.55 s | 135 | 53.1 |
| 332 | 0.88 s | 388 | 52.9 |
| 1,580 | 2.14 s | 711 | 51.8 |
| 6,260 | 6.56 s | 756 | 49.8 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.04x the aggregate of one, and wall time grows in step with the callers, 7s to 53s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 1.0s and 33 tokens to the same question. The decode rate barely moved, 26 against 26 tok/s, so that is the model thinking rather than the box slowing down.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 12.1x the wait, 0.56s at 72 tokens against 6.83s at 6,260. Reading got cheaper per token as the prompt grew, from 138 to 728 tok/s. Decode stayed near 24 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.56 s | 138 | 24.2 |
| 332 | 0.97 s | 359 | 24.5 |
| 1,580 | 2.28 s | 674 | 24.3 |
| 6,260 | 6.83 s | 728 | 23.6 |
Every stream added together, against what each single caller saw, at each level.
8 streams deliver 1.04x the aggregate of one, and wall time grows in step with the callers, 6s to 48s. The box is not sharing itself between requests, it is queueing them. Plan for one inference at a time.
The same question asked twice. Hidden reasoning tokens are paid for in wall time whether or not anyone reads them.
Reasoning added 2.9s and 69 tokens to the same question. The decode rate barely moved, 52 against 46 tok/s, so that is the model thinking rather than the box slowing down.
Sampled on a separate thread while the long generation ran, not before or after it. A reading taken once the request has returned always catches the box going idle and says nothing.
What a long prompt costs to read, and what it does to the wait before the first word. Solid is time to first token on the left axis; dashed is decode rate on the right.
87x the prompt cost 11.7x the wait, 0.59s at 72 tokens against 6.87s at 6,260. Reading got cheaper per token as the prompt grew, from 133 to 724 tok/s. Decode stayed near 21 tok/s throughout, so the prompt is paid for once at the front and not again per word.
| prompt tokens | time to first token | prefill tok/s | decode tok/s |
|---|---|---|---|
| 72 | 0.59 s | 133 | 21.6 |
| 332 | 0.95 s | 365 | 24.7 |
| 1,580 | 2.31 s | 666 | 23.3 |
| 6,260 | 6.87 s | 724 | 20.9 |
So you can decide whether to believe any of it.
The same deterministic filler repeated to four lengths, each asked for a four-token answer so decode barely registers. What is plotted is the device's own reported prefill rate, not a stopwatch.
One unbroken 1500-token generation from a single prompt, with NPU utilisation and memory sampled either side of it. Short bursts flatter a box; this is the number that holds.
1, 2, 4 and 8 identical requests fired at once from separate threads. Aggregate is total tokens over wall time; per-stream is the median of what each caller saw.
One arithmetic word problem, asked with thinking off and then on. The ratio is wall time, because that is what a person waits.
No quality evaluation of any kind. Nothing here says a model is good, only how fast it is. A fast wrong answer is still wrong.
By default the suite loads and unloads nothing, and benchmarks whatever was already running. Sweeps that do load models put the box back the way they found it.