生成與推論
Speculative Decoding 投機解碼是什麼?小模型先猜大模型驗證
投機解碼(Speculative Decoding)是加速大模型生成的技術。先讓一個小而快的草稿模型一次猜出好幾個詞元,再交給大而強的審查模型批次驗證,猜對就直接採用,猜錯就從錯的那一個開始重新生成。輸出速度通常能明顯提升。
Speculative Decoding 投機解碼是什麼?小模型先猜大模型驗證
同一個模型,有時候字是一個一個慢慢吐,有時候整段唰一下就出來了。差別常常不在模型本身,而在它有沒有開投機解碼。
這是目前提升推理效率最實用的技術之一,原理卻意外地好懂。
你將學到什麼
定義
小模型先猜多個詞元,大模型一次批次驗證。
白話比喻
助理先擬草稿,主管一次審完整段,比一句一句寫快得多。
跟誰容易搞混
它改的是速度不是品質,最終輸出仍由大模型把關。
定義
投機解碼(Speculative Decoding,也譯猜測解碼)是一種雙模型合作的加速技術。它讓一個小而快的草稿模型(Draft Model)先以極快速度猜出接下來要吐的好幾個詞元。
接著由那個聰明但比較慢的審查模型(Verify Model)逐一驗證。驗到第一個錯的就停下來,從那裡重新生成。
白話比喻
想像主管要寫一封信。一個字一個字自己想,速度就是他的思考速度。
但如果助理先把一整句草稿寫好,主管只要掃過去確認就行。看得比寫得快,這就是投機解碼省時間的地方。
運作流程
- 草稿模型一次生成多個候選詞元,數量通常設在四到八個之間。
- 審查模型批次檢查這幾個候選是否符合自己的判斷。
- 從頭開始接受連續正確的部分,遇到第一個錯誤就停止。
- 從錯誤處由審查模型接手重新生成,然後回到第一步。
重點在第二步:驗證多個候選可以一次算完,這是它比逐字生成便宜的根本原因。
跟傳統解碼的差別
| 項目 | 傳統解碼(單模型) | 投機解碼(雙模型) |
|---|---|---|
| 使用模型 | 單一大模型 | 小草稿模型加上大審查模型 |
| 每次生成 | 一次一個詞元 | 一次猜多個,批次驗證 |
| 大模型計算次數 | 每個詞元都要算一次 | 每一批候選只算一次 |
| 延遲與吞吐 | 當作基準 | 延遲下降,吞吐量明顯提升 |
| 成本 | 較高 | 多養一個小模型,但整體更划算 |
換句話說,它同時改善了 延遲 與 吞吐量,代價只是要多維護一個小模型。
實際用例
最適合的場景是需要高速生成文字、又能容忍偶爾重生成的服務:聊天機器人、程式碼補全、長文寫作、文件摘要。
模型組合的原則是草稿要小而快、審查要大而強,而且兩者的詞彙表通常要相容,常見做法是取同一個模型家族的大小版本來搭配。
常見誤解最常見的誤解是以為「小模型參與了生成,品質就會被拉低」。事實上小模型只負責提案,沒有一個 詞元 能繞過審查模型直接輸出。另一個誤解是把它當成通用萬靈丹,在內容高度發散、猜中率低的任務上,加速效果會明顯縮水。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook。
延伸學習
常見問答
投機解碼會讓回答變差嗎?
設計上不會。每一個被採用的詞元都經過審查模型確認,猜錯的部分會被丟掉重生成,所以最終輸出的品質是由大模型決定的。
為什麼先猜再驗反而更快?
因為大模型驗證多個候選可以一次批次完成,成本遠低於逐一生成。只要猜對的比例夠高,省下來的生成次數就換成了速度。
什麼情況下效益會變差?
當內容高度不可預測時,草稿模型猜中率下降,回退重生成的次數變多,效益就會打折,甚至比不開還慢一點。
