Kimi-K2.6 DSpark speculator
Overview
A DSpark speculator model for the Kimi-K2.6 base model, enabling faster
inference through speculative decoding. DSpark extends the DFlash parallel draft
backbone with two lightweight heads: a Markov logit-bias head (low-rank
intra-block token dependency) and a per-position confidence head (accept-rate
prediction). Trained with a vendored fork of the
speculators library through the
Camelot-Ray online pipeline (draft consumes hidden states streamed from a live
Kimi-K2.6 vLLM server).
Model Specifications
- Base Model: Kimi-K2.6
- Format: Safetensors (single-file bf16, 6.3 GB, 44 tensors)
- Draft: 3 layers (Qwen3-style GQA), hidden 7168, 56 heads / 8 KV heads,
head_dim 128, FFN 18432, rope_theta 50000,
block_size=8 - Vocabulary: pruned draft vocab 32,000 (d2t/t2d remap tables shipped in the weights), target vocab 163,840; mappings built from training-distribution assistant-turn token frequencies
- DSpark heads: Markov rank 256 (vanilla), confidence head (with-markov),
mask_token_id=163608 - Aux hidden-state layers: [1, 29, 57]
- Trained context: seq 20000
Evaluation Results
Offline teacher-forced (training distribution, frozen final checkpoint):
| metric | value |
|---|---|
| mean accepted length (tau, /8) | 3.97 |
| greedy acceptance (pos 1-7) | 0.618 |
Per-position acceptance (positions 1-7):
0.816 / 0.720 / 0.652 / 0.598 / 0.553 / 0.512 / 0.474
Online (vLLM nightly spec-decode, greedy, num_speculative_tokens=7),
per-benchmark mean accepted length:
| benchmark | online accept_len | offline tau /8 |
|---|---|---|
| gsm8k | 4.45 | 5.13 |
| math500 | 4.25 | 5.00 |
| aime | 3.81 | 4.44 |
| humaneval | 3.72 | 4.60 |
| mtbench | 2.82 | 3.41 |
| mmstar | 2.53 | 2.87 |
| ceval | 1.55 | 1.99 |
Cross-model transfer: serving Kimi-K2.7-Code with this K2.6-trained speculator loses only ~11% accepted length (same architecture family).
Serving with vLLM
Requires vLLM nightly (DSpark support):
uv pip install vllm --extra-index-url https://wheels.vllm.ai/nightly
vllm serve <path-or-id-of-Kimi-K2.6> \
--tensor-parallel-size 8 \
--max-model-len 20000 \
--trust-remote-code \
--speculative-config '{
"model": "novita/kimi-k2.6-dspark",
"num_speculative_tokens": 7,
"method": "dspark"
}'
Known vLLM-nightly (0.23.1rc1.dev786) caveats, with workarounds:
- Draft-side FA3 AOT scheduling crashes with
scheduler_metadata must have shape (metadata_size)— the GPU-worker spec-decode path missesfast_build=Truewhen building draft attention metadata. Patchvllm/v1/worker/gpu/spec_decode/speculator.py/vllm/v1/worker/gpu/attn_utils.pyto passfast_build=True(mirrorsbuild_for_drafting()on the legacy proposer path). - CUDA-graph capture fails with a flashinfer allreduce workspace-size error
under spec-decode token expansion; disable the fusion:
--compilation-config='{"pass_config": {"fuse_allreduce_rms": false}}'.
Training Details
- Data: Regenerated open-perfectblend dataset — the open-perfectblend instruction mix with all assistant turns regenerated by Kimi-K2.6 itself (raw hidden states streamed from the live verifier); seq 20000
- Steps: 20000 (16.0h, zero restarts); loss 1.656 → 0.363 (1000-step window)
- Schedule: lr 3e-4 cosine, warmup 300, global batch 8, accumulation 2
- Loss: 0.1·CE + 0.9·TV over block-diffusion anchors, decay_gamma 4.0, max_anchors 3072
- Semantics: post-norm last hidden captured at rollout
(
apply_verifier_norm=False), hidden_states = concat of aux layers [1, 29, 57]
- Downloads last month
- 224
Model tree for novita/kimi-k2.6-dspark
Base model
moonshotai/Kimi-K2.6