llama.cpp 部署 DeepSeek
GGUF 生態的母體。可控性最高,能精細控制 GPU 卸載與上下文。
取得與編譯
git clone https://github.com/ggerganov/llama.cpp cd llama.cpp # 有 NVIDIA GPU 時開啟 CUDA cmake -B build -DGGML_CUDA=ON cmake --build build --config Release -j # 純 CPU 或不支援 CUDA 時 cmake -B build cmake --build build --config Release -j
下載 GGUF 模型
# 從 Hugging Face 下載(以社群轉換版為例) # 建議先看 /local/gguf/ 決定要哪個量化 huggingface-cli download\ --include "*Q4_K_M*.gguf" \ --local-dir ./models
啟動伺服器
./build/bin/llama-server \ -m ./models/model-Q4_K_M.gguf \ -c 32768 \ -ngl 99 \ --host 0.0.0.0 \ --port 8080
參數說明
| 參數 | 作用 | 怎麼設 |
|---|---|---|
-m | 模型檔案路徑 | 指向 gguf 檔 |
-c | 上下文長度 | 依任務設,越長越吃顯存 |
-ngl | 卸載到 GPU 的層數 | 顯存夠就 99(全部),不夠逐次降 |
--host | 監聽位址 | 只本機用 127.0.0.1 |
-np | 並行請求數 | 依併發需求設,會吃更多顯存 |
-ngl 是 llama.cpp 最關鍵的參數。
設 99 表示全部層都放 GPU;顯存不夠時從 80、70 往下試,
每降一層就多一些層在 CPU 上跑,速度會變慢但能跑起來。怎麼知道顯存夠不夠
# 啟動時觀察輸出,會顯示每一層放在哪 # 出現 "offloaded 64/65 layers to GPU" 表示 64 層在 GPU # 用 nvidia-smi 監控 watch -n 1 nvidia-smi
API 調用
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "local",
"messages": [{"role":"user","content":"你好"}],
"temperature": 0.7
}'
llama.cpp 的優勢與代價
| 優勢 | 代價 |
|---|---|
| GGUF 支援最完整,新量化第一時間可用 | 需要自己編譯,依賴問題較多 |
| GPU + CPU 混合推理,大模型也能跑 | 混合模式速度慢很多 |
| 參數暴露最完整,可精細調 | 沒有自動批次優化,吞吐不如 vLLM |
相關
量化怎麼選 · 顯存計算器 · Ollama(更簡單) · 本地部署總覽