首页 > 解决方案 > jupyter notebook 在远程服务器上的 docker 中运行:keras 不使用 gpu

问题描述

我正在设置在远程服务器上运行的 jupyter 笔记本,但我的代码似乎没有使用 GPU。看起来 tensorflow 正在识别 GPU,但 Keras 不知何故错过了它。我的设置过程中是否存在导致此问题的原因?

我通过 github 说明安装了 nvidia docker:

# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker 

我正在 ssh'ing 到我的服务器:

ssh me@serverstuff

然后在服务器上运行:

docker run -it -p 9999:9999 --name mycontainer -v /mydata:/mycontainer/mydata ufoym/deepo bash
jupyter notebook --ip 0.0.0.0 --port 9999 --no-browser --allow-root

然后在我的桌面上打开一个新的命令提示符并运行:

ssh -N -f -L localhost:9999:serverstuff:9999 me@serverstuff

然后登录,并在我的浏览器中打开 localhost:9999,并使用提供的令牌成功登录。

但是当我在我的笔记本中运行深度学习训练时,它的速度似乎没有使用 GPU。

!nvidia-smi

给出:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.86       Driver Version: 430.86       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 730     WDDM  | 00000000:01:00.0 N/A |                  N/A |
| 25%   41C    P8    N/A /  N/A |    551MiB /  2048MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0                    Not Supported                                       |
+-----------------------------------------------------------------------------+

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

给出:

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 7106107654095923441
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 13064397814134284140
physical_device_desc: "device: XLA_CPU device"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 14665046342845873047
physical_device_desc: "device: XLA_GPU device"
]

from keras import backend as K
K.tensorflow_backend._get_available_gpus()

给出:

[]

标签: dockertensorflowkerasjupyter-notebookgpu

解决方案


尝试安装另一个图像,我也遇到了自定义图像的问题,所以我直接使用了 nvidia 图像:

docker pull nvcr.io/nvidia/tensorflow:19.08-py3

还有其他版本,你可以在这里查看


推荐阅读