text-generation-inference 文件
推測(Speculation)
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
推測
推測解碼、輔助生成、Medusa等都是同一個概念的不同名稱。這個概念是在大型模型實際執行**之前**生成token,然後只**檢查**這些token是否有效。
所以你會在LLM上進行**更多**的計算,但如果你預測正確,你可以在一次LLM執行中生成1、2、3或更多token。由於LLM通常受限於記憶體(而不是計算),只要你的預測足夠準確,這可以帶來2-3倍的推理速度提升(例如,對於程式碼相關的任務,甚至可以更高)。
你可以檢視一篇更詳細的解釋。
文字生成推理支援兩種主要的推測方法:
- Medusa
- N-gram
Medusa
Medusa是一種簡單的方法,可以在現有模型的基礎上,透過額外微調的LM頭部,在單次執行中生成多個token。
你可以檢視一些針對流行模型的現有微調模型:
- text-generation-inference/gemma-7b-it-medusa
- text-generation-inference/Mixtral-8x7B-Instruct-v0.1-medusa
- text-generation-inference/Mistral-7B-Instruct-v0.2-medusa
為了為你自己的微調模型建立Medusa頭部,你應該查閱原始的Medusa倉庫。更多資訊請閱讀訓練Medusa。
要在TGI中使用Medusa模型,只需指向一個已啟用Medusa的模型,一切都將自動載入。
N-gram
如果你沒有Medusa模型,或者沒有資源進行微調,你可以嘗試使用`n-gram`。N-gram的工作原理是在先前的序列中嘗試查詢匹配的token,並將其用作生成新token的推測。例如,如果token“np.mean”在序列中多次出現,模型可以推測“np.”的下一個延續很可能也是“mean”。
這是一種極其簡單的方法,最適合程式碼或高度重複的文字。如果推測的錯誤率太高,這可能不會帶來好處。
要啟用n-gram推測,只需在你的標誌中使用:
--speculate 2