@lolren reported 25 TPS on dual-dflash.yml vs 80+ on dual.yml — root
cause was that scripts/setup.sh doesn't download the DFlash draft model
(z-lab/Qwen3.6-27B-DFlash), and the compose path
/root/.cache/huggingface/qwen3.6-27b-dflash silently fell back to
baseline bf16 decode when missing. There was no docs page that told
users they needed to grab it separately, and UPSTREAM.md's "watch list"
framing for the z-lab draft was muddled with the shipping vLLM compose.
Three closes:
1. scripts/setup.sh — new WITH_DFLASH_DRAFT=1 env var. When set, fetches
z-lab/Qwen3.6-27B-DFlash to <MODEL_DIR>/qwen3.6-27b-dflash/ after the
main model. Bumps disk preflight from 25 to 28 GB. Documents that the
draft is still under training (per UPSTREAM.md re-test trigger).
2. docker-compose.dual-dflash.yml + dual-dflash-noviz.yml headers — added
explicit "Prerequisite" block with both `WITH_DFLASH_DRAFT=1` and
manual `hf download` instructions, plus the under-training caveat.
3. docs/UPSTREAM.md + docs/DUAL_CARD.md — reconciled the inconsistency.
UPSTREAM.md now explicitly distinguishes "Luce-Org/lucebox-hub
(single-card llama.cpp fork — not shipping)" from "vLLM dual-dflash
compose (shipping with same draft, different engine)". DUAL_CARD.md's
peak code TPS section now flags the prereq + recommends dual.yml
(FP8 + MTP) for autonomous coding agents until z-lab tags
training-complete.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>