Views
No views yet
Qwen/Qwen3.5-4B (Chained-Flow, joint-VAE drafter).1pip install chained-flow
2
3CF_DRAFTER_DIR=selimaktas/Flow-Drafter-4B-v2 \
4vllm serve Qwen/Qwen3.5-4B --async-scheduling \
5 --speculative-config '{"method":"custom_class","model":"chained_flow.vllm_plugin.flow_proposer.FlowDrafterProposer","num_speculative_tokens":5}'ignore_eos) so both arms do identical work, async scheduling on for every arm
including the baseline, 3 repeats (pooled spread ≤0.1%). Benchmark: RedHatAI/speculator_benchmarks,
8 distinct domains × 25 prompts, one run per domain, never pooled into a single split. Harness:
guidellm 0.6.0 driving vllm serve (vLLM 0.25.1). acceptance = 1 + num_accepted_tokens / num_drafts from vLLM's own Prometheus counters (bonus token included, so a non-speculative baseline
is 1.00). speedup = chain tok/s ÷ base tok/s, prefill included in the denominator.| domain | acceptance (tokens/step) | speedup vs base |
|---|---|---|
| HumanEval (code) | 2.29 | 1.47x |
| math_reasoning | 2.88 | 1.83x |
| qa (short free-form) | 1.93 | 1.24x |
| question (MT-bench) | 1.98 | 1.28x |
| rag | 2.03 | 1.29x |
| summarization | 1.95 | 1.24x |
| tool_call | 2.13 | 1.35x |
| translation (de->en) | 1.45 | 0.94x |
| POOLED (all 8 domains) | 2.02 | 1.29x |
CF_SPEC_MAX_BATCH ships on by default and disengages speculation above a decode batch of 4 at
this size, holding a loaded server near parity rather than below it.model.safetensors — the drafter (flow experts, Markov head, path head, jointly-trained VAE)chained_flow_tree_config.json — architecture + loss configvae/ — the base VAE checkpoint