TensorFlow 没有使用 GPU

Posted

技术标签:

【中文标题】TensorFlow 没有使用 GPU【英文标题】:TensorFlow is not using GPU 【发布时间】:2017-12-13 00:07:44 【问题描述】:

我使用 AMI 建立了一台 AWS 深度学习机器。现在我正在尝试从 TensorFlow 运行简单的入门示例

# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

但我的机器似乎没有使用我的 GPU。

MatMul_2: (MatMul): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830238: 我 张量流/核心/common_runtime/simple_placer.cc:847] MatMul_2: (MatMul)/job:localhost/replica:0/task:0/cpu:0 MatMul_1: (MatMul): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830259: 我 张量流/核心/common_runtime/simple_placer.cc:847] MatMul_1: (MatMul)/job:localhost/replica:0/task:0/cpu:0 MatMul: (MatMul): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830271: 我 张量流/核心/common_runtime/simple_placer.cc:847] MatMul: (MatMul)/job:localhost/replica:0/task:0/cpu:0 b_2: (Const): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830283: 我 张量流/核心/common_runtime/simple_placer.cc:847] b_2: (常量)/job:localhost/replica:0/task:0/cpu:0 a_2: (常量): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830312: 我 张量流/核心/common_runtime/simple_placer.cc:847] a_2: (常量)/job:localhost/replica:0/task:0/cpu:0 b_1: (常量): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830324: 我 张量流/核心/common_runtime/simple_placer.cc:847] b_1: (常量)/job:localhost/replica:0/task:0/cpu:0 a_1: (常量): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830337: 我 张量流/核心/common_runtime/simple_placer.cc:847] a_1: (常量)/job:localhost/replica:0/task:0/cpu:0 b: (常量): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830348: 我 张量流/核心/common_runtime/simple_placer.cc:847] b: (常量)/job:localhost/replica:0/task:0/cpu:0 a: (常量): /job:localhost/replica:0/task:0/cpu:0 2017-07-09 00:51:03.830358: 我 tensorflow/core/common_runtime/simple_placer.cc:847] 一个: (const)/job:localhost/replica:0/task:0/cpu:0

如果我尝试使用 tf.device('/gpu:0'): 手动指定 GPU,则会收到以下错误:

InvalidArgumentError:无法为操作“MatMul_3”分配设备: 操作已明确分配给 /device:GPU:0 但可用 设备是 [ /job:localhost/replica:0/task:0/cpu:0 ]。确保 设备规范是指有效的设备。 [[节点:MatMul_3 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device="/device:GPU:0"](a_3, b_3)]]

我对 AMI 所做的唯一更改是将 TensorFlow 更新到最新版本

这是我在运行时看到的watch nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           On   | 0000:00:1E.0     Off |                    0 |
| N/A   44C    P8    27W / 149W |      0MiB / 11439MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

【问题讨论】:

你试过了吗? github.com/tensorflow/serving/issues/403 您能提供更多信息吗?您使用的是哪个 AMI? 感谢您的帮助。我决定使用来自亚马逊 (aws.amazon.com/marketplace/pp/B01M0AXXQB) 的最新可用 AMI 重新启动,它可以正常工作。不知道之前出了什么问题 【参考方案1】:

1.检查您的实例,您是否选择 GPU? 使用“watch nvidia-smi”查看 GPU 信息。

2.检查您的 AMI 和 tensorflow 版本,可能它不支持 GPU 或配置错误。

我使用这个 AMI:深度学习 AMI Amazon Linux (ami-296e7850)。

【讨论】:

谢谢,我在运行 watch nvidia-smi 的输出的帖子中添加了一个编辑。我使用与您相同的版本:aws.amazon.com/marketplace/pp/B06VSPXKDX,但适用于 Ubuntu。之后我更新到 TensorFlow 1.2

以上是关于TensorFlow 没有使用 GPU的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 3.6,找不到满足要求 tensorflow 的版本(来自版本:)没有为 tensorflow 找到匹配的分布

模块“tensorflow”没有属性“GPUOptions”

为啥带有 TensorFlow 的 Keras 没有使用所有 GPU 内存

在没有 Keras 的情况下使用 Tensorflow 2.0 和急切执行

TensorFlow,“‘模块’对象没有属性‘占位符’”

Tensorflow - tensorflow.models.embeddings 中没有名为“embeddings”的模块