
在自己的硬件上本機執行 LLM,能拿到代管 API 給不了的三件事:沒有每 token 成本、資料不離開機器、沒有速率限制。代價則是你必須事先規劃的記憶體預算,而不是可以忽略的帳單。
近期的開源權重發布把這件事從嗜好推向隱私敏感工作的預設選項:Aleph Alpha 的 Kolibri 是英語與德語的混合專家模型,以 Apache 2.0 釋出(Aleph Alpha);antirez 的 ds4 則以 DeepSeek V4 Flash 為主要目標,支援 Metal、CUDA 與 ROCm(ds4)。以下執行環境就是它們底下那一層。
01先挑執行環境,再挑模型
控制權分三級,正確選擇取決於你要優化的是方便還是吞吐量。
| 執行環境 | 適合 | 介面 | 取捨 |
|---|---|---|---|
| 桌面應用(LM Studio 等) | 第一次執行、瀏覽模型 | GUI | 較不易腳本化 |
| Ollama | 日常使用、應用整合 | CLI + 11434 埠常駐服務 | 低階參數較少 |
| llama.cpp | 調校、供應、嵌入 | llama-cli、llama-server | 需手動設定 |
三者最終都執行 GGUF 檔,所以為其中一個下載的模型不會浪費。
02下載前先估算記憶體
這是大家最常跳過、也是下載完成後卻載入失敗的原因。有兩項成本要顧。
權重隨參數量與位元深度成長,因為量化會用更少的位元存每個權重。4 位元等於半個位元組,所以每十億參數約 0.5 GB,加上額外開銷就抓 0.6 GB;8 位元大約是兩倍,約 1.1 GB。
KV 緩存隨脈絡長度、批次大小、層數與 head 維度成長——而且它不是免費的。在 7B 模型上,從 4K 拉到 32K 脈絡可能增加好幾 GB。
| 模型大小(Q4) | 權重(估計) | 舒適最低需求 | 說明 |
|---|---|---|---|
| 3B | 約 2 GB | 6 GB | 小型筆電可跑 |
| 7–8B | 約 5 GB | 10 GB | 常見甜蜜點 |
| 13–14B | 約 8 GB | 14 GB | 需要 12 GB 以上 GPU |
| 30–34B | 約 20 GB | 32 GB | Apple 統一記憶體或雙 GPU |
權重是下限,不是總和
在空脈絡下塞得下的模型,把脈絡視窗拉高後可能就記憶體不足。先決定你需要的脈絡,再挑一個還留得下空間的量化。
03用 Ollama 執行模型
Ollama 是從零到可用端點最短的路。它會下載量化模型、緩存它,並啟動一個說 HTTP 的常駐服務。
- 安裝並啟動服務。官方安裝程式涵蓋 macOS、Windows 與 Linux;服務跑起來後會在 11434 埠待命。
- 下載並執行模型。 標籤決定參數大小與量化;省略時通常會選一個預設值。
ollama pull gemma4
ollama run gemma4
這個例子拉的是 gemma4,Ollama 模型庫裡目前的 Gemma 版本。標籤決定參數大小與量化;省略時通常會選一個預設值。
- 直接呼叫 API。 Ollama 在
11434提供 OpenAI 相容端點,現有客戶端只要改 base URL 就能用。
curl http://localhost:11434/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "gemma4",
"messages": [{ "role": "user", "content": "Summarize this changelog in one line." }]
}'
- 檢查載入了什麼、跑得多快。 Ollama 會回報模型、脈絡大小與每秒 token 數,那正是調校時要盯的數字。
04用 llama.cpp 執行同一個模型
llama.cpp 是你明確控制 GPU 卸載與脈絡的地方。先建置一次,之後就能供應任何 GGUF 檔。
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j
把多數層放到 GPU 上供應模型。-ngl 99 會盡可能卸載每一層,-c 設定脈絡大小,--port 提供 OpenAI 相容伺服器。
./build/bin/llama-server \
-m ./models/qwen3-8b-q4_k_m.gguf \
-c 8192 \
-ngl 99 \
--host 127.0.0.1 --port 8080
curl http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model": "local", "messages": [{"role": "user", "content": "Hello"}]}'
-ngl 是最有用的單一參數。若模型塞不下,把它調低會把層移到系統 RAM:還是能跑,但慢得多,因為每個 token 都得越過 PCIe 匯流排。
05調整決定效能的三個設定
量化決定質素上限(llama.cpp quantize)。Q4_K_M 是標準平衡,Q5_K_M 用略大的檔案換更好質素,Q8_0 接近原始模型但權重約大一倍。只有在更大的都塞不下時才往下走。
脈絡是最容易默默超出記憶體的設定。從任務實際需要的長度開始,而不是模型宣稱的最大值,然後一步步調高並盯著記憶體。
GPU 卸載決定推論是快、還是勉強能跑。把塞得進 VRAM 的層盡量卸載,並留一點餘裕給 KV 緩存與作業系統。
權重塞得下的量化,仍可能因脈絡而失敗
若模型載入後伺服器崩潰,或對話中途慢成爬行,請調低
-ngl或減少-c。長對話會讓緩存持續長大,直到機器開始置換。
06常見錯誤與修正
| 現象 | 原因 | 解法 |
|---|---|---|
| 模型載入後遇到第一個長提示就失敗 | KV 緩存超過可用記憶體 | 降低脈絡或量化 |
| 每秒 token 數極慢 | 有層在 CPU 上執行 | 提高 -ngl 或釋放 VRAM |
| 輸出亂碼或重複 | 量化對該任務太激進 | 改用 Q5 或 Q8 |
| 11434 埠連線被拒 | Ollama 服務沒在跑 | 啟動服務後重試 |
| 客戶端能通 API 但找不到模型 | 模型名稱與標籤不符 | 使用 ollama list 顯示的確切標籤 |
可行的流程是:估算記憶體、挑選符合質素要求的最小量化、用 OpenAI 相容端點供應它,然後把工具指向 localhost。端點穩定後,你就能交給編碼 agent 或內部工具使用,而完全不送出任何 token。
07資料來源
- Aleph Alpha — Kolibri Has Landed: A Sovereign Open-Weight Model(取用日期:2026-10-09)
- antirez/ds4(DwarfStar)— 支援的硬件與模型清單(取用日期:2026-10-09)
- llama.cpp — quantize 工具:量化改變了什麼(取用日期:2026-10-09)
- Ollama — macOS、Windows 與 Linux 的安裝說明(取用日期:2026-10-09)
- Ollama 模型庫 — gemma4(取用日期:2026-10-09)
- Ollama — OpenAI 相容性,base URL http://localhost:11434/v1/(取用日期:2026-10-09)
- llama.cpp — 建置說明(取用日期:2026-10-09)
- llama.cpp — server README:
-ngl、-c、--host、--port與 OpenAI 相容路由(取用日期:2026-10-09)
常見問題
本機執行模型需要多少 RAM 或 VRAM?
4 位元量化下,權重約每十億參數 0.6 GB,再為 KV 緩存加記憶體。7B 模型在 Q4 下、尚未計入脈絡前約需 4–5 GB;長脈絡可能再加好幾 GB。
Ollama 與 llama.cpp 有什麼差別?
Ollama 以模型管理、常駐服務與 11434 埠的 OpenAI 相容 API 包住 llama.cpp。llama.cpp 給你原始執行檔與每個參數的完整控制權,調效能時要的就是這個。
量化實際上換掉了什麼?
精度。低位元量化會縮小檔案並加快推論,但損失準確度,尤其在推理與長脈絡任務上。Q4_K_M 是常見平衡點;Q8_0 更接近原始模型,但檔案約大一倍。
為什麼我的模型比跑分慢?
多數跑分假設整個模型都放進 VRAM。若有層溢位到系統 RAM,吞吐量會大幅下降。請降低脈絡、改用更小量化,或減少移除層數並接受這個取捨。
可以讓本機模型搭配現有 OpenAI 客戶端嗎?
可以。Ollama 與 llama-server 都提供 OpenAI 相容端點,你只需改 base URL 與模型名稱,不必重寫 SDK 呼叫。
相關文章
- 如何挑選並自架編碼 agent harness
本機端點跑起來後,就可以交給 agent 使用。
- 提示注入是新的 SQL 注入
本機模型能呼叫工具時,風險不會比較低。
相關工具
- JSON 格式化工具
美化 OpenAI 相容 API 的回應。
- JSON 驗證工具
解析前先檢查結構化輸出回應。
- JSON 轉 TypeScript
把模型的 JSON 形狀轉成有型別的介面。
- JSON Schema 產生器
先產生 Schema,用來約束結構化輸出。