CentOS7服务器运行TensorFlow人脸识别脚本报NVIDIA驱动不存在问题咨询
问题解决步骤
你之前的两个配置无效的核心原因:
- 环境变量
CUDA_VISIBLE_DEVICES设置时机错误:必须在导入TensorFlow及其相关依赖(比如keras)之前设置,等TensorFlow已经完成模块初始化后再设置不会生效 - 软设备放置配置写法错误:
config.set_soft_device_placement是可调用方法,不是可赋值属性,直接赋值=True不会触发配置生效
步骤1:确认服务器硬件情况
在服务器终端执行命令:lspci | grep -i nvidia
- 如果没有任何输出,说明服务器没有配备NVIDIA显卡,不需要做任何GPU相关配置,直接强制TensorFlow运行在CPU模式即可
- 如果有输出说明存在NVIDIA显卡,你需要安装和当前TensorFlow版本匹配的NVIDIA驱动、CUDA、cuDNN组件即可解决报错
步骤2:修正脚本配置
调整你的脚本开头代码顺序和写法,修改后开头部分如下:
import os # 必须放在导入tensorflow相关模块之前 os.environ["CUDA_VISIBLE_DEVICES"] = "-1" import face_recognition as fr from tensorflow.keras.models import model_from_json import numpy as np from PIL import Image import base64 import io import json import cv2 from tensorflow import config # 正确调用方法,而不是直接赋值 config.set_soft_device_placement(True)
步骤3:适配PHP exec调用场景
因为PHP调用exec执行命令时,不会完全继承当前用户的shell环境变量,建议直接在执行命令中注入环境变量,写法参考:
// 注意替换成你自己的脚本路径和传入参数 exec('CUDA_VISIBLE_DEVICES=-1 python3 /www/your_script_path/face_recognize.py ' . $base64_img_param, $output, $return_var);
步骤4:(可选)从根源避免GPU检测
如果确认服务器没有NVIDIA显卡,可以直接卸载GPU版本TensorFlow,安装CPU版本,彻底消除GPU相关检测逻辑:
pip uninstall -y tensorflow tensorflow-gpu # 注意安装和你训练模型时兼容的版本,示例为2.10.0版本,可自行修改 pip install tensorflow-cpu==2.10.0
验证方法
先在服务器终端手动执行以下命令测试脚本是否正常:
export CUDA_VISIBLE_DEVICES=-1 python3 /你的脚本路径/face_recognize.py 测试参数
如果手动执行无报错,再测试PHP调用即可。
内容的提问来源于stack exchange,提问作者عبدالرحمن ايمن
相关产品推荐
相关产品推荐

