Tensorflow 2.3不使用GPU

2024-06-16 14:59:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一台有八个GPU的机器,但Tensorflow在训练时似乎不使用它们

当地环境

以下是有关环境的一些信息:

  • tensorflow-gpu2.3.1已安装
  • nvidia-smi命令报告:NVIDIA-SMI 440.82,驱动程序版本:440.82,CUDA版本:10.2
  • nvcc --version命令报告:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

症状

当我使用大量数据运行model.fit()时,它似乎根本不使用GPUnvidia-smi显示所有GPU的使用率为0%,CPU使用率范围为400-700%(这是一台16核机器)

我怀疑我的模型有问题(可能有些指令无法编译成CUDA C或类似的东西),所以我在Google Colab GPU实例上测试了它。每一步需要10-15毫秒(每个历元13秒),而在我的机器上每一步需要100毫秒以上。这让我相信,我的模型正在使用谷歌Colab上的GPU进行训练

有趣的因素

下面的代码

import tensorflow as tf
tf.config.list_physical_devices()

产生以下结果:

[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
 PhysicalDevice(name='/physical_device:XLA_CPU:0', device_type='XLA_CPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:0', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:1', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:2', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:3', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:4', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:5', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:6', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:7', device_type='XLA_GPU')]

但是这个

tf.test.gpu_device_name()

返回一个空字符串

然而,在Google Colab上

>>> tf.config.list_physical_devices()
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
 PhysicalDevice(name='/physical_device:XLA_CPU:0', device_type='XLA_CPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:0', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
>>> tf.test.gpu_device_name()
'/device:GPU:0'

在这一点上,我发现我的机器和Google Colab之间唯一有意义的区别是,我的机器有XLA_GPU个设备,而Google Colab有GPU。我不完全确定这是否与我的问题有关。有没有人遇到过类似的问题


Tags: name机器gpu环境devicetftensorflowtype