使用 HuggingFace `transformers` 套件中模型的 `assistant_model` 方法來進行 Speculative Decoding 的加速
最近嘗試實作了許多推測性解碼(Speculative Decoding)的加速方法,而 HuggingFace 的 transformers
套件中自然也有對應的加速方法 assistant_model
,今天就趁這個機會一起紀錄下來。
最近嘗試實作了許多推測性解碼(Speculative Decoding)的加速方法,而 HuggingFace 的 transformers
套件中自然也有對應的加速方法 assistant_model
,今天就趁這個機會一起紀錄下來。
在過去的一週裡,我抽空按照論文 Draft & Verify: Lossless Large Language Model Acceleration via Self-Speculative Decoding 的思路嘗試復現了一遍自推測性解碼(Self-Speculative Decoding),包含以下模組:
在自推測性解碼(Self-Speculative Decoding)中,由於我們的 draft model 是由 target model 的部份網路擔任,所以找到一個好的『跳層策略』(Layer Skip Strategy)是非常重要的事情 —— 我們不僅要跳得夠多層讓加速真正意義上實現、也需要讓 draft model 的推測解碼程度足夠好且不容易被 target model 驗證時拒絕。
所以今天的實作,就是靠貝氏優化框架 Optuna 來優化我之前的實現的 LayerSkip 模型,決定到底要跳哪幾層。
Read More »透過貝氏優化去搜索 LayerSkip 模型的最佳跳層策略自推測性解碼(Self-Speculative Decoding)是一個推測性解碼(Speculative Decoding)的變體。原本的 Speculative Decoding 是採用一個草稿模型(draft model)來優化我們真正想要推理的目標模型(target),並且 draft model 擁有與 target model 相似的輸出以及快上幾倍的推理時間,通常是由 target model 蒸餾而來。
Read More »Self-Speculative Decoding 實現: 跳層 Transformer 模型實作筆記推測性解碼(Speculative Decoding)是一種實用性極強的加速推理技巧,通過讓小模型(draft model)快速、連續地解碼多個 Tokens 並保留過程中的採樣機率分佈,並讓我們真正希望加速的大模型(target model)在此之上預測下一個 Token —— 同時把過往的每個 Token 位置的採樣機率分佈一次性地計算得出,再透過 target model probs 去驗證 draft model probs 的有效性,並接受足夠可靠的 draft model 的推測解碼 Tokens。
Read More »推測性解碼(Speculative Decoding)實作筆記(附簡易實驗結果)我們在利用大型語言模型進行生成任務時,尤其是自迴歸任務(Auto-regression),模型實際上是在做一個好幾萬的分類任務,而分類的標的,其實就是我們詞庫(vocabulary)中的詞,通常是被稱為詞元(Token),也就是組成詞彙的最小單位。
如果我們希望採用貪婪解碼(greedy decoding),那麼我們永遠取模型最後一層解碼層的 logits
最大值就完事;但如果我們希望模型的生成結果具備多樣性與一定程度的隨機性,那麼,我們就有了許多的參數可以用來調整 logits
成為機率分佈了。
在自迴歸模型(Auto-regressive Model)解碼時,如果需要解碼 K 個詞元(Tokens),則需要跑 K 次流程,而這正是當前大型語言模型的推理時間瓶頸所在。
Read More »[論文閱讀] Fast Inference from Transformers via Speculative Decoding在大型語言模型的解碼過程中,尤其是自迴歸模型(Auto-regressive model),勢必得一次次地解碼直到生成整個序列為止,在這之中存在著一些 cache 的技巧,能夠幫助模型減少計算量、提昇解碼速度;而這個技巧就被稱為 KV Cache。
Read More »KV Cache: 一種加速 Transformer 模型生成速度的暫存機制在大家透過 LLM 架設各種服務時,是否會煩惱 LLM 經常生成一些不受控制的言論?最近我的工作正在專案收尾的緊要關頭,我使用了 Outlines 等工具用以約束 LLM 解碼,確實能控制模型生成符合我想項中的模式 —— 但我同事突然對我發出靈魂一問:那我想要它不生成某些詞彙該怎麼辦?
Read More »使用有限狀態機(FSM)和回滾(Rollback)機制控制 LLM 禁止生成禁止詞彙(Banned-Words)