CoolFace
Modelpublic

Huang2020/Qwen3-8B-Domino-b16

sourceHugging Faceupdated 2mo agoView on Hugging Face
1likes1.6kdownloads
Model Card

Qwen3-8B Domino Draft Model

**Paper** | **GitHub**

[image]

This repository contains a Domino/DFlash draft model for speculative decoding with Qwen/Qwen3-8B. The draft model is not intended to be used as a standalone language model; it should be paired with the target model during generation.

Domino keeps draft generation block-parallel while adding a lightweight causal correction head. This preserves the low drafting cost of parallel speculative decoding and improves draft-token acceptance.

Model Details

  • —Target model: Qwen/Qwen3-8B
  • —Draft model: Huang2020/Qwen3-8B-Domino-b16
  • —Block size: 16
  • —Recommended usage: one GPU for the direct spec_generate path
  • —Qwen3 chat setting: thinking mode disabled

Installation

bash
uv pip install "git+https://github.com/jianuo-huang/sglang.git@feat/domino-tensor-parallel#subdirectory=python"

Quick Usage

SGLang

bash
sglang serve \
  --model-path Qwen/Qwen3-8B \
  --speculative-algorithm DFLASH \
  --speculative-draft-model-path Huang2020/Qwen3-8B-Domino-b16

Transformers

python
from transformers import AutoModel, AutoModelForCausalLM, AutoTokenizer

draft = AutoModel.from_pretrained(
    "Huang2020/Qwen3-8B-Domino-b16",
    trust_remote_code=True,
    torch_dtype="auto",
    device_map="cuda:0",
).eval()

target = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-8B",
    torch_dtype="auto",
    device_map="cuda:0",
).eval()

tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-8B")
messages = [{
    "role": "user",
    "content": "How many positive whole-number divisors does 196 have?",
}]
input_ids = tokenizer.apply_chat_template(
    messages,
    return_tensors="pt",
    return_dict=False,
    add_generation_prompt=True,
    enable_thinking=False,
).to(draft.device)

output = draft.spec_generate(
    input_ids=input_ids,
    target=target,
    max_new_tokens=2048,
    temperature=0.0,
    stop_token_ids=[tokenizer.eos_token_id],
)

generated = output[:, input_ids.shape[1]:]
print(tokenizer.decode(generated[0], skip_special_tokens=True))

Benchmark Figure

[image]

The source PDF is available at `assets/speedup.pdf`.

Citation

bibtex
@article{huang2026domino,
  title={Domino: Decoupling Causal Modeling from Autoregressive Drafting in Speculative Decoding},
  author={Huang, Jianuo and Zhang, Yaojie and Zhang, Qituan and Lin, Hao and Xu, Hanlin and Zhang, Linfeng},
  journal={arXiv preprint arXiv:2605.29707},
  year={2026}
}