如何解决Windows 11上llama-cpp-python GPU支持无法启用的问题
问题描述
在Windows 11上尝试安装带GPU支持的llama-cpp-python,已安装Visual Studio工具包、CMake、Ninja、CUDA工具包,参考过相关教程,但启动LLM服务器时始终不调用GPU。使用RTX 3090显卡,Llama 3 13B Instruct Q8模型可完全装入显存,启动代码如下:
import subprocess import sys import os MODEL_PATH = os.path.join( os.path.dirname(__file__), "LLM", "Llama-3-13B-Instruct-v0.1.Q8_0.gguf" ) HOST = "0.0.0.0" PORT = "8000" cmd = [ sys.executable, "-m", "llama_cpp.server", "--model", MODEL_PATH, "--host", HOST, "--port", PORT ] subprocess.run(cmd)
启动日志未检测到CUDA设备支持,未启用GPU加速。
解决方案
1. 重新编译安装带CUDA支持的llama-cpp-python
先彻底卸载现有版本,再通过环境变量强制编译CUDA支持:
命令提示符(CMD)操作:
pip uninstall -y llama-cpp-python set CMAKE_ARGS=-DLLAMA_CUDA=ON set FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --no-cache-dir
PowerShell操作:
pip uninstall -y llama-cpp-python $env:CMAKE_ARGS="-DLLAMA_CUDA=ON" $env:FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --no-cache-dir
建议使用Visual Studio开发者命令提示符或CUDA命令提示符执行,确保编译环境依赖完整。
2. 修改启动代码,强制启用GPU层
在启动命令中添加--n-gpu-layers参数,指定将尽可能多的模型层加载到GPU(99表示全部可用层):
import subprocess import sys import os MODEL_PATH = os.path.join( os.path.dirname(__file__), "LLM", "Llama-3-13B-Instruct-v0.1.Q8_0.gguf" ) HOST = "0.0.0.0" PORT = "8000" cmd = [ sys.executable, "-m", "llama_cpp.server", "--model", MODEL_PATH, "--host", HOST, "--port", PORT, "--n-gpu-layers", "99" # 新增参数,强制加载模型到GPU ] subprocess.run(cmd)
3. 验证CUDA环境正确性
- 打开命令行执行
nvcc --version,确认CUDA编译器正常运行,版本与RTX3090兼容(推荐CUDA 12.x) - 检查系统环境变量:
CUDA_PATH需指向CUDA安装目录,PATH中需包含%CUDA_PATH%\bin - 关闭其他占用GPU显存的程序(如游戏、其他AI模型),避免显存不足
4. 验证GPU是否启用
启动服务器后,查看日志中是否出现以下内容:
ggml_init_cublas: found 1 CUDA device(s):llama_model_load: using CUDA for GPU acceleration
同时打开任务管理器→性能→GPU,查看显存占用是否显著上升(Q8 13B模型约占13GB显存)。
内容的提问来源于stack exchange,提问作者MiszS




