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(更簡單) · 本地部署總覽