Flow-Drafter-9B-tr

Speculative-decoding draft model for Qwen/Qwen3.5-9B (Chained-Flow, joint-VAE drafter), adapted to Turkish.

Lossless by construction: a proposed token is emitted only if the target itself would have emitted it. Outputs can still differ from unspeculated decode, because verifying K+1 positions at once changes the target's own fp16 reduction order β€” the observed divergence is comparable to the run-to-run difference between two unspeculated runs.

Warm-started from Flow-Drafter-9B-v2 (sha256 526efd6347... β€” see the repo for the full value), not trained from scratch. Identify the parent by that content hash, not by commit β€” the parent repo has since moved commit with byte-identical weights. These weights are the ones in this repo.

Usage

pip install chained-flow

# CF_DRAFTER_DIR is the only variable you need; a bare repo id works and pulls shortlist.pt with it.
# K comes from num_speculative_tokens, not an env var.
CF_DRAFTER_DIR=selimaktas/Flow-Drafter-9B-tr \
vllm serve Qwen/Qwen3.5-9B --async-scheduling \
  --speculative-config '{"method":"custom_class","model":"chained_flow.vllm_plugin.flow_proposer.FlowDrafterProposer","num_speculative_tokens":5}'
curl localhost:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{
  "model": "Qwen/Qwen3.5-9B",
  "messages": [{"role": "user", "content": "Merhaba, nasΔ±lsΔ±n?"}],
  "chat_template_kwargs": {"enable_thinking": false},
  "temperature": 0
}'

chat_template_kwargs: {"enable_thinking": false} is required β€” this drafter was trained on prompts carrying the <think>\n\n</think>\n\n prefix.

Served speedup

Every number below was measured under one condition: natural EOS (no ignore_eos), concurrency 1, greedy, chain proposer at K=5, async scheduling on for every arm including the baseline, 2 repeats, through vllm serve. Prompts: the chained-flow Turkish holdouts (bench_data_tr), 4 domains (173.6 tokens/request, not a forced 256). Aggregation is token-weighted pooling across those domains β€” each arm's own tokens Γ· its own wall-time β€” not a mean of per-domain ratios. Under natural EOS the arms emit different token counts, so the rates are comparable but the token totals are not.

prompt set base tok/s v2 parent: tok/s acc speedup -tr: tok/s acc speedup
tr_funccall 80.9 74.1 1.351 0.917x 143.2 2.703 1.771x
tr_instruct 82.1 67.2 1.196 0.819x 112.2 2.027 1.367x
tr_multiturn 81.6 64.4 1.159 0.790x 103.0 1.884 1.263x
tr_toolcall 80.5 74.7 1.371 0.927x 140.5 2.672 1.744x
pooled 81.4 69.0 1.269 0.848x 118.9 2.322 1.461x

81.4 β†’ 118.9 tok/s, +46% against unspeculated decode.

The English parent is a net regression on Turkish (0.848x): at accept 1.27 it does not earn back its own draft pass. This fine-tune turns speculation from a loss into a win, not a bigger win.

The candidate shortlist ships with the model and is loaded automatically; the loader refuses to run against a different one.

Caveats

Turkish prompt sets only; this card does not characterise English behaviour.

Files

  • model.safetensors β€” the drafter (flow experts, Markov head, path head, jointly-trained VAE)
  • chained_flow_tree_config.json β€” architecture + loss config
  • shortlist.pt β€” English+Turkish candidate shortlist (see above)
  • vae/ β€” the base VAE checkpoint
Downloads last month

-

Downloads are not tracked for this model. How to track
Safetensors
Model size
1B params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for selimaktas/Flow-Drafter-9B-tr

Finetuned
Qwen/Qwen3.5-9B
Finetuned
(1,358)
this model

Collection including selimaktas/Flow-Drafter-9B-tr