llama.cpp 模型管理與路由模式

llama-server 現在包含一個 路由模式,允許使用者在不需要重新啟動伺服器的情況下,動態載入、卸載及在多個模型之間切換。此更新將 Ollama 風格的模型管理帶到 llama.cpp,採用多進程架構,每個模型在自己的進程中運行,以確保一個模型的崩潰不會影響其他模型。

動態模型載入與路由

llama-server 現在可以根據 API 請求中的 model 欄位,按需管理多個模型,將請求路由到適當的模型。

關鍵管理功能

  • 自動發現:伺服器會自動掃描 llama.cpp 快取(由 LLAMA_CACHE~/.cache/llama.cpp 定義)或透過 --models-dir 指定的自訂目錄中的 GGUF 檔案。
  • 按需載入:模型會在第一個請求時自動載入記憶體中。對同一模型的後續請求會即時處理。
  • LRU 淘汰:為管理記憶體,伺服器採用最近最少使用(LRU)淘汰政策。當已載入模型的數量達到由 --models-max 定義的最大值(預設為 4)時,會淘汰最近最少使用的模型以釋放資源。
  • 手動控制:使用者可以透過 HTTP POST 請求使用 /models/load/models/unload 端點來明確管理模型。

配置與技術選項

路由模式下的模型會繼承來自路由器的全域設定,例如上下文大小(-c)和 GPU 卸載(-ngl)。然而,透過預設值可以進行細粒度控制。

關鍵命令列旗標

Flag Description
--models-dir PATH 指定包含 GGUF 檔案的目錄。
--models-max N 設定同時載入的最大模型數量(預設:4)。
--no-models-autoload 停用自動載入,需要透過明確的 /models/load 呼叫。

每個模型的預設值

使用者可以透過 --models-preset 傳遞的 config.ini 檔案,為個別模型定義特定配置。這允許為每個模型自訂上下文大小和溫度設定。根據社群討論,presets.ini 也可以用來為特定模型指定 mmproj(多模態投影)檔案。

API 與介面整合

模型管理已整合到 API 和使用者介面中:

  • API 列表:對 /models 發出 GET 請求會返回所有已發現的模型及其目前狀態(loadedloadingunloaded)。
  • 網頁 UI:內建的 llama.cpp Web UI 透過下拉選單支援模型切換,這會觸發自動載入。
  • OpenAI 相容性:伺服器保持為輕量級的 OpenAI 相容 HTTP 伺服器,使其易於整合到現有工作流程中。

社群見解

使用者已強調此功能在 A/B 測試模型版本及建構多租戶部署方面的實用性。就技術細節而言,社群成員指出:

llama-server 預設在多數實作中會將推理內容保存在回應屬性的 reasoning_content 變數中。您可以從那裡取得。否則使用 reasoning-format 標誌並傳遞 DeepSeek 值以獲得純粹的 token。

這表明儘管路由器管理模型,底層伺服器仍繼續支援特定模型架構的進階輸出格式,例如推理 token。

Sources