llama-cpp-python无法调用NVIDIA GPU CUDA:问题排查求助
以下是针对你的场景(Ubuntu20.04 + GTX1060 6GB,同一conda环境下oobabooga能用GPU,llama-cpp-python仅CPU运行)的具体排查和解决步骤:
1. 检查llama-cpp-python的CUDA编译状态
oobabooga内置的llama.cpp绑定是预先编译好CUDA支持的,而通过pip默认安装的llama-cpp-python通常是CPU-only版本。需要重新编译安装带CUDA支持的版本:
激活你的conda环境后执行:
CMAKE_ARGS="-DLLAMA_CUDA=on" pip install llama-cpp-python --force-reinstall --upgrade
确保系统已安装适配GTX1060的CUDA Toolkit(推荐11.8版本,兼容Ubuntu20.04和GTX10系列显卡)。
2. 替换为GGUF格式的模型文件
你当前使用的ggml-model-q4_0.bin是旧版GGML格式,llama-cpp-python对该格式的GPU层卸载支持有限,建议更换为GGUF格式的模型。下载对应Llama2-7B-Chat的Q4_0 GGUF模型后,修改代码中的model_path路径。
3. 修复Jupyter Notebook的CUDA环境变量
Jupyter可能未正确继承系统的CUDA环境变量,导致llama-cpp-python无法检测到GPU。在Notebook代码开头添加以下环境变量配置:
import os # 替换为你的CUDA实际安装路径,通常是/usr/local/cuda-xx.x os.environ["CUDA_HOME"] = "/usr/local/cuda-11.8" os.environ["PATH"] += os.pathsep + os.path.join(os.environ["CUDA_HOME"], "bin") os.environ["LD_LIBRARY_PATH"] += os.pathsep + os.path.join(os.environ["CUDA_HOME"], "lib64")
添加后重启Notebook内核,再运行推理代码。
4. 验证GPU检测状态
运行代码时查看verbose=True输出的日志,如果没有出现类似ggml_cuda_init: found CUDA device 0: NVIDIA GeForce GTX 1060 6GB的信息,说明CUDA未被正确检测,需回到前两步排查编译和环境变量问题。另外确认n_gpu_layers=32参数在日志中被正确识别(7B模型总层数为32,该设置是合理的全卸载配置)。
内容的提问来源于stack exchange,提问作者imbr

