【llama.cpp 教學】#01 什麼是 llama.cpp?本地跑 LLM 的最佳選擇

測驗:什麼是 llama.cpp?本地跑 LLM 的最佳選擇

共 5 題,點選答案後會立即顯示結果

1. llama.cpp 是用什麼程式語言寫成的?

  • A. Python 和 PyTorch
  • B. 純 C/C++
  • C. JavaScript 和 Node.js
  • D. Rust

2. llama.cpp 使用哪種專屬格式來存放模型?

  • A. ONNX
  • B. SafeTensors
  • C. GGUF
  • D. PyTorch .pt 檔

3. 以下哪個情況最適合選擇本地 LLM 而非雲端 API?

  • A. 需要使用 GPT-4 等最新商業模型
  • B. 處理公司內部機密文件,需要確保資料不外洩
  • C. 需要快速開發原型,不想花時間設定環境
  • D. 電腦配備不足以運行大型模型

4. 關於量化技術,以下敘述何者正確?

  • A. Q2_K 量化的模型品質最好
  • B. 量化會讓模型檔案變大但執行更快
  • C. F16 是最低位元的量化格式
  • D. Q4_K_M 是檔案大小和品質的良好平衡點

5. 若要在 Mac M1/M2/M3 電腦上使用 GPU 加速,llama.cpp 需要使用哪種後端技術?

  • A. Metal
  • B. CUDA
  • C. ROCm
  • D. SYCL

前言

你有沒有想過,能不能在自己的電腦上跑 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?

  1. 隱私敏感場景:處理公司內部文件、個人日記、醫療紀錄
  2. 成本考量:大量呼叫時,API 費用可能非常可觀
  3. 離線需求:飛機上、偏遠地區、網路不穩定的環境
  4. 學習研究:想了解 LLM 底層運作、進行實驗
  5. 客製化需求:需要微調模型或修改推論流程

什麼時候該選雲端 API?

  1. 需要最強能力:複雜推理、程式碼生成、專業領域
  2. 快速開發:不想花時間在環境設定上
  3. 硬體限制:電腦配備不足以跑大模型

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 GPU
  • llama--bin-win-vulkan-.zip:Windows + 其他 GPU
  • llama-*-bin-ubuntu-x64.zip:Linux

下載後解壓縮,裡面會有 llama-clillama-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)

或者你也可以手動下載模型:

  1. 前往 Hugging Face
  2. 搜尋 “GGUF” 格式的模型
  3. 下載 .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)
  • 試試較小的模型,或更高程度的量化

本篇重點回顧

  1. llama.cpp 是什麼:一個用純 C/C++ 寫成的 LLM 推論引擎,讓你在本地跑大型語言模型
  2. 為什麼選擇本地 LLM:隱私保護、無 API 成本、離線使用、學習研究
  3. 核心技術特色
    • 零外部依賴的純 C/C++ 實作
    • 跨平台硬體支援(CPU、NVIDIA、AMD、Apple Silicon)
    • GGUF 格式與量化技術
  4. 安裝方式
    • 套件管理器(最簡單)
    • 預編譯版本(方便快速)
    • 從原始碼編譯(最靈活)

下一篇預告

在下一篇文章中,我們將學習如何取得和選擇模型。你會學到:

  • 從哪裡下載 GGUF 模型
  • 如何根據硬體選擇適合的量化版本
  • 模型命名慣例解讀

延伸資源

進階測驗:什麼是 llama.cpp?本地跑 LLM 的最佳選擇

測驗目標:驗證你是否能在實際情境中應用所學。
共 5 題,包含情境題與錯誤診斷題。

1. 你的公司有一台配備 NVIDIA RTX 4090 的 Linux 工作站,想要編譯 llama.cpp 以獲得最佳 GPU 加速效能。你應該使用哪個編譯指令? 情境題

  • A. cmake -B build -DGGML_METAL=ON && cmake --build build --config Release
  • B. cmake -B build -DGGML_CUDA=ON && cmake --build build --config Release
  • C. cmake -B build -DGGML_VULKAN=ON && cmake --build build --config Release
  • D. cmake -B build && cmake --build build --config Release

2. 小華執行以下指令,卻出現錯誤訊息:錯誤診斷

$ llama-cli -m model.gguf -p “Hello” error: failed to load model

檔案確實存在且路徑正確。最可能的原因是什麼?

  • A. 缺少 -n 參數指定生成 token 數量
  • B. prompt 內容太短
  • C. 模型檔案格式不正確(可能不是 GGUF 格式)或檔案損壞
  • D. 需要先執行 llama-server 才能使用 llama-cli

3. 你的筆電只有 8GB RAM,想要運行一個 7B 參數的模型。根據文章中的量化對照表,你應該選擇哪個量化版本? 情境題

  • A. F16(約 14GB)
  • B. Q8_0(約 7GB)
  • C. Q4_K_M(約 4GB)
  • D. 8GB RAM 無法運行任何 7B 模型

4. 同事說他在 Windows 電腦上編譯 llama.cpp 時出現「cmake not found」錯誤。根據文章,在 Windows MSYS2 環境下應該如何解決? 錯誤診斷

  • A. sudo apt install cmake
  • B. pacman -S mingw-w64-ucrt-x86_64-cmake
  • C. brew install cmake
  • D. winget install cmake

5. 你是一間醫療診所的 IT 人員,醫生需要一個 AI 助手來幫忙整理病歷摘要。考慮到病患隱私和網路環境不穩定,以下哪個方案最合適? 情境題

  • A. 使用 OpenAI API,因為 GPT-4 能力最強
  • B. 使用雲端 API 加上 VPN 加密傳輸
  • C. 等網路穩定後再使用雲端服務
  • D. 使用 llama.cpp 在本地部署開源模型

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *