Nobody Knows Qwen3.5-27B Better Than Me
證據如下:
寫無可寫,居然還有高手——Qwen3.5-27B-DFlash
它讓Qwen3.5-27B的推理速度直接起飛,最高能到5 倍加速,而且是無損加速,生成質量完全不打折
簡介
用大模型寫代碼、做數學題,模型想半天才吐一個 token 出來,GPU 利用率低得讓人心疼?
這就是自回歸解碼的老毛病了——一個 token 一個 token 地生,串行瓶頸在那擺著
之前業界用Speculative Decoding(推測解碼)來解決這個問題:先用一個小模型快速猜一串 token,再讓大模型并行驗證。EAGLE-3 是這個方向的 SOTA,但它的小模型還是自回歸的,加速比也就 2-3 倍,上限明顯
DFlash(z-lab.ai/projects/dflash)來了,直接把「猜」的過程從自回歸換成了擴散模型。一次前向傳播就能并行生成一整個 block 的 token,配合大模型驗證,在 Qwen3-8B 上實現了6 倍以上的無損加速,比 EAGLE-3 快了將近2.5 倍
下圖是 DFlash 的系統架構:
![]()
DFlash 架構圖
DFlash 來自z-lab(UCSD ML Systems Group),這幫人專做「讓 AI 更小、更快、更高效」的事,從算法到系統到應用全棧搞。論文已發(arXiv: 2602.06036),而且代碼全開源。
為什么 DFlash 這么快?
核心原因有兩個,搞懂了你就知道為什么這東西比 EAGLE-3 強這么多:
1. 擴散模型天然適合做「猜測」
EAGLE-3 的 drafter 是自回歸的,猜 8 個 token 就要跑 8 次前向傳播,成本線性增長。為了控制延遲,EAGLE-3 只能用極淺的模型(1 層 Transformer),猜測質量自然上不去
DFlash 用的是block diffusion模型——不管你要猜 8 個還是 16 個 token,都是一次前向傳播搞定。這意味著 drafter 可以做得更深(5 層 Transformer),模型更有表達力,猜得更準,但延遲反而更低。論文里有個數據很能說明問題:一個 5 層的 DFlash 生成 16 個 token 的延遲,比 1 層的 EAGLE-3 生成 8 個 token 還低
2. 關鍵洞察:「大模型自己就知道未來」
光用擴散模型還不夠。如果小模型完全從零開始猜,猜不準的。DFlash 的核心創新是:從大模型(target model)的隱藏層抽取特征,注入到 drafter 的每一層 KV cache 里
這跟 EAGLE-3 的做法有本質區別——EAGLE-3 只在輸入層融合 target 的特征,信息隨著層數增加會衰減。DFlash 是在 drafter 的每一層都注入,信息保持一致。這就是為什么 DFlash 的 acceptance length(被接受的草稿 token 數量)能隨著 drafter 層數有效增長,而 EAGLE-3 加層數收益遞減
Qwen3.5-27B-DFlash:最熱門的版本
DFlash 系列目前覆蓋了不少模型(huggingface.co/collections/z-lab/dflash),完整列表如下:
目標模型
DFlash Drafter
Kimi-K2.5 (Preview)
z-lab/Kimi-K2.5-DFlash
Qwen3.5-4B
z-lab/Qwen3.5-4B-DFlash
Qwen3.5-9B
z-lab/Qwen3.5-9B-DFlash
Qwen3.5-27Bz-lab/Qwen3.5-27B-DFlash
Qwen3.5-35B-A3B
z-lab/Qwen3.5-35B-A3B-DFlash
Qwen3-Coder-Next
z-lab/Qwen3-Coder-Next-DFlash
Qwen3-Coder-30B-A3B
z-lab/Qwen3-Coder-30B-A3B-DFlash
gpt-oss-20b
z-lab/gpt-oss-20b-DFlash
gpt-oss-120b
z-lab/gpt-oss-120b-DFlash
其中Qwen3.5-27B-DFlash是目前最熱門的版本,HuggingFace 上 5200+ 下載量、47 個 likes,drafter 模型只有2B 參數,非常輕量
為什么 27B 最受歡迎?因為它是性價比最優點——27B 夠強,能處理大部分任務,又不像 122B/397B 那樣對顯卡要求太高,配合 DFlash 加速后更是如虎添翼
實測數據
官方在單張 NVIDIA B200 上做了全面測試,數據很有說服力。以 Qwen3.5-27B 為例,block size = 16,thinking 模式開啟:
吞吐量對比(tok/s,越高越好):
任務
并發
原版 (AR)
MTP
DFlash
Math500
1
84
243 (2.9x)
397 (4.7x)
Math500
8
625
1457 (2.3x)
2270 (3.6x)
HumanEval
1
83
236 (2.9x)
427 (5.2x)
HumanEval
8
602
1345 (2.2x)
2079 (3.5x)
MBPP
1
84
200 (2.4x)
347 (4.2x)
MT-Bench
1
84
169 (2.0x)
255 (3.0x)
單并發場景下,HumanEval 上直接5.2 倍加速,Math500 上4.7 倍
哪怕在并發 32 的高壓場景下,依然能維持1.5-1.9 倍的加速,這在生產環境里非常有價值
對比 MTP(Multi-Token Prediction),DFlash 在所有任務上都大幅領先。而且記住——這是無損加速,輸出質量跟原版一模一樣。
Acceptance Length 對比:
任務
B16 (MTP / DFlash)
Math500
7.14 /7.93
HumanEval
7.38 /9.18
MBPP
5.94 /7.27
MT-Bench
5.30 /5.47
HumanEval 上 DFlash 平均每輪能被接受9.18 個 token,這意味著一次猜測就能「猜中」大部分內容,效率極高
安裝與使用
DFlash 已經適配了三大主流推理框架:vLLM、SGLang和Transformers。
vLLM(推薦生產環境)
SGLang# 安裝(需要 nightly 版本)
uv pip install vllm
uv pip install -U vllm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly# 啟動服務
vllm serve Qwen/Qwen3.5-27B \
--speculative-config '{"method": "dflash", "model": "z-lab/Qwen3.5-27B-DFlash", "num_speculative_tokens": 15}' \
--attention-backend flash_attn \
--max-num-batched-tokens 32768
python -m sglang.launch_server \
--model-path Qwen/Qwen3.5-27B \
--speculative-algorithm DFLASH \
--speculative-draft-model-path z-lab/Qwen3.5-27B-DFlash \
--speculative-num-draft-tokens 16 \
--tp-size 1 \
--attention-backend fa3 \
--mem-fraction-static 0.75 \
--mamba-scheduler-strategy extra_buffer \
--trust-remote-code
啟動后就是標準的 OpenAI 兼容 API,調用方式跟平時一樣:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")response = client.chat.completions.create(
model="Qwen/Qwen3.5-27B",
messages=[{"role": "user", "content": "Write a quicksort in Python."}],
max_tokens=4096,
temperature=0.0
)
print(response.choices[0].message.content)
Tip:對于長上下文或 Agent 場景,可以加--speculative-dflash-draft-window-size WINDOW_SIZE開啟 drafter 的滑動窗口注意力。
Transformers(本地快速體驗)
技術細節補充from transformers import AutoModel, AutoModelForCausalLM, AutoTokenizer
# 加載 drafter 和 target
draft = AutoModel.from_pretrained(
"z-lab/Qwen3.5-27B-DFlash",
trust_remote_code=True, dtype="auto", device_map="cuda:0"
).eval()
target = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3.5-27B", dtype="auto", device_map="cuda:0"
).eval()
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3.5-27B")
messages = [{"role": "user", "content": "How many positive whole-number divisors does 196 have?"}]
input_ids = tokenizer.apply_chat_template(
messages, return_tensors="pt",
add_generation_prompt=True, enable_thinking=False
).to(draft.device)# 推測解碼生成
output = draft.spec_generate(
input_ids=input_ids, max_new_tokens=2048,
temperature=0.0, target=target,
stop_token_ids=[tokenizer.eos_token_id]
)
print(tokenizer.decode(output[0], skip_special_tokens=False))
幾個值得關注的設計細節:
1. 訓練成本極低
Drafter 模型復用了 target model 的 embedding 層和 LM head(凍結),只訓練中間幾層 Transformer。以 27B 版本為例,drafter 才 2B 參數,訓練集用了大約 80 萬條樣本(來自 NVIDIA Nemotron 和 CodeAlpaca),用 target model 重新生成了響應來做訓練數據,保證對齊效果
2. 只需一步去噪
DFlash 推理時只做一步去噪(single denoising step),這跟傳統擴散模型需要多步迭代完全不同。因為它有 target model 的隱藏特征做條件,一步就夠了。這也是它比其他擴散解碼方法(如 DiffuSpec 需要 7B drafter)輕量得多的原因
3. Reasoning 模型也能加速
DFlash 對開啟了 thinking mode 的推理模型同樣有效。在 Qwen3-8B thinking 模式下,仍然能達到大約4.5 倍加速。對于動輒生成上千 token 思維鏈的推理模型來說,這個加速太有價值了
總結
DFlash 的核心貢獻可以用一句話概括:擴散模型不需要跟自回歸模型在生成質量上競爭,它只需要做一個優秀的「猜測者」
這個思路確實精妙——擴散模型負責高速并行猜測,自回歸模型負責驗證保底,兩全其美
優點:
加速比碾壓 EAGLE-3,實測高達 5 倍以上
完全無損,輸出跟原版一模一樣
drafter 極其輕量(27B 版本 drafter 才 2B 參數)
已適配 vLLM + SGLang + Transformers 三大框架
覆蓋模型廣泛,Qwen3、Qwen3.5、Kimi-K2.5、gpt-oss 全都有
局限:
需要 nightly 版本的 vLLM/SGLang,穩定性可能有坑
目前 drafter 訓練代碼還未開源(不過已經承諾即將放出)
高并發場景加速比會下降(這是 speculative decoding 的通病)
Qwen3.5-122B 和 397B 的 DFlash 版本還在路上
如果你在用 Qwen3.5-27B 做推理服務,DFlash 幾乎是個無腦加分項。多加載一個 2B 的 drafter,就能讓吞吐量翻好幾倍,簡直是免費的午餐
.5
制作不易,如果這篇文章覺得對你有用,可否點個關注。給我個三連擊:點贊、轉發和在看。若可以再給我加個,謝謝你看我的文章,我們下篇再見!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.