ARK 2.1 against vLLM 0.27.1, 4,000-token prompts, 64 users
2.5×
total decode throughput: 1,655 against 652 tokens per second
7.0×
sooner first token: 6.8 against 47.9 seconds (median)
0
failed requests on either engine in every cell published here

Throughput as users are added

With one user vLLM generates faster, 160 tokens per second against 88, and at four users it is still 11% ahead. From 8 users, ARK's total keeps climbing while vLLM's levels off: at 32 users ARK generates 1,296 tokens per second against vLLM's 601, at 64 users 1,655 against 652.

Total decode throughput by number of users, ARK 2.1 and vLLM 0.27.1, 4K-token prompts 0 500 1,000 1,500 2,000 1 4 8 16 24 32 48 64 Concurrent users Tokens per second, all users 1,655 ARK 2.1 652 vLLM
Total decode throughput, all users together, by number of concurrent users. Qwen3.6-35B-A3B, 4,000-token prompts, two RTX 5090.

First token

ARK reads the prompts faster at every load: the median first token comes 4.7 to 7.1 times sooner across both prompt lengths, from 0.33 against 1.58 seconds for a single user to 6.8 against 47.9 seconds with 64 users at 4,000 tokens. With its default settings vLLM takes a burst of new prompts in about one at a time, so its first-token time grows in step with the number of users.

Median time to first token by number of users, ARK 2.1 and vLLM 0.27.1, 4K-token prompts 0 25 50 75 100 1 4 8 16 24 32 48 64 Concurrent users Seconds to first token (median) 47.9 s vLLM 6.8 s ARK 2.1
Median time to first token by number of concurrent users (lower is better), 4,000-token prompts.

Where vLLM is ahead

A single user decodes faster on vLLM: 160 tokens per second against ARK's 88 at 4,000 tokens. vLLM keeps a per-user lead up to 4 users at 4,000 tokens and up to 16 users at 16,000. ARK is built for many users sharing the GPUs: beyond those points, each ARK user gets more tokens per second than on vLLM.

Decode speed each user sees, ARK 2.1 and vLLM 0.27.1, 4K-token prompts 10 20 50 100 200 1 4 8 16 24 32 48 64 Concurrent users Tokens per second per user (log scale) 26 ARK 2.1 10 vLLM
Decode speed each user sees, by number of concurrent users, 4,000-token prompts. Logarithmic scale.

All results

4,000-token prompts

UsersFirst token, ARKvLLMPer user, ARKvLLMTotal, ARKvLLM
10.33 s1.58 s88.3159.688160
40.63 s4.05 s78.486.7313347
81.08 s7.01 s64.555.1516441
161.95 s12.88 s47.731.9764511
242.78 s18.73 s44.323.61,064567
323.53 s24.56 s40.518.81,296601
485.11 s36.24 s31.513.01,511624
646.82 s47.92 s25.910.21,655652

16,000-token prompts

UsersFirst token, ARKvLLMPer user, ARKvLLMTotal, ARKvLLM
10.88 s6.07 s83.0159.283159
42.57 s15.20 s65.696.1262384
84.85 s27.03 s50.363.7403509
169.35 s50.63 s30.939.6494633
2413.87 s74.21 s31.829.3762703

First token: median seconds. Per user and total: decode tokens per second. At 16,000 tokens the benchmark ran up to 24 users; there vLLM leads on total throughput up to 16 users, and at 24 users ARK leads, 762 against 703 tokens per second.

What makes it a fair comparison, and what does not

  • Same: the model (Qwen3.6-35B-A3B), 4-bit weights and a 16-bit attention cache on both engines, prompt caching on in both, two RTX 5090 in one machine, the same day, one engine after the other. The benchmark script unchanged, the same prompts (4,119 and 16,407 tokens), the same limit of 256 new tokens, thinking off on both, requests through each engine's OpenAI-compatible API.
  • Default settings, on purpose. Both engines ran as installed. Tuning one of them, for example letting vLLM take in more prompt tokens per step, would mean tuning both; that is a separate comparison.
  • Answer length. Each engine stops where the model ends its answer: ARK's answers averaged about 200 tokens, vLLM's about 145. The decode figures are rates, not totals per request. A measure that ignores answer length, the median gap between tokens, puts the gap at 64 users slightly wider: 25.4 against 8.7 tokens per second per user.
  • Prompt cache. During decoding, the benchmark sends the same prompts again. ARK served 99% of each prompt from its cache; vLLM, which caches whole blocks of 1,056 tokens, 77% at 4,000 tokens and 97% at 16,000.
  • 16 bits, on purpose. ARK 2.1 can keep its attention cache in 8 bits, twice the context in the same memory (see quantized attention). Against vLLM's 16-bit cache that would not be like for like, so both engines ran with 16-bit caches here.

How we measured

  • ARK. ARK 2.1.0 serving Qwen3.6-35B-A3B on one machine with two RTX 5090, through the ARK API, 20 October 2026.
  • vLLM. vLLM 0.27.1 with tensor parallelism over both GPUs, the model's AWQ 4-bit weights and the benchmark authors' settings, thinking off, on the same machine, 20 October 2026.
  • Benchmark. A third-party script, unchanged. For each prompt length and number of users it first measures time to first token with fresh prompts, then decode speed on the same prompts sent again: each request's tokens divided by the time from its first token to its last. Two repeats per cell; the total is the per-user speed times the number of users. No request failed on either engine.

← All research · Benchmarks