測驗:什麼是 llama.cpp?本地跑 LLM 的最佳選擇
共 5 題,點選答案後會立即顯示結果
1. llama.cpp 是用什麼程式語言寫成的?
2. llama.cpp 使用哪種專屬格式來存放模型?
3. 以下哪個情況最適合選擇本地 LLM 而非雲端 API?
4. 關於量化技術,以下敘述何者正確?
5. 若要在 Mac M1/M2/M3 電腦上使用 GPU 加速,llama.cpp 需要使用哪種後端技術?
前言
你有沒有想過,能不能在自己的電腦上跑 ChatGPT 那樣的 AI?不用付 API 費用、不用擔心隱私外洩、甚至沒有網路也能用?
這就是 llama.cpp 要解決的問題。
llama.cpp 是一個開源專案,讓你可以在自己的電腦上運行大型語言模型(LLM)。不管你用的是 Mac、Windows 還是 Linux,有沒有獨立顯卡,它都能跑。本篇文章將帶你認識 llama.cpp,並完成第一次的安裝設定。
llama.cpp 是什麼?
一句話解釋
llama.cpp 是一個用純 C/C++ 寫成的 LLM 推論引擎,讓你可以在本地電腦上運行各種開源語言模型。
專案背景
llama.cpp 由 Georgi Gerganov 於 2023 年 3 月創建,最初是為了能在 MacBook 上運行 Meta 的 LLaMA 模型。專案名稱中的「llama」來自它最初支援的模型,「.cpp」則表示它是用 C++ 寫的。
截至 2025 年,llama.cpp 在 GitHub 上已有超過 85,000 顆星,成為本地 LLM 推論的事實標準。它不只支援 LLaMA 系列,還支援 Mistral、Qwen、Gemma 等主流開源模型。
核心設計理念
最小依賴 + 最大相容性 + 高效能
llama.cpp 的設計哲學是「能跑就好」。它不需要 Python、不需要 PyTorch、不需要複雜的環境設定。只要你能編譯 C++ 程式,就能跑。
為什麼要在本地跑 LLM?
在決定使用 llama.cpp 之前,我們先來看看本地 LLM 和雲端 API 的取捨:
| 考量面向 | 本地 LLM (llama.cpp) | 雲端 API (OpenAI 等) |
|---|---|---|
| 隱私性 | 資料完全不出本機 | 資料傳送到第三方伺服器 |
| 成本 | 一次性硬體成本,之後免費 | 按 token 計費,長期使用成本高 |
| 離線使用 | 完全支援 | 需要網路連線 |
| 回應速度 | 取決於本機硬體 | 取決於網路延遲和伺服器負載 |
| 模型選擇 | 限於開源模型 | 可用最新商業模型 |
| 模型能力 | 通常較弱(7B-70B 參數) | 較強(GPT-4、Claude 等) |
什麼時候該選本地 LLM?
- 隱私敏感場景:處理公司內部文件、個人日記、醫療紀錄
- 成本考量:大量呼叫時,API 費用可能非常可觀
- 離線需求:飛機上、偏遠地區、網路不穩定的環境
- 學習研究:想了解 LLM 底層運作、進行實驗
- 客製化需求:需要微調模型或修改推論流程
什麼時候該選雲端 API?
- 需要最強能力:複雜推理、程式碼生成、專業領域
- 快速開發:不想花時間在環境設定上
- 硬體限制:電腦配備不足以跑大模型
llama.cpp 的技術特色
1. 純 C/C++ 實作,零外部依賴
// llama.cpp 的核心程式碼不依賴任何外部函式庫
// 這意味著編譯和部署都非常簡單
Code language: JSON / JSON with Comments (json)大多數 AI 框架(如 PyTorch、TensorFlow)都需要安裝一堆依賴套件。llama.cpp 不同,它用純 C/C++ 寫成,只需要標準函式庫就能編譯。這帶來幾個好處:
- 編譯快速:不用等半天裝套件
- 部署簡單:只有一個執行檔
- 跨平台:哪裡能編譯 C++ 就能跑
2. 多平台硬體支援
llama.cpp 支援各種硬體加速:
| 硬體平台 | 後端技術 | 適用情況 |
|---|---|---|
| Apple Silicon | Metal | Mac M1/M2/M3/M4 系列 |
| NVIDIA GPU | CUDA | GeForce/RTX 顯示卡 |
| AMD GPU | HIP/ROCm | Radeon 顯示卡 |
| Intel GPU | SYCL | Intel Arc 顯示卡 |
| 任何 GPU | Vulkan | 跨平台通用方案 |
| 純 CPU | AVX/AVX2/AVX512 | 沒有獨顯也能跑 |
重點:即使你沒有獨立顯卡,用純 CPU 也能跑! 只是速度會慢一些。
3. GGUF 模型格式
llama.cpp 使用專屬的 GGUF(GPT-Generated Unified Format)格式存放模型。這個格式的特色:
GGUF 檔案結構:
┌─────────────────┐
│ 檔案標頭 │ ← 版本、對齊資訊
├─────────────────┤
│ 中繼資料 │ ← 模型設定、詞彙表
├─────────────────┤
│ 張量資料 │ ← 實際的模型權重
└─────────────────┘
GGUF 的優點:
- 快速載入:讀取一次就能開始推論
- 自包含:所有資訊都在單一檔案中
- 支援量化:從 2-bit 到 8-bit 都支援
4. 量化技術
量化是 llama.cpp 能在消費級硬體上運行的關鍵。簡單來說,量化就是用較少的位元來表示模型權重:
| 量化等級 | 位元數 | 模型大小(以 7B 為例) | 品質影響 |
|---|---|---|---|
| F16 | 16-bit | ~14 GB | 無損失 |
| Q8_0 | 8-bit | ~7 GB | 極小損失 |
| Q4_K_M | 4-bit | ~4 GB | 輕微損失 |
| Q2_K | 2-bit | ~2.5 GB | 明顯損失 |
對於大多數使用場景,Q4_K_M 是個好選擇——檔案小、品質夠用。
安裝 llama.cpp
方法一:使用套件管理器(最簡單)
macOS(使用 Homebrew):
brew install llama.cpp
Code language: CSS (css)Windows(使用 winget):
winget install llama.cpp
Code language: CSS (css)Linux(使用 Nix):
nix profile install nixpkgs#llama-cpp
Code language: CSS (css)方法二:下載預編譯版本
前往 GitHub Releases 頁面,下載對應你系統的版本:
llama-*-bin-macos-arm64.zip:Mac (Apple Silicon)llama-*-bin-macos-x64.zip:Mac (Intel)llama--bin-win-cuda-.zip:Windows + NVIDIA GPUllama--bin-win-vulkan-.zip:Windows + 其他 GPUllama-*-bin-ubuntu-x64.zip:Linux
下載後解壓縮,裡面會有 llama-cli、llama-server 等執行檔。
方法三:從原始碼編譯(最靈活)
這是最推薦的方式,因為你可以針對自己的硬體做最佳化。
Step 1:安裝編譯工具
Ubuntu/Debian:
sudo apt update
sudo apt install build-essential cmake git
macOS(使用 Xcode Command Line Tools):
xcode-select --install
Windows(使用 MSYS2):
pacman -S git mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja
Step 2:下載原始碼
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
Code language: PHP (php)Step 3:編譯
純 CPU 版本:
cmake -B build
cmake --build build --config Release
NVIDIA GPU 版本(需先安裝 CUDA Toolkit):
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
Apple Metal 版本:
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release
Vulkan 版本(跨平台 GPU):
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release
編譯完成後,執行檔會在 build/bin/ 目錄下。
驗證安裝成功
安裝完成後,讓我們來驗證一切正常運作。
Step 1:檢查執行檔
# 如果用套件管理器安裝
llama-cli --version
# 如果從原始碼編譯
./build/bin/llama-cli --version
Code language: PHP (php)你應該會看到類似這樣的輸出:
version: 4567 (abc1234)
built with cc (GCC) 13.2.0 for x86_64-linux-gnu
Code language: CSS (css)Step 2:下載測試模型
我們用一個小模型來測試。llama.cpp 可以直接從 Hugging Face 下載模型:
# 下載並執行一個小模型(約 1.5GB)
llama-cli -hf ggml-org/gemma-3-1b-it-GGUF -p "Hello, who are you?" -n 50
Code language: PHP (php)或者你也可以手動下載模型:
- 前往 Hugging Face
- 搜尋 “GGUF” 格式的模型
- 下載 .gguf 檔案
然後用下載的模型測試:
llama-cli -m ./your-model.gguf -p "Hello!" -n 50
Code language: JavaScript (javascript)Step 3:確認輸出
如果一切正常,你會看到模型的回應,像這樣:
Hello! I am a large language model, trained by... [模型繼續生成文字]
Code language: CSS (css)恭喜!你已經成功在本地跑起了一個 LLM!
常見問題排解
Q: 編譯時出現「cmake not found」
安裝 CMake:
# Ubuntu
sudo apt install cmake
# macOS
brew install cmake
# Windows (MSYS2)
pacman -S mingw-w64-ucrt-x86_64-cmake
Code language: PHP (php)Q: 執行時出現「CUDA not found」但我有 NVIDIA 顯卡
確認已安裝 CUDA Toolkit,並且在編譯時加上 -DGGML_CUDA=ON。
Q: 模型載入很慢
第一次載入會比較慢,因為需要初始化。之後再執行會快很多。如果還是很慢,可能是記憶體不足,試試用更小的量化版本(如 Q4_K_M)。
Q: 生成速度很慢(每秒只有幾個 token)
- 如果用 CPU:這是正常的,CPU 推論本來就較慢
- 如果有 GPU:確認編譯時有啟用對應的加速(CUDA/Metal/Vulkan)
- 試試較小的模型,或更高程度的量化
本篇重點回顧
- llama.cpp 是什麼:一個用純 C/C++ 寫成的 LLM 推論引擎,讓你在本地跑大型語言模型
- 為什麼選擇本地 LLM:隱私保護、無 API 成本、離線使用、學習研究
- 核心技術特色:
- 零外部依賴的純 C/C++ 實作
- 跨平台硬體支援(CPU、NVIDIA、AMD、Apple Silicon)
- GGUF 格式與量化技術
- 安裝方式:
- 套件管理器(最簡單)
- 預編譯版本(方便快速)
- 從原始碼編譯(最靈活)
下一篇預告
在下一篇文章中,我們將學習如何取得和選擇模型。你會學到:
- 從哪裡下載 GGUF 模型
- 如何根據硬體選擇適合的量化版本
- 模型命名慣例解讀
延伸資源
進階測驗:什麼是 llama.cpp?本地跑 LLM 的最佳選擇
共 5 題,包含情境題與錯誤診斷題。
1. 你的公司有一台配備 NVIDIA RTX 4090 的 Linux 工作站,想要編譯 llama.cpp 以獲得最佳 GPU 加速效能。你應該使用哪個編譯指令? 情境題
2. 小華執行以下指令,卻出現錯誤訊息:錯誤診斷
檔案確實存在且路徑正確。最可能的原因是什麼?