Qwen3.8-27B 换上 DFlash2 草稿,单流提速 36%:DGX Spark 实测与反转
在 DGX Spark(GB10)上给 Qwen3.8-27B-NVFP4 接入 DFlash2 块扩散草稿的实测:单流 20.9→28.4 tok/s(+36%),接受长度翻倍到 4.23。但并发一过 16,DFlash2 反被 MTP 甩开——它绕开了 EAGLE 的线性叠加成本,却撞上了另一面更硬的墙。

在 DGX Spark 上把草稿模型从 MTP 换成 DFlash2,单流从 20.9 涨到 28.4 tok/s,接受长度从 2.2 到 4.23。
+36%。
草稿头是现成的,权重没动,速度凭空多了三成六。但要说清楚这个 36% 从哪来,得先讲这台机器上另一件事——上一次我们给 Qwen3.8 加草稿深度,是变慢的。
上次加深度,变慢了
同一台 GB10(273 GB/s 统一内存,27B 全激活)。把 EAGLE 的 --speculative-num-draft-tokens 从 4 加到 8,代码 prompt 从 23.57 掉到 22.30 tok/s。
变慢了。散文也一样,20.9 → 20.75。
原因:EAGLE 每往前推一步就多一次完整的草稿头前向。草稿深度 8,就是 8 次前向的线性叠加,深度越深收益被摊得越薄,最后变负。
所以问题是:有没有一种草稿,在 budget=8 时不背这条线性代价。
DFlash2:一次前向出整块
DFlash2 一次前向直接出一整块 8 个 token,不逐 token 展开。块尾部本该越猜越烂,靠骨干里一个 two-tap 动态卷积把质量按住,再用一个轻量 selector 把候选串成连贯路径。
成本不随草稿深度线性增长,只按块算。
同 budget=8,一个慢一个快
把两次实测摆一起看:
| EAGLE budget=8 | DFlash2 budget=8 | |
|---|---|---|
| 代码 prompt | 22.30 tok/s(变慢) | 28.4 tok/s(+36%) |
同样 8 个 token 的草稿预算,EAGLE 背线性叠加成本、变慢,DFlash2 不背、变快。这就是 36% 的来源——不是换了个更好的草稿,是换了个不背那条成本曲线的草稿。
低并发实测
MTP 换 DFlash2,吞吐:
| 并发 | MTP 聚合 tok/s | DFlash2 | 变化 |
|---|---|---|---|
| 1 | 20.9 | 28.4 | +36% |
| 2 | 39.5 | 55.0 | +39% |
| 4 | 77.4 | 94.9 | +23% |
| 8 | 138.4 | 170.7 | +23% |
接受长度:
| 并发 | MTP | DFlash2 |
|---|---|---|
| 1 | 2.2 | 4.23 |
| 2 | 2.78 | 3.10 |
| 4 | 2.1 | 4.34 |
| 8 | 2.07 | 4.15 |
接受长度从 2.07–2.97 抬到 4.01–4.34,翻倍。
这是带着双重劣势跑出来的:KV 池比 MTP 小 19.6%,还被逼删了 --enable-linear-replayssm-spec(DFlash2 走 ReplaySSM 只对 KDA 模型有效,Qwen3.8 是 GDN)。带这双层劣势都赢,说明在带宽瓶颈机型上、低并发时,这条路成立。
C=16 翻转
并发 16 和 32,DFlash2 反而落后:
| 并发 | MTP 聚合 tok/s | DFlash2 | 变化 |
|---|---|---|---|
| 16 | 243.9 | 202.8 / 221.9 | −17% / −9% ⚠️ |
| 32 | 385.0 | 302.8 | −21% ⚠️ |
C=16 跑了两次(202.8 和 221.9),噪声约 ±9%,单次差异不当信号。但转向是真的:
| 指标 | C=8 | C=16 |
|---|---|---|
| TTFT | 438 ms | 2000 ms |
| ITL | 48 ms | 85 ms |
| 每请求 tok/s | 21.3 | 12.7 |
GB10 是带宽瓶颈机型,我们以为会先撞带宽。这次先撞的是算力——每步要验 8 个 token,高并发下这块验证开销先吃到顶。这是推断,没验证。
下一步单个实验:把 --speculative-num-draft-tokens 从 8 降到 4 或 6,看拐点右不右移。
几句诚实声明
模型卡的 3.6× 是单张 H200 + FlashAttention 3 上测的,跟我们的 +36% 跨机型、跨量化,不能直接比。X 上有人报同款配方 C1 34 tok/s、还自称 200 提示平均 49.5,我没拿到原始日志复现不出,不作证据,只说明社区确实有人在 GB10 上跑这个配方、也报积极结果。C=16 撞算力是推断,需要降档实验来验证。
落点
写代码前以为 DFlash2 是个更好的草稿。跑完才看清,它换的不是草稿,是成本曲线——而新曲线在低并发是钱,高并发是另一面墙。
单流、个位数并发为主的流量,切,23%–39% 是实打实的。高并发先别切,等降档实验。拐点右移了是通用件,不移是低并发专用件。
想自己部署的:DFlash2 的判据是架构名 DFlash2DraftModel + dflash_config 里的 conv_kernel_size/conv_group_size/selector_rank/selector_top_k 四个参数;镜像里 dflash_worker_v2.py 的 _v2 是 worker 代次不是算法版本,不在这几组参数就会静默跑成 DFlash1。机制与官方数字来源:z-lab 模型卡(incoai/... 镜像仓)、Inco AI 博客、z-lab/dflash;DFlash 原论文 DFlash: Block Diffusion for Flash Speculative Decoding,ICML 2026;SGLang 侧 PR #35371。