前言
最近想試用 llama.cpp 來跑 LLM (大型語言模型),但發現它執行起來生成速度很慢,結果是沒吃到我主機的 GPU。
此篇文章我將最終解決方式記錄下來,供遇到類似情形的讀者參考。
電腦環境:
- Windows 11
- NVIDIA GPU

安裝 llama.cpp
llama.cpp 有 幾種安裝方式 ,我是直接下載官方預先建置的二進位文件。 (最方便了~)
到 llama.cpp GitHub 的 Releases 頁面 ,找到對應的版本下載。
像我是在 Windows 並使用 NVIDIA GPU (CUDA),我就下載 llama-b5873-bin-win-cuda-12.4-x64.zip
,並只要解壓縮即可。
* 注意第一個 cudart-llama-bin-win-cuda-12.4-x64.zip
,後續是其中一種解決方法。
進入資料夾後,開啟終端機(命令提示字元),後續指令就在這路徑裡執行。
下載 GGUF 模型
llama.cpp 僅支援 GGUF 格式的模型。
關於模型的下載方法,或如何自己轉換為 GGUF 格式模型,官方這邊有詳細的說明:
https://github.com/ggml-org/llama.cpp#obtaining-and-quantizing-models
我是直接手動去下載 gemma-3-4b-it-Q4_K_M.gguf
:
https://huggingface.co/ggml-org/gemma-3-4b-it-GGUF/tree/main
* 如果你需要模型能 "看圖片" (當然模型本身要支援),則還需要下載 mmproj-model-f16.gguf
,它是用來把圖片轉換成 LLM 能理解的格式。
建個資料夾 (以下範例是命名 model
),將模型放進去。
確認是否有使用 GPU
輸入指令列出可用設備清單:
|
|
它的輸出會類似這樣:
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init: found 1 CUDA devices:
Device 0: NVIDIA RTX A6000, compute capability 8.6, VMM: yes
load_backend: loaded CUDA backend from D:\llama.cpp\llama-b5873-bin-win-cuda-12.4-x64\ggml-cuda.dll
load_backend: loaded RPC backend from D:\llama.cpp\llama-b5873-bin-win-cuda-12.4-x64\ggml-rpc.dll
load_backend: loaded CPU backend from D:\llama.cpp\llama-b5873-bin-win-cuda-12.4-x64\ggml-cpu-sapphirerapids.dll
Available devices:
CUDA0: NVIDIA RTX A6000 (49139 MiB, 47545 MiB free)
如果在 Available devices 看不到 GPU 的話,那就代表 llama.cpp 沒有成功讀取到電腦裡的 GPU,跳至下章節「 解決辦法 」。
執行指令:
|
|
後方加上 -ngl 999
(-ngl N
, --n-gpu-layers N
) 可將部分層級的運算任務轉移至 GPU 進行,通常可以提升效能。
我是使用 llama-server
運行,瀏覽器開啟 http://127.0.0.1:8080
,跟它對話,看看在生成時,GPU 有沒有運作。
解決辦法
我遇到的情況是在 llama-server --list-devices
就沒有出現我的 GPU 裝置了,可以依照以下步驟確認。
- 確認顯示卡驅動的 CUDA 版本
輸入 nvidia-smi
指令,確認 CUDA 版本,範例輸出如下:
Thu Jul 12 10:07:20 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 553.50 Driver Version: 553.50 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA RTX A6000 WDDM | 00000000:47:00.0 Off | Off |
| 30% 32C P8 17W / 300W | 7958MiB / 49140MiB | 3% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
右上角顯示 CUDA Version: 12.4
,如果版本太舊,請去 NVIDIA 官方驅動下載頁 選擇對應的 GPU 並下載安裝,如有需要,安裝後可重開機。
試試 llama-server --list-devices
可否正常讀到 GPU。
- 下載
cudart-llama-bin-win-cuda-12.4-x64.zip
會到前面說的 llama.cpp GitHub 的 Releases 頁面
,找到 cudart-llama-bin-win-cuda-12.4-x64.zip
並下載,將其解壓縮後,把裡面的檔案全部複製到 llama-b5873-bin-win-cuda-12.4-x64
資料夾中。
(壓縮檔裡面應該會有 cublas64_12.dll
、cublasLt64_12.dll
、cudart64_12.dll
)
試試 llama-server --list-devices
可否正常讀到 GPU。
- 安裝 CUDA Toolkit
如果使用上一步的 cudart-llama-bin-win-cuda-12.4-x64.zip
,還是無法讓 llama.cpp 讀到 GPU 的話,那就安裝 CUDA Toolkit 試試,檔案比較大 (大概 3 GB 多)。
再試試 llama-server --list-devices
可否正常讀到 GPU。
- 還是不行的話,那就問 ChatGPT 看看吧……
結語
LLM 在有無 GPU 的環境,inference (推論) 速度還是差異很大的。
這次我把我解決 llama.cpp 無法連接 GPU 的解決步驟記錄下來,希望有幫助到各位~
如果對於 生成式 AI 有興趣的讀者,記得追蹤『 IT空間 』FB 粉專,才不會錯過最新的發文通知呦~🔔
人生總會有揮棒落空的時候,這球過了沒關係,再看下一球就好!
—— 林智勝 (台灣棒球選手)
🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~