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.models.embeddings 中没有名为“embeddings”的模块