KVARK Sparkle 1.0 (27B) FP8
FP8 weights of KVARK Sparkle 1.0 for vLLM, with the multi-token prediction (MTP) head. Every number on this card was measured with these weights. The files take 29 GB, and one H200 serves them with about 128k context.
Results
Both models ran with FP8 weights, thinking on, a 64k token cap and the same prompts. Sampling was temperature 1.0, top_p 0.95 and top_k 20. Differences are paired over items, with 95% bootstrap intervals.
| Benchmark | Accuracy (%) | Median reasoning tokens | 64k cap hits | ||||
|---|---|---|---|---|---|---|---|
| Sparkle | Qwen | Difference | Sparkle | Qwen | Cut | ||
| GPQA Diamond198 items × 5 seeds | 89.3 | 89.4 | −0.1[−1.9, +1.8] | 3,122 | 7,854 | −60% | 9 / 34 |
| AIME2025 and 2026 · 60 problems × 5 seeds | 93.3 | 94.0 | −0.7[−3.3, +2.0] | 5,502 | 14,318 | −62% | 12 / 12 |
| LiveCodeBenchv6 · 50 recent problems × 3 seeds | 82.7 | 77.3 | +5.3[0.0, +11.3] | 6,664 | 19,950 | −67% | 15 / 27 |
| IFEval541 prompts, strict | 91.3 | 92.4 | −1.1[−2.4, +0.2] | 470 | 714 | −34% | 0 / 0 |
| MMLU-Pro980 items, 70 per category | 83.3 | 84.0 | −0.7[−2.2, +0.8] | 429 | 727 | −41% | 0 / 5 |
Speed
| One user, 1 × H200 | Sparkle, MTP | Qwen, MTP | Qwen, no MTP |
|---|---|---|---|
| Median time per answer | 13.7 s | 28.1 s | 49.1 s |
| MTP mean acceptance length | 2.53 | 2.50 | off |
Measured with vLLM 0.30 on 20 fixed questions (10 GPQA Diamond, 10 LiveCodeBench), one request at a time, thinking on.
Serve with vLLM
vllm serve Egzakta/Kvark-Sparkle-1.0-27B-FP8 \
--max-model-len 131072 --kv-cache-dtype fp8 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice --tool-call-parser qwen3_coder \
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")
response = client.chat.completions.create(
model="Egzakta/Kvark-Sparkle-1.0-27B-FP8",
messages=[{"role": "user", "content": "How many primes are there between 100 and 150?"}],
max_tokens=65536,
)
message = response.choices[0].message
print(getattr(message, "reasoning", None))
print(message.content)
print(response.usage.completion_tokens, "tokens")
Thinking is on by default. To turn it off for a request, pass extra_body={"chat_template_kwargs": {"enable_thinking": False}}. Sampling defaults are temperature 1.0, top_p 0.95 and top_k 20.
Memory
| Context | Memory per sequence, FP8 KV cache |
|---|---|
| 32,768 | 1 GiB |
| 65,536 | 2 GiB |
| 131,072 | 4 GiB |
| Linear-attention state, any context | under 0.2 GB |
More
Training, data and the BF16 weights are on the main model card. License: Apache 2.0, commercial use permitted, no revenue cap.