隨著人工智慧(AI)的快速發展,大型語言模型(LLM)已成為自然語言處理(NLP)的基石。這些模型在語言生成與理解方面展現出卓越的能力,使其成為機器翻譯、對話系統和文本生成等應用不可或缺的一部分。然而,隨著這些模型規模持續增長,其推論效率與資源消耗仍是大規模部署的主要瓶頸。
近年來,研究人員提出了各種優化技術來提升 LLM 推論效率。在我們先前的工作中,我們基於非常大型語言模型(vLLM)框架,透過動態 KV 快取壓縮實現了 1.5 倍的推論加速,為優化 LLM 效能奠定了堅實基礎。
本文將深入探討另外兩種優化策略:推測解碼 ** 與 ** 低精度量化。這些方法旨在最大化主流硬體的運算能力、降低推論成本並提升速度。透過採用這些技術,我們期望為提升 LLM 推論效率提供新的觀點與實用解決方案,以應對可擴展 AI 部署的挑戰。
推測解碼
技術原理
推測解碼是一種透過引入較小模型生成多個候選 token,再由較大模型進行驗證,從而實現平行解碼以提升速度的技術。此方法的可行性基於兩個關鍵因素:
記憶體瓶頸
在現代 GPU 硬體中,記憶體存取頻寬通常慢於推論所需的運算速度,導致過程明顯受限於記憶體。大型語言模型在推論階段的 GPU 記憶體流量主要由模型大小決定,而 GPU 往往有剩餘的運算能力。透過平行使用小模型進行推論,可以善用這部分剩餘能力,從而提升整體效率。
小模型預測準確性
目前主流的語言生成模型大多基於 Transformer 架構的自迴歸模型。小模型在預測常見語言模式(例如慣用語搭配或標準表達)時具有高度準確性。當小模型成功預測下一個 token 時,大型模型可以直接重用此結果,大幅降低運算成本。
實作方法
推測解碼方法主要包含以下步驟:
- 多輪候選生成
- 使用經過專門訓練的小模型進行快速推論,為每個位置生成多個高品質的候選 token。
- 創新地採用動態機率門檻調整機制,自適應控制候選數量。
- 引入上下文感知快取機制,提升小模型在連續文本生成中的預測準確性。
- 高效驗證策略
- 設計批次驗證機制,將多個候選 token 分組,一次送入大型模型進行評分。
- 實施提前終止策略,在找到高可信度匹配時快速返回結果。
- 啟用非同步處理驗證結果,減少 GPU 閒置等待時間。
- 智慧調度系統
- 動態平衡小模型預測與大型模型驗證之間的運算資源分配。
- 根據歷史統計使用自適應預測,優化候選 token 生成策略。
- 實作細粒度任務分割與調度,最大化硬體利用率。

圖1. 具有動態草稿長度的推測解碼
實驗結果
我們基於業界領先的 vLLM 推論框架進行了深度客製化開發,實現了顯著的效能提升。我們使用 LLaMA-3.1-70B-Instruct 模型在 H20 GPU 上進行實驗,測試了不同上下文長度的場景。此外,我們還與未採用推測解碼的 vLLM 進行了比較,重點關注不同批次大小下的吞吐量,實驗結果如圖2所示。
- 效能提升
- 在維持輸出品質的前提下,實現了 1.4 倍的整體推論加速。
- 完全相容現有 vLLM 功能,可無縫整合至現行系統。
- 支援各種規模的語言模型,對大型模型的提升尤為顯著。

圖2. 推測解碼加速比圖
- 技術優勢
- 基於機率的動態取樣策略,實現高效 token 草擬與驗證。
- 穩定的智慧調度機制,確保一致的加速效果。
- 成本效益高,資源開銷低。
低精度量化
技術原理
- 量化概述
量化是一種廣泛採用的技術,透過將模型權重與激活值從高位元表示轉換為低位元表示,來降低大規模語言模型(LLM)的運算與記憶體成本。具體來說,許多方法涉及將 FP16 張量量化為低位元整數張量,如下所示:

