相关疑难解决方法(0)

Docker Run 可以访问 GPU,但 Docker Build 不能访问

我正在为 NVIDIA GPU 构建 DeepStream Docker 映像,如本链接中所述。

我安装了NVIDIA 容器工具包,原始 Dockerfile 可以运行,构建后我可以使用以下命令启动具有 GPU 支持的容器:

sudo docker run --runtime=nvidia --gpus all --name Test -it deepstream:dgpu
Run Code Online (Sandbox Code Playgroud)

问题是我想在docker build序列期间安装 PyTorch 并使用它。一旦 PyTorch 在构建序列中导入,Found no NVIDIA driver on your system就会出现错误:

#0 0.895 Traceback (most recent call last):
#0 0.895   File "./X.py", line 15, in <module>
#0 0.895     dummy_input = torch.randn([1, 3, 224, 224], device='cuda')
#0 0.895   File "/usr/local/lib/python3.8/dist-packages/torch/cuda/__init__.py", line 229, in _lazy_init
#0 0.895     torch._C._cuda_init()
#0 0.895 …
Run Code Online (Sandbox Code Playgroud)

gpu docker pytorch nvidia-docker

7
推荐指数
0
解决办法
1787
查看次数

使用 cuda 运行时构建 docker 镜像

我正在构建一个图像,同时需要测试 GPU 可用性。GPU 容器运行良好:

$ docker run --rm --runtime=nvidia nvidia/cuda:9.2-devel-ubuntu18.04 nvidia-smi
Wed Aug  7 07:53:25 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.54                 Driver Version: 396.54                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN X (Pascal)    Off  | 00000000:04:00.0 Off |                  N/A |
| 24%   43C    P8    17W / 250W |   2607MiB / 12196MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU …
Run Code Online (Sandbox Code Playgroud)

docker nvidia-docker

5
推荐指数
1
解决办法
1万
查看次数

Docker 让 Nvidia GPU 在 Docker 构建过程中可见

我想构建一个 docker 映像,在其中使用 pytorch 编译自定义内核。因此,我需要访问可用的 GPU,以便在 docker 构建过程中编译自定义内核。在主机上,一切都已设置,包括nvidia-container-runtimenvidia-docker、Nvidia-Drivers、Cuda 等。以下命令显示主机系统上的 docker 运行时信息:

$ docker info|grep -i runtime
 Runtimes: nvidia runc
 Default Runtime: runc
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,在我的例子中,docker 的默认运行时是runc. 我认为将默认运行时从 更改为runc可以nvidia解决此问题,如此处所述

建议的解决方案不适用于我的情况,因为:

  • 我无权更改我使用的系统上的默认运行时
  • 我无权更改该daemon.json文件

有没有办法在 Dockerfile 的构建过程中访问 GPU,以便为 CPU 和 GPU 编译自定义 pytorch 内核(在我的例子中是 DCNv2)?

这是我的 Dockerfile 的最小示例,用于重现此问题。在此图中,DCNv2 仅针对 CPU 进行编译,而不针对 GPU 进行编译。

FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata && \
    apt-get install -y --no-install-recommends …
Run Code Online (Sandbox Code Playgroud)

python-3.x docker pytorch nvidia-docker

5
推荐指数
0
解决办法
2520
查看次数

标签 统计

docker ×3

nvidia-docker ×3

pytorch ×2

gpu ×1

python-3.x ×1