Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
base_model: Qwen/Qwen3-8B
|
| 4 |
+
tags:
|
| 5 |
+
- speculative-decoding
|
| 6 |
+
- draft-model
|
| 7 |
+
- dflash
|
| 8 |
+
- domino
|
| 9 |
+
- sglang
|
| 10 |
+
- specforge
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# Qwen3-8B Domino speculative-decoding draft (10-epoch)
|
| 14 |
+
|
| 15 |
+
A **Domino** draft model for `Qwen/Qwen3-8B`, trained with the SpecForge
|
| 16 |
+
**DataFlow online-disaggregated** pipeline (frozen Qwen3-8B target + live
|
| 17 |
+
spec-capture through sglang/Mooncake -> DP domino trainer).
|
| 18 |
+
|
| 19 |
+
## This checkpoint
|
| 20 |
+
- `training_state.pt` — torch checkpoint; the trained draft weights are under
|
| 21 |
+
the key **`draft_state_dict`** (~1.1B params, bf16), plus training metadata
|
| 22 |
+
(`global_step`, `epoch`, `strategy`, `run_id`, ...).
|
| 23 |
+
- `config.json` — the draft config (`DFlashDraftModel`, `projector_type=domino`,
|
| 24 |
+
5 layers, hidden 4096, `target_layer_ids=[1,9,17,25,33]`, `block_size=16`,
|
| 25 |
+
vocab 151936, `mask_token_id=151669`).
|
| 26 |
+
- **Step 44,000** — the latest periodic checkpoint (save-interval 4000) of a
|
| 27 |
+
completed 10-epoch run (~epoch 9.3).
|
| 28 |
+
|
| 29 |
+
## Training
|
| 30 |
+
- Data: `perfectblend` (47,160 filtered prompts), 10 epochs, batch 2, DP=5,
|
| 31 |
+
LR 6e-4, warmup 0.04, grad-clip 1.0, num_anchors 256, loss-decay-gamma 7.0.
|
| 32 |
+
- Target `Qwen/Qwen3-8B` frozen (no gradients); only the draft is trained.
|
| 33 |
+
- Final training-time metrics: loss ~0.1, token-match acc ~0.95.
|
| 34 |
+
|
| 35 |
+
> Note: the training-time `acc` is a proxy. Real serving accept-length (τ)
|
| 36 |
+
> requires exporting to an sglang-loadable draft and running the spec-decode
|
| 37 |
+
> benchmark.
|
| 38 |
+
|
| 39 |
+
## Load the draft weights
|
| 40 |
+
```python
|
| 41 |
+
import torch
|
| 42 |
+
sd = torch.load("training_state.pt", map_location="cpu", weights_only=False)
|
| 43 |
+
draft_weights = sd["draft_state_dict"] # load into a DFlashDraftModel(config)
|
| 44 |
+
```
|