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