- 訓練後量化(PTQ)
PTQ 無需重新訓練即可量化預訓練模型,從而避免高昂的重新訓練成本。然而,將傳統量化方法應用於 LLM 會帶來獨特的挑戰:
-
- 與較小模型相比,LLM 在權重與激活值中表現出更高頻率的異常值以及更廣的分佈範圍。
- 因此,有效的 LLM 量化需要專門的優化技術,以在維持效率的同時最小化精度損失。
實作方法
- 異常值優化
大型語言模型權重與激活值中存在的異常值,在量化過程中構成重大挑戰。傳統方法通常透過剪裁或簡單縮放來處理異常值,這對於較小模型可能效果良好,但往往會顯著影響 LLM 的效能。
我們的方法透過詳細分析與優化策略,改進了異常值處理流程。不僅改善了異常值的計算,還優化了相關的資料結構,確保模型在最小化精度損失的同時保持高效運算能力。例如,我們採用更靈活的動態範圍分佈策略,分層處理異常值,以更準確地捕捉模型特徵。
- 改進運算元與層融合
我們設計了一系列改進運算元,能夠更高效地處理量化後的資料結構。例如,透過層融合技術,在前向計算中將多個連續運算元合併為單一運算元,以減少計算開銷與中間資料傳輸。
此外,針對常見的運算,如矩陣乘法與激活函數的組合,我們設計了高效的低位元運算元來加速模型推論。這項改進不僅顯著降低了硬體層級的頻寬需求,也進一步提升了整體運算效率。
- 獨特的 FP8 量化方案
雖然業界主流量化方法通常使用從 FP16 到 INT8 的轉換,但這種方法可能不適用於需要更低精度的場景。我們的 FP8 量化方案引入了自適應縮放因子,在保留模型數值表達能力的同時進一步降低位元寬度。在實作中,我們調整 FP8 中指數與尾數的比例,以更好地適應 LLM 的分佈特性,確保模型即使在極低位元寬度下也能保持準確性。
- KVCache 量化
在支援大規模推論的場景中,KVCache 的儲存與存取效率至關重要。傳統方法通常對 KVCache 採用標準量化技術,而未針對其儲存結構特性進行優化。
我們提出了一種專用的 KVCache 量化技術,透過對查詢與鍵值對應用特定量化策略,將運算資源需求降至最低。具體來說,我們優化了 KVCache 的動態更新與儲存密度,結合分段量化與稀疏矩陣儲存方法,顯著提升了推論過程中的快取利用率。
- 推論流程優化
模型權重從 FP16 量化為 FP8 格式進行推論。輸入 token 依次通過嵌入層和 Transformer 模組,包括注意力機制和前饋網路。
系統使用 FP8 TensorCore 和優化後的 KVCache 高效儲存與更新鍵值對。
線性變換與 Softmax 層生成輸出機率分佈,產生最終 token 輸出。
這種方法利用 FP8 TensorCore 的運算效率,以更低的運算成本實現更快的推論。在圖3中,原本為 FP16 格式的模型權重被量化為 FP8 以進行推論,顯著降低了資料存取開銷並提升了速度。在 LLM 推論過程中,QKV 投影、快閃注意力以及前饋層等運算以 FP8 格式進行矩陣乘法。這些運算使用 Tensor Core 加速,從而大幅提升推論速度。為減少精度損失,我們使用少量額外資料進行 PTQ,確保模型推論精度不受影響。在長文本場景中,KV 資料存取開銷可能導致推論速度下降。為解決此問題,KV 資料也被量化為 FP8,進一步優化了模型的推論效能。

圖3. FP8 精度量化管線概覽
實驗結果
- 圖4顯示了對 Llama3-8B-BF16 應用低精度量化後的加速比,其中輸入輸出長度不同(10000-1000、5000-500、2000-200),批次大小(Batch Size)也有所變化。輸入輸出長度越長,加速效果越顯著,特別是在大批次推論時。在單張 4090 GPU 上運行 Llama3-8B-FP8-KV8,且 ttft(首個 token 生成時間)限制在 2 秒以內時,批次大小約為 4,加速比為 1.4 倍。

圖4. FP8 量化加速比
- 我們的方法在處理較長輸入輸出長度時,顯著降低了異常值的影響,並透過層融合等優化提升了運算與傳輸效率。傳統的業界 PTQ 方法在處理大規模模型的大量輸入輸出長度時往往力不從心,而我們的解決方案專門針對此問題設計,確保模型效能穩定。
- 實驗表明,在 4090 GPU 上,我們的方法在處理長輸入輸出長度與中等批次大小時展現了優異的加速效果,同時保持推論延遲(ttft)低於 2 秒,滿足即時推論需求。
品質評估
若要使用 lm-evaluation-harness 工具在 mmlu_pro(5-shot)測試集上測試不同模型 API(例如 openrouter.ai),請按照以下步驟使用工具的預設配置進行推論。結果如圖5所示。

圖5. Meta-Liama-3.1-8B-Instruct-FP8 與 Meta-Liama-3.1-8B-Instruct 的精確匹配率比較
結論
本文介紹了推測解碼與低精度量化作為互補技術,旨在提升大型語言模型(LLM)推論效率。推測解碼透過利用較小模型生成候選 token,再由較大模型平行驗證,從而加速推論過程,實現了 1.4 倍加速。
相比之下,低精度量化透過將模型權重轉換為較低位元寬度表示,在維持模型效能的同時減輕了運算與記憶體開銷。整體而言,這些方法為實現高效推論提供了新的觀點與實用解決方案,並與動態 KV 快取壓縮等現有技術相輔相成。
原文發表於 Novita AI
Novita AI 是一個 AI 雲端平台,為開發者提供使用簡單 API 輕鬆部署 AI 模型的途徑,同時也提供經濟實惠且可靠的 GPU 雲端服務,用於建置與擴展。
推薦閱讀
