AI-LECTURER 速報課|2026-08-21|約 26 分鐘

AI 回話為什麼能快 3 倍?拆解 DFlash 2 的「平行猜字」超車術

取材:DFlash 2: Keep Drafting Parallel(Hacker News(AI 高人氣))
📍 真實場景
阿翔,新創公司唯一的後端工程師,負責維運公司的 AI 客服機器人

他正在盯著監控後台,看每一通客服對話從使用者送出問題到 AI 打完整段回覆要花幾秒鐘

😖 卡住的地方:尖峰時段回覆常常拖到 3~4 秒,客訴一直在講「AI 是不是當機了」,但加購更多 GPU 主機又超出這個月的預算
💡 這堂課會告訴他一招不用加硬體、只靠改變 AI「想答案」的方式,就能讓同一台機器多吐出好幾倍文字的技術

🧭 這到底是什麼(白話版)

你跟 AI 聊天時,它「回答」你的這個動作,叫做 推理AI模型拿來產生答案的過程,跟「訓練模型」是兩件完全不同的事,推理發生在你我實際使用AI的當下。傳統做法裡,AI 是「一個字一個字」把答案擠出來的,術語叫 自迴歸一次只能生成一個字,而且必須先生出前一個字,才能想下一個字,跟人打字一樣一個接一個。字數越多、句子越長,AI 就要「想」越多輪,速度自然被拖慢——這正是文章一開頭就強調『推理是 agent 時代瓶頸』的原因:像客服機器人這種要長時間讀資料、規劃、呼叫工具的 AI 代理人,吃掉的字數遠比一般聊天多得多。

為了加速,工程師想出一招叫「投機解碼先讓一個小的AI快速『亂猜』一串答案,再讓大模型一次檢查,猜對就省時間,猜錯就丟掉重來」。負責亂猜的小 AI 叫做 草稿模型專門用來『先猜』的小又快的AI,猜完之後才輪到真正負責『把關』的大模型出場,而大模型負責的動作叫 驗證大模型把草稿模型猜的整串答案一次看過(一次forward pass),合理的部分保留、不合理的直接砍掉並補上正確答案。過去多年,草稿模型雖然小,卻還是得「一個字一個字」慢慢猜——直到 DFlash 出現,把草稿這一步也變成「一次全部平行猜完」,才真正打開加速空間,也讓 NVIDIA、Google TPU、Meta 等大廠實測拿到 3~15 倍的加速。

這次的 DFlash 2,是在「平行猜」的基礎上再進化。既然每個位置都是「各自平行猜」,猜出來的字彼此可能兜不起來(比方前半猜出「我要去公司」、後半猜出「我要去公園」,拼在一起就變怪句子),驗證時整串就容易被砍斷、等於白猜一場。DFlash 2 想辦法讓每個位置的猜測「互相校準」,卻不必像其他方法一樣多加一個「依序修正」的步驟——換句話說,多賺了 吞吐量單位時間內AI能產出的token(字)數量,數字越高代表同樣時間能服務越多請求、或讓使用者等越少,卻幾乎沒多花時間:每次驗證能多產出超過 20% 的內容,只多花大約 1% 的延遲。搭配 量化把模型內部原本很精細的數字,簡化成佔用空間更小的表示法,用來換取速度與省記憶體,代價是些微精確度損失 過的草稿模型,Qwen3.8-27B 在 SGLang 上的吞吐量能到傳統做法的 2.7~3.4 倍。

🎯 為什麼值得你花時間

不加硬體也能省錢阿翔不用多買 GPU,光靠換一種「想答案」的方式,同一台機器就能多撐好幾倍的對話量,直接反映在雲端帳單上。
Agent 時代的真正瓶頸文章開宗明義指出:AI 代理人要長時間讀取、規劃、呼叫工具,消耗的 token 量遠超過單純聊天,推理速度會直接決定整個系統能不能撐住。
已經是業界標準配備DFlash 不是實驗室裡的論文玩具,NVIDIA、Google TPU、Meta(Muse Glimmer)、Poolside(Laguna)、Xiaomi、CoreWeave 等都已經在正式產品裡使用,Hugging Face 下載次數超過 350 萬次。

⚙️ 它是怎麼運作的

