You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GPU上运行Keras?TensorFlow无法识别GPU问题排查

问题成因
  • nvidia-smi能识别GPU仅代表硬件、NVIDIA内核驱动安装正常,Keras/TensorFlow检测不到GPU本质是GPU运行依赖栈异常,和代码逻辑无关:
    • 你看到的tf.keras code in this scope will run on GPU提示没有任何参考价值,这是tf.device上下文管理器的固定输出,它不会在进入代码块时实际校验GPU是否存在、是否可用,哪怕机器没有GPU只要写了这段上下文就会打印该提示。
    • 当TensorFlow无法加载GPU运行依赖时,会静默回退到CPU模式,不会抛出显性报错,因此你所有设备检测接口都只返回CPU设备,GPU上也看不到你的任务进程。
  • 常见触发场景:
    • 当前Python环境安装的是CPU版本的TensorFlow,本身不包含GPU计算组件
    • CUDA Toolkit、cuDNN版本和你安装的TensorFlow版本要求不匹配,TensorFlow启动时加载GPU动态库失败
    • 服务器存在多套Python/CUDA环境,你运行代码的虚拟环境没有关联到正确的CUDA路径
    • 如果你用Docker容器跑任务,启动容器时没有加GPU挂载参数,容器内部无法访问物理GPU
    • 系统环境变量未正确配置,TensorFlow找不到CUDA库的存储位置
排查与解决步骤
  1. 先确认TensorFlow安装包类型
    执行以下命令查看当前环境的TensorFlow包信息:
    pip show tensorflow
    
    如果是CPU版本安装包,直接卸载后安装对应GPU版本即可;注意TensorFlow 2.11及以后的Windows原生版本已取消GPU支持,Linux/macOS(ARM)版本不受影响。
  2. 对齐依赖版本
    先通过nvidia-smi查看右上角的CUDA驱动版本,该版本必须大于等于你安装的CUDA Toolkit版本;再对照你所用TensorFlow版本官方要求的CUDA、cuDNN版本号做对齐,版本不匹配时要么更换TensorFlow版本,要么重装对应版本的CUDA、cuDNN。

    推荐在conda虚拟环境内直接安装对应版本的cudatoolkit和cudnn包,不需要全局安装CUDA,能避免多环境冲突。

  3. 验证GPU识别状态
    依赖配置完成后,不要用tf.device的提示判断状态,直接运行以下代码做校验:
    import tensorflow as tf
    print("TensorFlow版本:", tf.__version__)
    print("可用GPU设备:", tf.config.list_physical_devices('GPU'))
    
    如果输出中包含physical_device:GPU:0条目,说明GPU已经被TensorFlow正常识别。
  4. Keras单GPU运行正确方式
    只要TensorFlow能正常识别GPU,Keras默认会自动将模型训练、张量计算任务调度到GPU上执行,不需要手动用tf.device包裹代码。
    如果需要确认算子实际运行位置,可以开启设备placement日志:
    tf.debugging.set_log_device_placement(True)
    # 正常编写模型构建、model.fit()等逻辑即可,日志会打印每个算子的实际运行设备
    
    确实需要手动指定设备时,注意TensorFlow 2.x的GPU设备名格式为/GPU:0,设备名写错也会导致任务静默回退到CPU运行。

内容的提问来源于stack exchange,提问作者kkk5786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:48:50