feat: support tensor-parallel Domino rollout - #32018
jianuo-huang wants to merge 7 commits into
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
36c9ec6 to
da677e2
Compare
da677e2 to
4552d1d
Compare
4552d1d to
be8c97b
Compare
Qwen3.6-27B checkpoint and full serving benchmarkThe Domino checkpoint is available at huang2020/Qwen3.6-27B-Domino. Methods. AR is target-only decoding. MTP-S3/S7/S15 use the built-in Qwen3.6 MTP heads with 3/7/15 steps, 4/8/16 draft tokens, and top-k 1. DFlash uses the official For DFlash and Domino, b16 is the regular block-16 run and the target verifies all 16 positions. b8 keeps the same block-16 draft backbone but the target verifies only the first 8 positions. The draft backbone itself is not shortened. Setting. Each bar is mean output tok/s over three runs. The black outline marks the fastest speculative configuration for each workload. Throughput and speedupEach cell is output tok/s (speedup versus AR). Bold marks the fastest speculative configuration in each row. Concurrency 1
Concurrency 8
Concurrency 32
Macro speedup vs ARArithmetic mean of the per-workload TPS ratios; Overall is the arithmetic mean of all 18 workload-by-concurrency ratios.
Accept lengthMean output tokens per target verification step, including the target bonus token. The maxima are 4/8/16 for MTP-S3/S7/S15, 8 for b8, and 16 for b16. Bold marks the highest value within the directly comparable max-8 and max-16 groups. Concurrency 1
Concurrency 8
Concurrency 32
All 144 displayed method/workload/concurrency cells completed three measured runs. These are observed serving results. BF16 greedy trajectories can differ across methods, so the TPS differences are not pure kernel-attribution claims. |
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |

Summary
This PR adds tensor-parallel Domino rollout to DFlash V2.
Implementation
The TP path is measured in three stages:
the full vocabulary; there is no candidate-pool construction.
block-shared K2048 pool, and run correction only on those candidates.
reconstruct only the selected base logits instead of gathering the full
vocabulary.
The first proposal remains a global full-vocabulary argmax. Every rank produces
the same proposal chain, and target verification is unchanged. The path reuses
the target model's TP-sharded LM-head, shard metadata, and TP group. CUDA Graph
uses full gather for B1 and compact K2048 above B1; eager/fallback keeps the
existing 96 MiB heuristic. K0 always uses the full path.
Rollout performance
Qwen3.6-27B, TP2/BF16, 2 x A100 80GB, block size 16. Latency is the rank-max
median of 5 rounds x 100 exact-shape CUDA Graph replays.
A has no candidate-construction cost but pays for full-vocabulary correction.
B isolates the K2048 candidate-pool gain. C removes the full-vocabulary
base-logit exchange; it is slightly slower at B1 but dominates at larger
batches.
All A/B/C totals include step-major packing, TP-local base LM-head, TP
communication, candidate/correction, and GRU.
Base-only Graphindependentlymeasures only step-major packing and the TP-local LM-head; it is context, not a
subtracted subspan. The microbenchmark excludes the DFlash transformer
backbone, target verification, and serving scheduler.
End-to-end TP2 serving
Official SGLang ShareGPT benchmark: 128 prompts, O512, C32, greedy decoding,
32 warmups, chat template enabled.
Domino reached
1.12xtarget-only output throughput. This is the end-to-endresult for the overall TP2 PR, not an A/B claim for stages A/B/C above.
Serving reproduction commands
Target-only omits
--max-mamba-cache-sizeand all speculative arguments.Validation and limitations
git diff --check, focusedpy_compile, Black, and Ruff passed.29 passed,35 subtests passed.eager and CUDA Graph. A/B equality is not expected because K2048 restricts
correction; its quality is validated in Add correctness-first Domino support to DFlash V2 #31328.
claimed. Exact TopK cutoff ties may select a different pool, while target
verification remains the correctness boundary.
CI States
Latest PR Test (Base): ❌ Run #29900502529
Latest PR Test (Extra): ❌ Run #29900502281