1
傳統做法:一字一字慢慢想AI 每生一個字,就要把目前為止的內容整個重新看一次,字越多、輪數越多,速度被拖得越慢。
2
第一代 DFlash:草稿也改成一次全猜完讓一個小又快的草稿模型,一次平行猜出一整串(不只一個字)可能的答案,而不是也排隊一個個猜。
3
大模型一次驗證整串草稿大模型只需要一次 forward pass,把草稿模型猜的整串字都比對過一遍,猜對的直接收下、猜錯的地方砍掉重練。
4
DFlash 2:讓猜測彼此「校準」既然每個位置是各自平行猜的,猜出來的字容易兜不起來、驗證時容易被提早砍斷;DFlash 2 讓這些猜測互相校準,但不額外多加一個「依序修正」的步驟,維持「一次到位」的平行特性。
5
成果:多賺 20%,只多花 1%每次驗證能多產出 16~25% 的內容,延遲卻只多了大約 1%,等於幾乎沒有代價地換來更高的吞吐量。
三種解碼方式效能比較(依文章數據換算)
做法每一輪「想」幾個字相對速度誰在用
傳統自迴歸1 個字1 倍(基準)早期絕大多數 LLM 服務
DFlash(第一代)一次平行猜一整串最高約 15 倍(NVIDIA Blackwell 實測)NVIDIA、Google TPU、Meta、Poolside 等
DFlash 2一次平行猜一整串,且互相校準更準確在 DFlash 基礎上再多賺 16~25% 產出,延遲只多約 1%2026 年 8 月最新發布,Qwen3.8-27B 首發示範

🔍 程式碼漫遊(點有 ● 的行看白話講解)

這段程式碼是幫助理解概念用的簡化模擬(不是 DFlash 的真實原始碼),示範「草稿模型先猜、大模型再驗證」這個核心迴圈到底在做什麼。

import random
def draft_model(block_size):
💬 這是「草稿模型」:一次吐出一整串猜測(示範用隨機數字代表猜的字)
return [random.randint(0, 99) for _ in range(block_size)]
💬 平行猜好幾個位置,不是一個一個排隊猜
def target_model_verify(draft_tokens, true_next_fn):
💬 這是「大模型」:一次 forward pass 把整串草稿看過一遍
accepted = []
for guess in draft_tokens:
💬 逐一比對草稿跟大模型「真正認可」的答案
correct = true_next_fn(accepted)
💬 大模型認為「照目前為止的內容,下一個字該是什麼」
if guess == correct:
💬 猜對了,收下這個字,繼續看下一個位置
accepted.append(guess)
else:
💬 猜錯了!這個位置跟後面全部草稿都要丟掉
accepted.append(correct)
💬 大模型自己補上正確答案,這一輪驗證到此結束
break
return accepted
def generate(total_length, block_size, true_next_fn):
💬 整個生成流程:草稿→驗證→草稿→驗證……直到句子生完
output = []
rounds = 0
💬 回合數=forward pass 的次數,數字越小代表越快
while len(output) < total_length:
draft = draft_model(min(block_size, total_length - len(output)))
💬 每回合先讓草稿模型猜一整串
accepted = target_model_verify(draft, true_next_fn)
💬 再讓大模型一次驗證整串,決定收下多少
output.extend(accepted)
rounds += 1
return output, rounds
💬 回傳結果跟總共跑了幾回合

🛠️ 動手做:字句接龍賽跑:一個字一個字 vs DFlash 平行草稿

  1. 點擊「開始比賽」按鈕,觀察兩條進度條同時往前跑——上面是傳統一字一字,下面是 DFlash 平行草稿。
  2. 留意「回合數」的差異:回合數就是 AI 硬體要做幾次 forward pass,也就是要「想」幾次,回合數越少代表越快。
  3. 多按幾次「重來」再「開始比賽」,你會發現平行版每次的回合數不太一樣——這是因為草稿模型每次猜對的字數會浮動,就像真實世界裡草稿模型的『命中率』本來就會變化。
  4. 想一想:如果句子長度從 20 字變成 200 字,兩種做法的回合數差距會怎麼變化?差距會變大還是變小?
