llama.cpp server在 2025年12月11日發布的版本中正式引入了 router mode(路由模式),如果你習慣了 Ollama 那種處理多模型的方式,那這次 llama.cpp 的更新基本就是對標這個功能去的,而且它在架構上更進了一步。
![]()
路由模式的核心機制
簡單來說,router mode 就是一個內嵌在 llama.cpp 里的模型管理器。
以前跑 server,啟動時需要指定一個模型,服務就跟這個模型綁定了。要想換模型?要么停服務、改參數、重啟,要么直接啟動多個服務,而現在的路由模式可以動態加載多個模型、模型用完后還可以即時卸載,并且在不同模型間毫秒級切換,最主要的是全過程無需重啟服務,這樣我們選擇一個端口就可以了。
這里有個技術細節要注意:它的實現是多進程的(Each model runs in its own process)。也就是說模型之間實現了進程級隔離,某個模型如果跑崩了,不會把整個服務帶崩,其他模型還能正常響應。這種架構設計對穩定性的考慮還是相當周到的。
啟動配置與自動發現
啟用方式很簡單,啟動 server 時不要指定具體模型即可:
llama-server
服務啟動后會自動掃描默認緩存路徑(LLAMA_CACHE 或 ~/.cache/llama.cpp)。如果你之前用 llama-server -hf user/model 這種方式拉取過模型,它們會被自動識別并列入可用清單。
但是我們一般會把模型存放在特定目錄,指定一下就行:
llama-server --models-dir /llm/gguf
這個模式不僅是“能加載”那么簡單,它包含了一套完整的資源管理邏輯:
- Auto-discovery(自動發現):啟動即掃描指定目錄或緩存,所有合規的 GGUF 文件都會被注冊。
- On-demand loading(按需加載):服務啟動時不占滿顯存,只有當 API 請求真正過來時,才加載對應模型。
- LRU eviction(LRU 淘汰):可以設置最大駐留模型數(默認是 4)。當加載新模型導致超出限制時,系統會自動釋放那個最近最少使用的模型以騰出 VRAM。
- Request routing(請求路由):完全兼容 OpenAI API 格式,根據請求體中的 model 字段自動分發流量。
調用實測
通過 API 調用特定模型,如果該模型未加載,首個請求會觸發加載過程(會有冷啟動延遲),后續請求則是熱調用。
curl http://395-1.local:8072/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf",
"messages": [{"role": "user", "content": "打印你的模型信息"}]
}'
查看模型狀態
這對于監控服務狀態很有用,能看到哪些模型是 loading,哪些是 idle。
curl http://395-1.local:8072/models
手動資源管理
除了自動托管,也開放了手動控制接口:
加載模型:
curl -X POST http://395-1.local:8072/models/load \
-H "Content-Type: application/json" \
-d '{"model": "Qwen3-Next-80B-A3B-Instruct-1M-MXFP4_MOE-GGUF/Qwen3-Next-80B-A3B-Instruct-1M-MXFP4_MOE-00001-of-00003.gguf"}'
卸載模型:
curl -X POST http://395-1.local:8072/models/unload \
-H "Content-Type: application/json" \
-d '{"model": "Qwen3-Next-80B-A3B-Instruct-1M-MXFP4_MOE-GGUF/Qwen3-Next-80B-A3B-Instruct-1M-MXFP4_MOE-00001-of-00003.gguf"}'
常用參數與全局配置
這幾個參數在路由模式下使用頻率很高:
- --models-dir PATH: 指定你的 GGUF 模型倉庫路徑。
- --models-max N: 限制同時駐留顯存的模型數量。
- --no-models-autoload: 如果不想讓它自動掃描目錄,可以用這個關掉。
比如下面這個啟動命令,設定了全局的上下文大小,所有加載的模型都會繼承這個配置:
llama-server --models-dir ./models -c 8192
進階:基于預設的配置
全局配置雖然方便,但是不同的模型有不同的配置方案,比如你想讓 Coding 模型用長上下文,而讓寫作模型一部分加載到cpu中。
這時候可以用 config.ini 預設文件:
llama-server --models-preset config.ini
配置文件示例:
[oss120]
model = gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf
ctx-size = 65536
temp = 0.7
這樣就能實現針對特定模型的精細化調優
同時官方自帶的 Web 界面也同步跟進了。在下拉菜單里直接選模型,后端會自動處理加載邏輯,對于不想寫代碼測試模型的人來說也很直觀。
總結
Router mode 看似只是加了個多模型支持,實則是把 llama.cpp 從一個單純的“推理工具”升級成了一個更成熟的“推理服務框架”。
不僅是不用重啟那么簡單,進程隔離和 LRU 機制讓它在本地開發環境下的可用性大幅提升。對于那些要在本地通過 API 編排多個模型協作的應用(Agent)開發來說,這基本是目前最輕量高效的方案之一。
https://avoid.overfit.cn/post/f604f19386df4d9ebb37aae55f899ec5
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.