使用Spacy 3.4.1训练NER模型时无法识别GPU的问题
解决Spacy 3.4.1训练NER模型时无法识别GPU的问题
针对你遇到的Spacy切换GPU模式后仍用CPU、添加--gpu-id 0报错ValueError: No GPU devices detected,但nvidia-smi和torch.cuda正常的问题,可按以下步骤排查解决:
1. 安装匹配CUDA版本的Spacy依赖
Spacy基础版本默认不带CUDA支持,需安装对应CUDA11.6的扩展包:
pip install spacy[cuda116]
注意确保在当前训练使用的Python虚拟环境中执行该命令,避免环境冲突。
2. 验证Spacy自身的GPU检测能力
运行以下Python代码,确认Spacy能否识别GPU:
import spacy print(spacy.require_gpu())
- 若返回
True,说明Spacy已正确识别GPU; - 若返回
False,回到步骤1重新安装CUDA扩展包,或检查虚拟环境是否激活。
3. 调整配置文件的GPU设置
检查Quickstart生成的config.cfg文件:
- 找到
[system]段,确保gpu_id设置为0(而非-1,-1代表强制使用CPU); - 若不想修改配置文件,可在训练命令中通过
--override参数临时覆盖:python -m spacy train config.cfg --output ./output --gpu-id 0 --override system.gpu_id=0
4. 确认PyTorch与CUDA版本兼容
Spacy依赖PyTorch实现GPU加速,需确保PyTorch版本支持CUDA11.6:
运行以下代码查看PyTorch的CUDA版本:
import torch print(torch.version.cuda)
若输出不是11.6,安装匹配版本的PyTorch:
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
5. 检查环境变量设置
执行以下命令确保GPU可见性:
export CUDA_VISIBLE_DEVICES=0
之后再运行Spacy训练命令,避免环境变量导致的GPU不可见问题。
内容的提问来源于stack exchange,提问作者steadynappin
相关产品推荐
相关产品推荐

