ZixiQi rogerwyf xianbao youkaichao commited on
Commit
cf6b824
·
0 Parent(s):

Kimi-K3-DSpark: MLA-native DSpark draft model for Kimi-K3

Browse files

Co-authored-by: rogerwyf <rogerwyf@users.noreply.huggingface.co>
Co-authored-by: xianbao <xianbao@users.noreply.huggingface.co>
Co-authored-by: youkaichao <youkaichao@users.noreply.huggingface.co>

Files changed (5) hide show
  1. .gitattributes +35 -0
  2. LICENSE +52 -0
  3. README.md +97 -0
  4. config.json +54 -0
  5. model.safetensors +3 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
LICENSE ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Kimi K3 License
2
+
3
+ Copyright (c) 2026 Moonshot AI
4
+
5
+ Permission is hereby granted, free of charge, to any person (the "Licensee")
6
+ obtaining a copy of this software — including the model weights, parameters,
7
+ configuration files, inference and training code, and associated documentation
8
+ (collectively, the "Software") — to deal in the Software without restriction.
9
+ This includes, without limitation, the rights to use, copy, modify, merge,
10
+ publish, distribute, sublicense, and/or sell copies of the Software; to run,
11
+ deploy, fine-tune, or otherwise modify the Software and create derivative works
12
+ from it; and to permit persons to whom the Software is furnished to do so, in
13
+ each case subject to the following conditions:
14
+
15
+ 1. The above copyright notice and this permission notice shall be included in
16
+ all copies or substantial portions of the Software. Licensee's use of the
17
+ Software must comply with applicable laws and regulations.
18
+
19
+ 2. "Model as a Service" means giving a third party access to language model
20
+ inference or fine-tuning (e.g., via API) in a manner that allows such third
21
+ party to exercise meaningful control over the inputs, parameters, or training
22
+ data. This does not include (a) end-user products with model capabilities solely
23
+ embedded within specific features or harnesses, or (b) mere relaying of requests
24
+ to models hosted by others.
25
+
26
+ If the Licensee or any of its affiliates operates a Model as a Service business,
27
+ and the aggregate revenue of the Licensee and its affiliates exceeds 20 million
28
+ US dollars (or the equivalent in other currencies) in total over any consecutive
29
+ 12 months, the Licensee must enter into a separate agreement with Moonshot AI
30
+ before using the Software or its derivative works for any commercial purpose.
31
+
32
+ 3. If the Software (or any derivative works thereof) is used for any of the
33
+ Licensee's commercial products or services that have more than 100 million
34
+ monthly active users, or more than 20 million US dollars (or equivalent in other
35
+ currencies) in monthly revenue, "Kimi K3" must be prominently displayed on the
36
+ user interface of such product or service.
37
+
38
+ 4. The requirements set forth in Sections 2 and 3 do not apply to: (a) internal
39
+ use of the Software, defined as any use that does not make the Software, its
40
+ outputs, or its underlying capabilities available to third parties; or (b) any
41
+ use of the Software accessed through Moonshot AI's official products or
42
+ certified inference partners.
43
+
44
+ 5. THE SOFTWARE AND ANY OUTPUT AND RESULTS THEREFROM ARE PROVIDED ON AN “AS IS”
45
+ BASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
46
+ LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
47
+ AND NONINFRINGEMENT. IN NO EVENT SHALL MOONSHOT AI OR ITS AFFILIATES OR
48
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
49
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
50
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
51
+
52
+ For any questions regarding this license, please contact <license@moonshot.ai>.
README.md ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: kimi-k3
4
+ library_name: vllm
5
+ base_model: moonshotai/Kimi-K3
6
+ pipeline_tag: text-generation
7
+ tags:
8
+ - dspark
9
+ - speculative-decoding
10
+ - draft-model
11
+ - mla
12
+ - vllm
13
+ - torchspec
14
+ - kimi-k3
15
+ ---
16
+
17
+ ## Model Overview
18
+
19
+ **Inferact/Kimi-K3-DSpark** is an **MLA-native DSpark** draft model that accelerates [Kimi-K3](https://huggingface.co/moonshotai/Kimi-K3) on **[vLLM](https://github.com/vllm-project/vllm)**, served through vLLM's native `dspark` speculative method.
20
+
21
+ The draft trains on **target hidden states extracted from vLLM itself** — the same engine that serves it, so the numerics it learns from are the numerics it meets at inference. [TorchSpec](https://github.com/lightseekorg/TorchSpec) provides the loop, streaming those hidden states from live target inference into concurrent FSDP draft training.
22
+
23
+ **DSpark** = a block-diffusion backbone of 5 dense layers with non-causal attention, drafting 7 tokens in a single parallel pass, a low-rank sequential **Markov head** supplying the intra-block dependency, and a confidence head for resource-aware scheduling. Mirroring Kimi-K3's own MLA attention means draft and target share one KV layout (a compact 576-element latent per token), so the draft's pages unify with the target's cache — KV offloading and P/D disaggregation work with no separate page format.
24
+
25
+ ---
26
+
27
+ ## Performance
28
+
29
+ ### Peak bs=1 decode: 464 tok/s
30
+
31
+ Under low-entropy real reasoning workload — Kimi-K3 + DSpark on vLLM can achieve **464 tok/s** using the public `vllm/vllm-openai:kimi-k3` image on 4 × GB300 at `bs=1 & tensor-parallel-size=16`.
32
+
33
+ ### Speculator acceptance
34
+
35
+ Speculators do best on predictable, low-entropy work like the reasoning workload behind the 464 tok/s above, and worst on open-ended, high-entropy generation. So we measured **14 benchmarks** spanning math, code synthesis, real-world software engineering, multi-turn chat, RAG and QA, multilingual text, creative writing and long-context generation — all with the **Kimi-K3 chat template enabled** and production sampling parameters, with `temperature=0` reported alongside for reproducibility. Acceptance stays strong at long context too, verified on AA-LCR's ~95k-token multi-document prompts. That is the most comprehensive view we can give of how the speculator performs on real-world workloads.
36
+
37
+ Acceptance length, with 7 speculative tokens:
38
+
39
+ | benchmark | `temperature=0` | `temperature=1.0`, `top_p=0.95` | prompts |
40
+ |---|---|---|---|
41
+ | GSM8K | 5.64 | 5.44 | 1319 |
42
+ | HumanEval | 5.34 | 5.07 | 164 |
43
+ | MBPP | 4.44 | 4.31 | 256 |
44
+ | SPEED-Bench · coding | 4.38 | 4.22 | 80 |
45
+ | SPEED-Bench · multilingual | 4.21 | 4.10 | 80 |
46
+ | SPEED-Bench · RAG | 4.11 | 3.97 | 80 |
47
+ | MATH-500 | 3.82 | 3.77 | 500 |
48
+ | SPEED-Bench · low-entropy, 10k input | 3.72 | 3.66 | 512 |
49
+ | SWE-bench Pro | 3.35 | 3.11 | 128 |
50
+ | AA-LCR · ~95k input | 3.19 | 3.23 | 100 |
51
+ | MT-Bench | 3.14 | 3.06 | 80 |
52
+ | SPEED-Bench · QA | 3.07 | 2.98 | 80 |
53
+ | SPEED-Bench · writing | 2.79 | 2.69 | 80 |
54
+ | AIME 2026 | 2.72 | 2.64 | 30 |
55
+ | **mean** | **3.85** | **3.73** | |
56
+
57
+
58
+ **Benchmarks:** [GSM8K](https://huggingface.co/datasets/openai/gsm8k), [MATH-500](https://huggingface.co/datasets/HuggingFaceH4/MATH-500), [AIME 2026](https://huggingface.co/datasets/math-ai/aime26), [HumanEval](https://huggingface.co/datasets/openai/openai_humaneval), [MBPP](https://huggingface.co/datasets/Muennighoff/mbpp), [SWE-bench Pro](https://huggingface.co/datasets/ScaleAI/SWE-bench_Pro), [MT-Bench](https://huggingface.co/datasets/philschmid/mt-bench), [AA-LCR](https://huggingface.co/datasets/ArtificialAnalysis/AA-LCR) — 100 multi-document prompts of 71k–115k tokens — and six splits of [NVIDIA SPEED-Bench](https://huggingface.co/datasets/nvidia/SPEED-Bench): its `throughput_16k` low-entropy split at 10k-token input, plus five qualitative categories.
59
+
60
+ ---
61
+
62
+ ## Training
63
+
64
+ **Data — all responses regenerated on-policy by Kimi-K3 itself**, so the draft learns the target's own reasoning traces and chat formatting. Prompts come from public datasets:
65
+
66
+ - [`lightseekorg/kimi-mtp-dataset`](https://huggingface.co/datasets/lightseekorg/kimi-mtp-dataset) — general instruction prompts
67
+ - [`nvidia/OpenCodeInstruct`](https://huggingface.co/datasets/nvidia/OpenCodeInstruct) — single-turn coding
68
+ - A nine-category prompt pool from the NVIDIA **Nemotron** SFT/RL collections and [`CohereLabs/aya_dataset`](https://huggingface.co/datasets/CohereLabs/aya_dataset), spanning chat, code, multilingual, RAG/QA, math, structured output and safety. Evaluation-set prompts are excluded.
69
+
70
+ **Method:** DSpark with block_size=7, trained on a combined CE + L1 distribution-distillation objective against the target's post-final-norm hidden state, bf16. The draft consumes Kimi-K3 auxiliary hidden states from target layers (2, 23, 47, 71, 89) of 93. Roughly **two epochs** in total, on GB300 nodes.
71
+
72
+ Draft architecture, block size, sequence length, and loss weights are YAML-configurable — see the [TorchSpec repo](https://github.com/lightseekorg/TorchSpec).
73
+
74
+ ---
75
+
76
+ ## Quick Start
77
+
78
+ ### Requirements
79
+
80
+ For serving Kimi-K3 itself — hardware, parallelism and engine flags — follow the official vLLM recipe: **[recipes.vllm.ai/moonshotai/Kimi-K3](https://recipes.vllm.ai/moonshotai/Kimi-K3)**.
81
+
82
+ ### Enable the draft
83
+
84
+ Add to your Kimi-K3 `vllm serve` command:
85
+
86
+ ```bash
87
+ --speculative-config '{"method": "dspark", "model": "Inferact/Kimi-K3-DSpark", "num_speculative_tokens": 7, "attention_backend": "FLASHINFER_MLA", "draft_sample_method": "probabilistic", "rejection_sample_method": "block"}'
88
+ ```
89
+
90
+ ### Sampling options
91
+
92
+ vLLM offers two knobs on top of the defaults, both used in the `temperature=1.0` column above:
93
+
94
+ - **`draft_sample_method`** — `probabilistic` samples the draft from its own distribution instead of taking its argmax. Pair it with a sampling client; use `greedy` when serving at `temperature=0` so the draft matches the client.
95
+ - **`rejection_sample_method`** — `block` verifies the drafted block as a unit rather than token by token. It is a no-op under greedy decoding (at `temperature=0` verification reduces to a deterministic argmax match), so it only applies to the sampling configuration.
96
+
97
+ The `temperature=0` column was produced with `{"draft_sample_method": "greedy"}` and no `rejection_sample_method`.
config.json ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "K3DSparkModel"
4
+ ],
5
+ "model_type": "k3_dspark",
6
+ "hidden_size": 7168,
7
+ "intermediate_size": 14336,
8
+ "num_hidden_layers": 5,
9
+ "num_attention_heads": 64,
10
+ "num_key_value_heads": 64,
11
+ "q_lora_rank": 1536,
12
+ "kv_lora_rank": 512,
13
+ "qk_nope_head_dim": 128,
14
+ "qk_rope_head_dim": 64,
15
+ "v_head_dim": 128,
16
+ "mla_use_nope": false,
17
+ "mla_use_output_gate": false,
18
+ "vocab_size": 163840,
19
+ "rms_norm_eps": 1e-05,
20
+ "max_position_embeddings": 1048576,
21
+ "rope_theta": 50000.0,
22
+ "num_target_layers": 5,
23
+ "target_hidden_size": 7168,
24
+ "target_num_hidden_layers": 93,
25
+ "target_layer_ids": [
26
+ 2,
27
+ 23,
28
+ 47,
29
+ 71,
30
+ 89
31
+ ],
32
+ "mask_token_id": 163837,
33
+ "bos_token_id": 163584,
34
+ "eos_token_id": 163586,
35
+ "pad_token_id": 163839,
36
+ "markov_rank": 256,
37
+ "markov_head_type": "vanilla",
38
+ "enable_confidence_head": true,
39
+ "confidence_head_with_markov": true,
40
+ "tie_word_embeddings": false,
41
+ "draft_vocab_size": 163840,
42
+ "_torchspec_version": "0.1.0",
43
+ "torch_dtype": "bfloat16",
44
+ "rope_parameters": {
45
+ "rope_type": "yarn",
46
+ "factor": 32.0,
47
+ "original_max_position_embeddings": 32768,
48
+ "rope_theta": 50000.0,
49
+ "beta_fast": 32,
50
+ "beta_slow": 1,
51
+ "mscale": 1.0,
52
+ "mscale_all_dim": 1.0
53
+ }
54
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f9972a636d92a11994cdcfc88fd4c5b5d50d6eb2a89af016031593b8c65c2053
3
+ size 7124633450