Tensorflow会自动检测GPU,还是需要手动指定呢?

3
我有一段使用Tensorflow编写的代码,我在CPU上运行它时没有问题。我现在要将代码转移到一个新机器上,这台机器有GPU,但是我在新机器上运行代码时,训练速度并没有像预期的那样提高(时间几乎相同)。我了解到Tensorflow会自动检测GPU并在其上运行操作 (https://www.quora.com/How-do-I-automatically-put-all-my-computation-in-a-GPU-in-TensorFlow) & (https://www.tensorflow.org/tutorials/using_gpu)。我是否需要更改代码以使其手动在GPU上运行操作(目前只有一个GPU)?手动更改会带来什么好处呢?谢谢。

除了@Nicolas的答案之外,通过添加sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)),您可以检查每个节点关联的设备。 - Pietro Tortella
2个回答

2
如果安装了TensorFlow的GPU版本,并且您没有将所有张量分配给CPU,那么其中一些应该分配给GPU。
要查找TensorFlow可用的设备(CPU、GPU),可以使用以下命令:
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

关于性能问题,这是一个相当广泛的主题,它真正取决于您的模型、数据等等。在这里是一些关于TensorFlow性能的广泛评论。 这里


是的,安装了GPU版本。但是如果我手动分配会有什么好处吗? - Wanderer
你可以获得或者不获得。这真的取决于你的模型、操作等。 - pfm

1

你可以尝试检查操作是在哪个设备上执行的,是CPU还是GPU

tf.debugging.set_log_device_placement(True)

a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)

检查操作日志,它会指定tensorflow正在使用哪个设备来执行这些指令。

您还可以尝试查看您的tensorflow软件包可以访问的所有可用物理设备。

tf.config.list_physical_devices()

这将显示tensorflow可以访问的所有设备列表。如果它只返回一个仅包含CPU的项目,则表示您的tensorflow软件包无法访问GPU。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接