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 的线性叠加成本,却撞上了另一面更硬的墙。

· 3 分钟阅读

Qwen3.8-27B 接入 DFlash2 草稿实测

在 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=8DFlash2 budget=8
代码 prompt22.30 tok/s(变慢)28.4 tok/s(+36%)

同样 8 个 token 的草稿预算,EAGLE 背线性叠加成本、变慢,DFlash2 不背、变快。这就是 36% 的来源——不是换了个更好的草稿,是换了个不背那条成本曲线的草稿。

低并发实测

MTP 换 DFlash2,吞吐:

并发MTP 聚合 tok/sDFlash2变化
120.928.4+36%
239.555.0+39%
477.494.9+23%
8138.4170.7+23%

接受长度:

并发MTPDFlash2
12.24.23
22.783.10
42.14.34
82.074.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/sDFlash2变化
16243.9202.8 / 221.9−17% / −9% ⚠️
32385.0302.8−21% ⚠️

C=16 跑了两次(202.8 和 221.9),噪声约 ±9%,单次差异不当信号。但转向是真的:

指标C=8C=16
TTFT438 ms2000 ms
ITL48 ms85 ms
每请求 tok/s21.312.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。