【发布时间】:2020-07-01 14:40:07
【问题描述】:
我想使用 docker 19.03 及更高版本以获得 GPU 支持。我的系统中目前有 docker 19.03.12。我可以运行这个命令来检查 Nvidia 驱动程序是否正在运行:
docker run -it --rm --gpus all ubuntu nvidia-smi
Wed Jul 1 14:25:55 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.64 Driver Version: 430.64 CUDA Version: N/A |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 107... Off | 00000000:01:00.0 Off | N/A |
| 26% 54C P5 13W / 180W | 734MiB / 8119MiB | 39% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
另外,如果在本地运行,我的模块可以很好地支持 GPU。但是,如果我构建一个 docker 映像并尝试运行它,我会收到一条消息:
ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
我正在使用 cuda 9.0 和 tensorflow 1.12.0,但我可以切换到 cuda 10.0 和 tensorflow 1.15。
据我所知,问题是我可能使用的是以前的 dockerfile 版本,其命令与启用 docker GPU 的新版本(19.03 及更高版本)不兼容。
实际的命令如下:
FROM nvidia/cuda:9.0-base-ubuntu16.04
# Pick up some TF dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cuda-command-line-tools-9-0 \
cuda-cublas-9-0 \
cuda-cufft-9-0 \
cuda-curand-9-0 \
cuda-cusolver-9-0 \
cuda-cusparse-9-0 \
libcudnn7=7.0.5.15-1+cuda9.0 \
libnccl2=2.2.13-1+cuda9.0 \
libfreetype6-dev \
libhdf5-serial-dev \
libpng12-dev \
libzmq3-dev \
pkg-config \
software-properties-common \
unzip \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN apt-get update && \
apt-get install nvinfer-runtime-trt-repo-ubuntu1604-4.0.1-ga-cuda9.0 && \
apt-get update && \
apt-get install libnvinfer4=4.1.2-1+cuda9.0
我也找不到用于基本 GPU 使用的 docker 基础文件。
在this answer 中有一个公开libcuda.so.1 的提议,但在我的情况下它不起作用。
那么,有什么解决方法可以解决这个问题或调整一个基本的 dockerfile 吗?
我的系统是 Ubuntu 16.04。
编辑:
我刚刚注意到 docker 中的 nvidia-smi 不显示任何 cuda 版本:
CUDA Version: N/A
与本地运行的相反。所以,这可能意味着我猜出于某种原因在 docker 中没有加载 cuda。
【问题讨论】:
标签: docker tensorflow