自定义spaCy NER模型无法调用GPU问题求助
问题:spaCy调用GPU提示CuPy未安装但实际已安装
环境信息
- CUDA版本:
ubuntu@:~$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Thu_Nov_18_09:45:30_PST_2021 Cuda compilation tools, release 11.5, V11.5.119 Build cuda_11.5.r11.5/compiler.30672275_0
- CuPy安装情况:
通过pip install cupy-cuda12x安装,版本信息:
ubuntu@:~$ pip show cupy-cuda12x Name: cupy-cuda12x Version: 13.1.0 Summary: CuPy: NumPy & SciPy for GPU Home-page: https://cupy.dev/ Author: Seiya Tokui Author-email: tokui@preferred.jp License: MIT License Location: /usr/local/lib/python3.10/dist-packages Requires: fastrlock, numpy Required-by: cucim-cu12, cudf-cu12, cugraph-cu12, cuml-cu12, cuproj-cu12, cuxfilter-cu12, dask-cudf-cu12
错误日志
ValueError Traceback (most recent call last) Cell In[13], line 7 4 import spacy 5 from spacy.tokens import DocBin ----> 7 spacy.require_gpu() 9 #nlp = spacy.blank("en") # load a new spacy model 10 nlp = spacy.load("en_core_web_sm") # load other spacy model File ~/.local/lib/python3.10/site-packages/thinc/util.py:230, in require_gpu(gpu_id) 228 raise ValueError("Cannot use GPU, PyTorch is not installed") 229 elif platform.system() != "Darwin" and not has_cupy: --> 230 raise ValueError("Cannot use GPU, CuPy is not installed") 231 elif not has_gpu: 232 raise ValueError("No GPU devices detected") ValueError: Cannot use GPU, CuPy is not installed
已尝试操作
先后安装过cupy-cuda11x和cupy-cuda12x版本,问题依旧。
解决建议
检查Python环境一致性:
在运行spaCy的环境中执行pip show cupy-cuda12x,确认包是否存在。如果找不到,说明当前运行环境和安装CuPy的环境不匹配,需在当前环境重新安装对应版本CuPy。例如Jupyter Notebook可能存在内核环境与系统默认Python环境不一致的情况,需切换到正确内核。匹配CUDA与CuPy版本:
当前CUDA版本为11.5,安装的cupy-cuda12x对应CUDA 12.x,版本不匹配会导致CuPy无法加载。建议安装适配CUDA 11.5的CuPy版本,比如cupy-cuda115==12.3.0(CuPy 13.x已不再支持CUDA 11.5),执行命令:pip install cupy-cuda115==12.3.0验证CuPy可正常导入:
在运行spaCy的环境中执行import cupy,若报错则说明CuPy本身安装有问题:- 若提示CUDA库找不到,检查
LD_LIBRARY_PATH是否包含/usr/local/cuda-11.5/lib64,可临时执行export LD_LIBRARY_PATH=/usr/local/cuda-11.5/lib64:$LD_LIBRARY_PATH后再尝试导入。
- 若提示CUDA库找不到,检查
检查spaCy与Thinc版本兼容性:
更新spaCy到最新稳定版:pip install -U spacy,确保其依赖的Thinc版本与CuPy兼容。尝试软加载GPU:
用spacy.prefer_gpu()替代spacy.require_gpu(),该函数不会强制报错,优先使用GPU,失败则自动回退到CPU,可通过返回值判断是否加载成功:import spacy print(spacy.prefer_gpu()) # 返回True表示GPU加载成功,False表示失败
内容的提问来源于stack exchange,提问作者Daaku-C5
相关产品推荐
相关产品推荐

