使用 HuggingFace `transformers` 套件中模型的 `assistant_model` 方法來進行 Speculative Decoding 的加速
Last Updated on 2024-11-18 by Clay
最近嘗試實作了許多推測性解碼(Speculative Decoding)的加速方法,而 HuggingFace 的 transformers
套件中自然也有對應的加速方法 assistant_model
,今天就趁這個機會一起紀錄下來。
Last Updated on 2024-11-18 by Clay
最近嘗試實作了許多推測性解碼(Speculative Decoding)的加速方法,而 HuggingFace 的 transformers
套件中自然也有對應的加速方法 assistant_model
,今天就趁這個機會一起紀錄下來。
Last Updated on 2024-11-17 by Clay
在過去的一週裡,我抽空按照論文 Draft & Verify: Lossless Large Language Model Acceleration via Self-Speculative Decoding 的思路嘗試復現了一遍自推測性解碼(Self-Speculative Decoding),包含以下模組:
Last Updated on 2024-11-14 by Clay
Last Updated on 2024-11-13 by Clay
在自推測性解碼(Self-Speculative Decoding)中,由於我們的 draft model 是由 target model 的部份網路擔任,所以找到一個好的『跳層策略』(Layer Skip Strategy)是非常重要的事情 —— 我們不僅要跳得夠多層讓加速真正意義上實現、也需要讓 draft model 的推測解碼程度足夠好且不容易被 target model 驗證時拒絕。
所以今天的實作,就是靠貝氏優化框架 Optuna 來優化我之前的實現的 LayerSkip 模型,決定到底要跳哪幾層。
Read More »透過貝氏優化去搜索 LayerSkip 模型的最佳跳層策略Last Updated on 2024-11-10 by Clay
自推測性解碼(Self-Speculative Decoding)是一個推測性解碼(Speculative Decoding)的變體。原本的 Speculative Decoding 是採用一個草稿模型(draft model)來優化我們真正想要推理的目標模型(target),並且 draft model 擁有與 target model 相似的輸出以及快上幾倍的推理時間,通常是由 target model 蒸餾而來。
Read More »Self-Speculative Decoding 實現: 跳層 Transformer 模型實作筆記Last Updated on 2024-11-07 by Clay
最近在嘗試整理這一年來所閱讀的加速推理技巧論文成筆記,過程中看到了用到了貝氏的貝氏優化技巧,遂決定也寫一篇筆記記錄貝氏定理的精神。
簡單來說,貝氏定理(Bayes' Theorem)是機率論中的經常會看到的定理,描述在特定條件下一隨機事件的發生機率。
Read More »貝氏定理(Bayes' Theorem)筆記Last Updated on 2024-11-06 by Clay
推測性解碼(Speculative Decoding)是一種實用性極強的加速推理技巧,通過讓小模型(draft model)快速、連續地解碼多個 Tokens 並保留過程中的採樣機率分佈,並讓我們真正希望加速的大模型(target model)在此之上預測下一個 Token —— 同時把過往的每個 Token 位置的採樣機率分佈一次性地計算得出,再透過 target model probs 去驗證 draft model probs 的有效性,並接受足夠可靠的 draft model 的推測解碼 Tokens。
Read More »推測性解碼(Speculative Decoding)實作筆記(附簡易實驗結果)Last Updated on 2024-11-04 by Clay
我們在利用大型語言模型進行生成任務時,尤其是自迴歸任務(Auto-regression),模型實際上是在做一個好幾萬的分類任務,而分類的標的,其實就是我們詞庫(vocabulary)中的詞,通常是被稱為詞元(Token),也就是組成詞彙的最小單位。
如果我們希望採用貪婪解碼(greedy decoding),那麼我們永遠取模型最後一層解碼層的 logits
最大值就完事;但如果我們希望模型的生成結果具備多樣性與一定程度的隨機性,那麼,我們就有了許多的參數可以用來調整 logits
成為機率分佈了。
Last Updated on 2024-11-07 by Clay
在自迴歸模型(Auto-regressive Model)解碼時,如果需要解碼 K 個詞元(Tokens),則需要跑 K 次流程,而這正是當前大型語言模型的推理時間瓶頸所在。
Read More »[論文閱讀] Fast Inference from Transformers via Speculative Decoding