1

我正在使用预构建的 AI Platform Jupyter Notebook 实例来训练具有单个 Tesla K80 卡的模型。问题是我不相信该模型实际上是在 GPU 上训练的。

nvidia-smi在训练期间返回以下内容:

未找到正在运行的进程

不是“未找到正在运行的进程”,而是“不稳定的 GPU 使用率”是 100%。好像有什么奇怪的...

...而且训练速度非常慢。

几天前,我遇到了每次笔记本运行后 GPU 都没有释放的问题。发生这种情况时,我会收到 OOM(内存不足错误)。这需要我每次进入控制台,找到GPU运行进程PID并在重新运行笔记本之前使用kill -9。但是,今天,我根本无法让 GPU 运行?它从不显示正在运行的进程。

我已经尝试了 2 个不同的 GCP AI Platform Notebook 实例(两个可用的 tensorflow 版本选项),但都没有成功。我是否缺少这些“预建”实例的东西。

预建 AI 平台笔记本部分

澄清一下,我没有构建自己的实例,然后安装对 Jupyter 笔记本的访问权限。相反,我使用了 AI Platform 子菜单下的内置笔记本实例选项。

我是否仍需要在某处配置设置或安装库以继续使用/重置我选择的 GPU?我的印象是虚拟机已经加载了 Nvidia 堆栈,应该是即插即用的 GPU。

想法?

编辑:这是所要求的问题的完整视频-> https://www.youtube.com/watch?v=N5Zx_ZrrtKE&feature=youtu.be

4

1 回答 1

3

一般来说,您会想尝试使用可以重现错误的尽可能少的代码来调试此类问题。这消除了您所看到的问题的许多可能原因。

在这种情况下,您可以通过运行以下代码(从TensorFlow 2.0 GPU 指令复制)来检查您的 GPU 是否正在使用:

import tensorflow as tf
print("GPU Available: ", tf.test.is_gpu_available())

tf.debugging.set_log_device_placement(True)

# Create some tensors
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)

print(c)

在同一个 TF 2.0 Notebook 上运行它会给我输出:

GPU Available:  True
Executing op MatMul in device /job:localhost/replica:0/task:0/device:GPU:0
tf.Tensor(
[[22. 28.]
 [49. 64.]], shape=(2, 2), dtype=float32)

那里表明它正在使用GPU

同样,如果您需要更多证据,运行 nvidia-smi 会给出输出:

jupyter@tf2:~$ nvidia-smi
Tue Jul 30 00:59:58 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104      Driver Version: 410.104      CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| 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           Off  | 00000000:00:04.0 Off |                    0 |
| N/A   36C    P0    58W / 149W |  10900MiB / 11441MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      7852      C   /usr/bin/python3                           10887MiB |
+-----------------------------------------------------------------------------+

那么为什么你的代码不使用 GPU 呢?您正在使用其他人编写的库,可能是出于教程目的。这些库函数很可能正在做一些导致使用 CPU 而不是 GPU 的事情。

您需要直接调试该代码。

于 2019-07-30T01:02:11.517 回答