Azure Databricks中spaCy执行require_gpu()提示GPU不可用
Azure Databricks 环境spaCy调用GPU失败(torch可识别GPU)排查方案
核心原因
spaCy的GPU加速依赖CuPy作为计算后端,和PyTorch自带的独立CUDA运行时完全隔离,PyTorch能识别GPU仅代表PyTorch自身的CUDA绑定正常,不代表系统全局CUDA环境、spaCy依赖的CuPy版本匹配可用。
排查&解决步骤
- 第一步:确认集群CUDA版本
在notebook中执行nvidia-smi,查看输出右上角标注的CUDA大版本(如11.3、11.8、12.1),后续安装依赖必须和该版本严格对齐。 - 第二步:清理冲突依赖
执行以下命令卸载可能存在冲突的旧版本包:
注意不要同时安装多个不同CUDA版本的CuPy包,会直接导致GPU初始化失败。pip uninstall -y spacy cupy cupy-cuda11x cupy-cuda12x thinc - 第三步:安装版本匹配的依赖
根据第一步查到的CUDA版本,安装对应后缀的spaCy GPU组件,不要直接执行无版本指定的pip install spacy[cuda]:- CUDA 11.x系列:执行
pip install spacy[cuda11x]==3.7.4(3.7.x是对Python 3.9兼容性最好的稳定版本,过高版本存在Python3.9适配问题) - CUDA 12.x系列:执行
pip install spacy[cuda12x]==3.7.4
- CUDA 11.x系列:执行
- 第四步:修复Databricks环境变量异常
Azure Databricks部分GPU运行时会默认错误设置CUDA_VISIBLE_DEVICES环境变量,PyTorch初始化时会自动重置该变量因此不受影响,但CuPy会直接读取该变量枚举设备。在调用spaCy GPU接口前先执行以下代码手动指定设备:import os os.environ["CUDA_VISIBLE_DEVICES"] = "0"
验证方法
执行以下代码,返回True即代表GPU可被spaCy正常调用:
import spacy print(spacy.require_gpu())
如果仍报错,可执行import cupy; print(cupy.cuda.runtime.getDeviceCount())排查CuPy层问题,若返回0则代表CuPy和CUDA版本仍不匹配,重新安装对应版本的CuPy即可。
内容的提问来源于stack exchange,提问作者Ajaykrishnan Selucca
相关产品推荐
相关产品推荐

