TensorFlow是否在指定GPU运行?任务管理器与nvidia-smi显示不一致疑问
模型GPU运行位置及显示差异原因
模型实际运行的GPU
你的模型确实在GPU0上运行:
- 代码里通过
tf.device("/gpu:0")上下文管理器明确指定了GPU0,只要TensorFlow GPU版本配置正常,这个指定会生效; nvidia-smi是NVIDIA官方的GPU监控工具,能精准读取GPU硬件的CUDA计算任务状态,它显示GPU0在运行,就说明模型的训练任务确实在该GPU上执行。
任务管理器与nvidia-smi显示不一致的原因
- 监控对象不同:任务管理器的GPU使用率统计主要针对Windows系统的图形渲染负载(比如桌面界面、游戏画面渲染),对TensorFlow这类基于CUDA的计算任务识别能力弱,无法统计这类负载,所以显示“无活动”;
- 工具定位差异:
nvidia-smi专门用于监控GPU的所有计算状态,包括CUDA核心的运行情况,能准确捕捉到模型训练这类计算任务,因此显示结果更准确; - 统计周期不同:任务管理器的状态更新周期较长,可能存在延迟,而
nvidia-smi是实时查询GPU硬件状态,能即时反映当前的运行情况。
额外验证方法
可以在代码中添加设备日志输出,直接确认任务分配的设备:
import tensorflow as tf tf.debugging.set_log_device_placement(True)
运行后,训练过程中会打印每个操作对应的执行设备,能直观验证是否在GPU0上运行。
内容的提问来源于stack exchange,提问作者Hadar V
相关产品推荐
相关产品推荐

