llama.cpp 推出 1.0,介面不相容改升大版號

Open source illustration: hands joining branches to a shared node tree

本地推論函式庫 llama.cpp 發布 v1.0.0,底層張量函式庫 ggml 同步升到 1.0。專案團隊在 Hugging Face 部落格上發文,表示這個版本是要給依賴它的開發者一個更穩定的基礎:往後 llama.cpp 與 ggml 只要公開 API 或 ABI 出現不相容,就會反映在主版本號的變動上。

過去幾年,llama.cpp 的發版幾乎全靠 b 開頭的建置編號,程式碼合併進主幹就產出一個新建置,如今已經數到 b12000 以上。1.0 之後這套建置編號並沒有停,仍以預發布的形式持續產出;改變的是多了一條有承諾的正式版本線,使用者可以依需求選擇。

版本號從此有了意義

部落格給出的規則相當直白:MAJOR 對應 ./include 目錄下公開 C 介面的破壞性變更,MINOR 是向下相容的新功能或新模型支援,PATCH 只修 bug、不動介面,適用於 ggml-org 名下的所有專案。團隊寫道,使用的人越來越多,往後會更嚴格地讓這些界線被看見。

為了乾淨起跑,1.0 先做了一輪清理:刪除一批早已標為棄用的公開介面,部分函式改名,上下文參數結構體也加了新欄位;ggml 這一側同樣移除了棄用的 API 與舊的 DIAG_MASK 運算子。對於把 llama.cpp 當作函式庫連結進自家產品的開發者,這次升級要改一次程式碼,之後只要跟著小版本走,就不必擔心介面在某個建置裡突然消失。

這一版加了什麼

除了版本規則,1.0 本身也帶來不少更新:

  • KV 快取支援 FP8;新增放在主機記憶體裡的 MoE 專家快取,可設定 CPU 分擔比例;
  • 新增 Kimi-K3.1-Pro 等模型支援,Kimi-K3.1 可以處理影像輸入;
  • llama-server 新增 /v1/audio/speech 語音合成介面,搭配 drama-3 TTS 模型;
  • 伺服器端修復 SSRF、CORS 與 DNS 重綁定問題,免驗證呼叫工具、存取私有網址都改成需要明確開啟,HF_TOKEN 只會送往 huggingface.co。

最後一項對自行架設服務的人最為實際。llama-server 常被當成本地的 OpenAI 相容介面掛在內網,甚至直接暴露到公網,工具呼叫一旦預設放開,風險面也會跟著擴大。改成明確開啟,等於把選擇權交還給部署的人。

MoE 專家快取則是衝著現下的模型型態而來。今年的大型模型多半是混合專家架構,總參數動輒數千億,每一步只啟用其中一小部分。顯示記憶體放不下全部專家時,把暫時用不到的那部分挪到主機記憶體、按比例交給 CPU 運算,是在消費級顯示卡上跑大型 MoE 模型的常見折衷做法,這次進了主線,使用者不必再去找第三方分支。

與資料中心那一路對照

推論框架如今分成兩條路。vLLM、SGLang 這類框架面向資料中心 GPU,拚的是批次吞吐量與並行處理;llama.cpp 的目標則是讓模型在手機、筆電和工作站上跑起來,靠量化把大型模型塞進有限的記憶體,CPU 與 GPU 混合使用。

這一點從後端清單就看得出來:CUDA、Metal、Vulkan、WebGPU、AMD 的 HIP、英特爾的 SYCL、驍龍 Hexagon,以及摩爾線程的 MUSA 都在列,每個後端都可以編成動態函式庫、執行時按需載入。部落格稱它已支援 150 多種模型架構變體。資料中心框架追的是新硬體,llama.cpp 追的是長尾裝置,兩邊的使用者群重疊不大。

專案在 GitHub 上約有 13.5 萬顆星、2.56 萬個 fork。團隊目前隸屬 Hugging Face,部落格感謝 HF 提供 CI 運算資源,也列出輝達、AMD、高通、Arm、IBM 與英特爾提供的硬體支援。版本承諾能不能守住,要看接下來幾個小版本有沒有偷偷改介面。

參考來源:Hugging Face 部落格、llama.cpp GitHub 發布頁、CocoLoop、llama.cpp 儲存庫 README;發布頁核實了 1.0 新增功能、介面清理範圍與後端清單。