Ollama 0.31: 透過多標記預測提升 Gemma 4 效能
Ollama 0.31 在 Apple Silicon 上為 Gemma 4 實作了多標記預測 (MTP),在程式碼代理 (coding-agent) 基準測試中,平均標記生成速度提升了近 90%。此效能提升為預設開啟,且不會改變模型的輸出內容。
多標記預測 (MTP) 機制
Gemma 4 利用一個小型且快速的草稿模型 (draft model) 與主模型並行執行,用以提議接下來的幾個標記。接著,主模型會在單次處理中驗證這些提議,只要草稿模型的預測正確,就能以單次成本提交多個標記。
這種方法對於程式碼生成特別有效,因為程式碼通常包含可預測的模式,例如閉合括號、重複的識別碼以及樣板程式碼 (boilerplate)。因此,持續呼叫模型來讀取檔案並執行工具的程式碼代理,其回應速度會顯著提升。
技術實作
Ollama 0.31 的加速效果是透過三項主要的技術優化實現的:自動調整草稿長度、引擎層級的投機解碼 (speculative decoding) 以及 GPU 核心 (kernel) 優化。
自動調整草稿長度
由於理想的草稿標記數量會根據模型、量化方式、硬體以及文本的可預測性而有所不同,Ollama 會在執行時決定草稿長度。系統會追蹤提議的接受率與驗證處理時長,以選擇能最大化每秒標記數 (tokens per second) 的長度。如果提議持續被拒絕,系統會自動切換回標準的一次一個標記解碼模式,以確保投機機制不會降低效能。
投機解碼引擎
生成過程遵循一個完全在 GPU 上執行的特定序列,以避免 CPU 往返處理:
- 草稿生成 (Drafting):草稿模型預測一串標記序列。
- 採樣與驗證 (Sampling and Verification):主模型在單次處理中驗證整組提議。
- 提交 (Commitment):保留接受的標記。對於被拒絕的標記,引擎會使用在每次提議前記錄的復原點 (rollback point) 倒回至最後一個接受的標記,而無需重新計算先前的狀態。
MLX 核心 (Kernel) 優化
驗證是整個過程中計算成本最高的部分。由於草稿批次 (draft batches) 通常很小(2 到 8 個標記),它們的大小介於單標記解碼與大批次預填 (prefill) 之間,這使得標準矩陣乘法核心 (matrix multiplication kernels) 效率低下。
Ollama 向 MLX 貢獻了一個專用的核心,該核心會讀取並解包每個權重區塊一次,並在整個批次中重複使用它們。在 M5 Max 上使用 nvfp4 時,這項優化透過消除冗餘工作並保持相同的計算量,使 Gemma 4 的最大矩陣乘法速度提升了 2 倍至 2.5 倍。
基準測試與可用性
效能是使用 Aider polyglot 基準測試進行測量的,該測試透過程式碼代理模擬真實的程式設計任務。結果顯示,在 M5 Max 上,Gemma 4 12B (nvfp4) 的生成速度提升了近 90%。
若要使用這些改進,使用者必須下載 macOS 版的 Ollama 0.31 或更高版本。先前已下載 Gemma 4 的使用者應使用以下指令重新拉取模型:
ollama pull gemma4:12b-mlx
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch