TensorFlow-GPU仅调用CPU运行问题求助
解决TensorFlow-GPU未调用GPU的问题
先给你个最直接的验证方法:先跑一段极简代码确认TensorFlow到底有没有识别到你的GPU——这是排查的核心起点:
import tensorflow as tf print(tf.__version__) # TensorFlow 1.x版本用这句 print("GPU 是否可用: ", tf.test.is_gpu_available()) # 如果是TensorFlow 2.x版本,替换成下面这句 # print("GPU 是否可用: ", tf.config.list_physical_devices('GPU'))
如果输出显示GPU不可用,咱们一步步排查:
1. 先确认版本兼容性
CUDA 9.0对应的TensorFlow-GPU版本范围是1.10.x ~ 1.14.x,要是你装的TF版本太高(比如2.x),根本没法和CUDA9.0兼容。先查当前TF版本:
pip list | grep tensorflow
如果版本不对,卸载重装适配版本:
pip uninstall tensorflow-gpu pip install tensorflow-gpu==1.13.1 # 这个版本和CUDA9.0适配性拉满
2. 检查CUDA和cuDNN的环境配置
- 环境变量必须到位:
- Windows:把
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin和C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp添加到系统PATH里 - Linux:在
~/.bashrc里追加:
然后执行export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}source ~/.bashrc让配置生效
- Windows:把
- cuDNN文件要放对位置:
把cuDNN解压后的bin、include、lib文件夹里的文件,分别复制到CUDA 9.0对应的目录下(Windows是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0,Linux是/usr/local/cuda-9.0)
3. 验证显卡驱动版本
CUDA 9.0要求NVIDIA驱动版本至少是384.x(Windows)或384.81(Linux)。用nvidia-smi命令查看当前驱动版本,要是版本太低,去NVIDIA官网下载对应驱动安装就行。
4. 检查代码是否误禁用GPU
有时候代码里会不小心加了强制用CPU的设置,比如:
import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # 这句直接禁用GPU
如果有就删掉或者注释掉。也可以在代码开头手动开启GPU内存动态分配,避免显存占用问题:
import tensorflow as tf gpu_devices = tf.config.experimental.list_physical_devices('GPU') if gpu_devices: tf.config.experimental.set_memory_growth(gpu_devices[0], True)
5. 排查GPU是否被占用
用nvidia-smi命令看看有没有其他进程在占用GPU资源,要是有的话,关掉这些进程再重新运行你的检测脚本。
等你完成上面的步骤,再跑之前的GPU验证代码,显示可用后再运行object-detection_tutorial.py,应该就能正常调用GPU加速了。
内容的提问来源于stack exchange,提问作者MAGICK




