docker - 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()
给出:
[]
解决方案
尝试安装另一个图像,我也遇到了自定义图像的问题,所以我直接使用了 nvidia 图像:
docker pull nvcr.io/nvidia/tensorflow:19.08-py3
还有其他版本,你可以在这里查看
推荐阅读
- r - 如何用四条线绘制图形?
- swift - 聆听环境变化
- bluetooth - 氟化物蓝牙堆栈的文档
- python - GridSearch 中的最佳参数
- xslt-1.0 - 使用 FOP 将文件转换为 HTML 到 PDF 时背景颜色不起作用
- javascript - 使用 Angular 在 NgShoppingCart 中重新加载页面后,localStorage 中的项目被删除
- oracle-apex - 如何根据其他日期字段预填充日期字段?
- ruby-on-rails - 如何解决 ruby on rails 中的端口问题。端口在 3000 上不起作用,我无法选择不同的端口
- python - 使用数据库 postgresql 交付 python 程序
- javascript - 加载 Javascript(在后台)而不重新加载页面