Skip to content

Clay

推測性解碼(Speculative Decoding)實作筆記(附簡易實驗結果)

介紹

推測性解碼(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 成為機率分佈了。

Read More »大型語言模型的解碼採樣筆記

[Python] FastAPI 使用 Server-Sent Events (SSE) 進行串流回覆

最近建立了許多 Chatbot 的後台 API Server,一開始我是接收到使用者的訊息後回傳,將 LLM 的生成回覆一口氣顯示在前端界面,但這樣使用者體驗並不好;之後改成了 HTTP 串流,每生成一個 Token 就回傳前端界面,但後來發現在部份使用者的裝置上會發生黏包,所以最後改成了使用 WebSocket。

Read More »[Python] FastAPI 使用 Server-Sent Events (SSE) 進行串流回覆

使用有限狀態機(FSM)和回滾(Rollback)機制控制 LLM 禁止生成禁止詞彙(Banned-Words)

在大家透過 LLM 架設各種服務時,是否會煩惱 LLM 經常生成一些不受控制的言論?最近我的工作正在專案收尾的緊要關頭,我使用了 Outlines 等工具用以約束 LLM 解碼,確實能控制模型生成符合我想項中的模式 —— 但我同事突然對我發出靈魂一問:那我想要它不生成某些詞彙該怎麼辦?

Read More »使用有限狀態機(FSM)和回滾(Rollback)機制控制 LLM 禁止生成禁止詞彙(Banned-Words)

一點思考:Transformer 在未來是否會被取代?

今天我在吃飯時看到了一部影片(影片附於文末),影片中不像現在很多衝著 AI 這種新穎技術的科技頻道,一上來就把 AI、經濟、取代人類等等議題一股腦地拋出來;而是仔細地,講解了從以前到現在,硬體的規格如何影響演算法(或者稱 AI 模型架構)。

Read More »一點思考:Transformer 在未來是否會被取代?

KTOTrainer(Kahneman-Tversky Optimization Trainer)筆記

之前一直斷斷續續從網路上、HuggingFace 官方文件等各種地方看到名為 Kahneman-Tversky OptimizationKTO)的 LLM 微調方式(實際上跟 DPO 相似是一種價值觀對齊方式),因為其準備資料的格式比起 DPO 實在太方便了,目前先趕緊嘗試應用在自己手邊的任務上、之後再來抽空閱讀論文中的詳細內容。

Read More »KTOTrainer(Kahneman-Tversky Optimization Trainer)筆記