👇 下面是活的,直接操作

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼不乾脆把草稿模型也做大一點、做準一點就好?
草稿模型的價值就在於「小而快」——它必須比大模型便宜非常多,先猜一輪才划算;一旦草稿模型變大變準,本身的計算成本就會逼近大模型,等於失去「先猜省時間」的意義,還不如讓大模型自己一個字一個字生成。這是典型的「速度 vs 準確度」設計取捨:草稿模型的目標不是猜得完美,而是猜得夠快、命中率夠高,讓大模型的「檢查」成本划算。
🔭 DFlash 2 只讓延遲多了 1%,卻多賺 20% 產出,這種「幾乎免費的午餐」合理嗎?
這不是真的免費,而是用工程巧思換來的,不是靠更多硬體堆出來的。原本「各位置平行猜、彼此對不齊就被砍斷」是平行解碼天生的弱點,其他做法(如 Domino、DSpark)選擇多加一個「依序修正」的步驟來解決,但這樣就犧牲了平行解碼最寶貴的「一次到位」特性;DFlash 2 選擇在同一次 forward pass 裡就把「選字」跟「校準一致性」一起解決,這才是它真正的技術突破,而不是白吃的午餐。
🔭 為什麼 NVIDIA、Meta、Google 這些巨頭要各自幫自己的模型做「專屬草稿模型」,而不是共用一個通用的?
草稿模型要猜得準,關鍵在於它的「用字習慣」要跟目標大模型高度貼近——如果草稿模型猜的字跟大模型平常會選的字系統性地不同,命中率就會很低,平行猜的優勢就發揮不出來。針對特定目標模型客製化訓練草稿模型,投報率遠高於用一個通用草稿模型,這也解釋了為什麼開源生態上會出現各家大廠都發布「官方 drafter」搭配自家模型的現象。
🔭 文章特別強調在 batch size = 1(單一使用者、沒有排隊等其他請求)下的吞吐量提升,這個測試條件的選擇透露了什麼?
傳統推論優化多半針對「大批量」場景(同時服務很多使用者,把運算攤平)來衝吞吐量;但 agent 工作型態常常是低並發、卻要求極低延遲的單一使用者情境——你的客服機器人一次只回一個人,不能靠「湊一批一起算」來提速。特別強調 batch size = 1 的實測數字,正是因為這款技術瞄準的就是 agent 時代這種「單人、低延遲」的真實痛點,而不是傳統雲端服務堆量的场景。

📝 隨堂考(點選答案,立即回饋)

Q1. DFlash 這類技術主要解決的是 AI 的哪個環節?
✅ DFlash 是加速『推理』——也就是 AI 已經訓練好、拿來『回答你』的過程,不是訓練模型本身。
Q2. 在「草稿+驗證」的加速方式裡,「草稿模型」的角色最接近什麼?
✅ 草稿模型負責先『亂猜』一串可能的答案,之後才交給大模型檢查、決定要不要採用。
Q3. DFlash 2 相較於第一代 DFlash,最主要的進步是什麼?
✅ 文章明確指出 DFlash 2 的核心進步:每次驗證多產出 16~25% 的內容,卻只多花約 1% 的延遲時間。
Q4. 為什麼「平行草稿」比「一個字一個字生成」快,答案品質卻不會因此變差?
✅ 驗證步驟不會消失——大模型仍會用一次 forward pass 把整串草稿檢查過,猜錯的地方會被砍掉、換成大模型自己認可的答案,所以答案品質不會因為「猜」而變差。
Q5. 文章提到 AI 代理人(agent)時代最需要優化推理速度,最可能的原因是?
✅ 文章開頭就指出:agent 會長時間讀取、規劃、呼叫工具,消耗的 token 量遠超過一般聊天對話,因此推理速度變成整個系統的瓶頸。

🃏 翻牌記憶卡(先想答案,再點開對答)

推理(Inference)點我翻面
AI 模型「回答/生成」的過程,跟「訓練」是完全不同的階段
自迴歸(Autoregressive)點我翻面
一次只生一個字,生完才能生下一個,跟人一個字一個字打字一樣
草稿模型(Draft model)點我翻面
一個小又快的 AI,先猜一串答案讓大模型檢查,省下大模型自己一個字一個字想的時間
平行解碼(Parallel decoding)點我翻面
一次同時猜好幾個位置的字,而不是排隊一個一個猜
驗證(Verification)點我翻面
大模型一次 forward pass 把草稿整串檢查完,接受合理部分、丟掉不合理部分並補上正解
吞吐量(Throughput)點我翻面
單位時間內能產出的字(token)數量,數字越高代表效率越好、能服務越多請求

✅ 離開前自測(全勾=這課真的學會了)

0%