noctuashap's picture
Add Confucius3-Math EAGLE3 draft head (epoch_2/step_12000, ~38% trained)
e89f97a verified
|
Raw
History Blame Contribute Delete
2.2 kB
---
license: apache-2.0
base_model: netease-youdao/Confucius3-Math
tags:
- eagle3
- speculative-decoding
- draft-model
- vllm
---
# Confucius3-Math EAGLE3 Draft Head
An [EAGLE3](https://arxiv.org/abs/2503.01840) speculative-decoding draft head for
[**netease-youdao/Confucius3-Math**](https://huggingface.co/netease-youdao/Confucius3-Math)
(Qwen2.5-14B, R1-style inline-think). Trained with [SpecForge](https://github.com/sgl-project/SpecForge)
on the same rollout data as a matched DFlash / D-PACE drafter, for a method comparison.
> ⚠️ **Intermediate checkpoint.** This is `epoch_2 / step_12000` of a planned 6-epoch
> (31,734-step) run — roughly **38%** through training. Acceptance length will still
> improve with further training. A final checkpoint will replace this when the run completes.
## Architecture
| | |
|---|---|
| architecture | `LlamaForCausalLMEagle3` (1 layer) |
| hidden size | 5120 |
| heads (q/kv) | 40 / 8 |
| intermediate | 13824 |
| draft vocab | 32000 (with `d2t`/`t2d` mapping to the 152064 target vocab) |
| aux hidden layers | `[1, 23, 44]` (SpecForge default) |
| dtype | bfloat16 |
## Training
- SpecForge EAGLE3 defaults: auto-generated draft config, lr 1e-4, warmup 0.015, grad-norm 0.5, TTT length 7.
- Copied from the matched DFlash/D-PACE run: same preformatted Confucius3-Math rollout data (148,112 rows), `confucius-r1` chat template, max-length 4096, batch-size 4, 6 epochs.
## Usage (vLLM)
```bash
vllm serve netease-youdao/Confucius3-Math \
--speculative-config '{"method":"eagle3","model":"noctuashap/Confucius3-Math-Eagle3","num_speculative_tokens":7}' \
--attention-backend flash_attn --trust-remote-code
```
`num_speculative_tokens` is the draft length — lower it (e.g. 2–3) for high-concurrency /
compute-bound serving, raise it (up to ~7) for low-batch / latency-oriented serving.
## Measured acceptance (gsm8k / math500, thinking mode, vLLM)
At an earlier checkpoint (step_8000) with `num_speculative_tokens=7`:
| dataset | accept length | tok/s (single stream) |
|---|---|---|
| gsm8k | ~4.3 | ~365 |
| math500 | ~4.5 | ~386 |
(Confucius3-Math is R1-style always-thinking, so thinking and non-thinking modes are equivalent.)