标签: nvidia-docker

如何使用nvidia-docker正确运行OpenAI健身房并查看环境

所以我正在尝试在docker容器中运行OpenAI健身房,但它看起来像这样: 在此输入图像描述

注意pong窗口有一个奇怪的渲染问题,它重复的东西和颜色都关闭.这是太空入侵者:

在此输入图像描述

注意"不是编程问题"人们:解决方案涉及正确的bash脚本代码,以调用正确的API方法来正确渲染像素数组.此外,只有图形编程人员可能"识别渲染故障".

我的设置非常简单. - 我正在使用Nvidia gtx1060和corei7进行本地ubuntu 16.04安装 - 我使用--no-opengl-files安装了nvida runfile驱动程序(根据Nvidia和许多地方的说明). - 具体来说,我正在运行floydhub/pytorch docker image.

有没有人认识到特定的渲染故障及其意义?它几乎看起来像帧缓冲区的StackOverflow!我该怎么做才能找到错误?

编辑:我已经消除了我一直在安装的所有额外的依赖项,我只是根据ROS GUI指南进行简单的x-forwarding.

您可以按如下方式轻松复制:

docker run -it --user=$(id -u) --env="DISPLAY" --workdir="/home/$USER" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" floydhub/pytorch:0.1.11-gpu-py3.6 bash
Run Code Online (Sandbox Code Playgroud)

现在在图像中,键入python然后输入以下内容:

import gym
gym.make('Pong-v0').render()
Run Code Online (Sandbox Code Playgroud)

这应该打开你机器上的x转发窗口,但显示器已损坏(至少对我而言)

图片

上面我实际使用了SpaceInvaders-v0

vnc docker ubuntu-16.04 openai-gym nvidia-docker

6
推荐指数
0
解决办法
556
查看次数

在 nvidia docker 中使用 nvenc 运行 ffmpeg

使用 nvidia-docker 在 docker 容器内安装了Nvidia Video Codec SDK 8.2 + ffmpeg但当我运行此命令时

ffmpeg -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt yuv420p -i HeavyHand_1080p.yuv -c:v h264_nvenc -preset slow -cq 10 -bf 2 -g 150 output.mp4
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

无法加载 libnvidia-encode.so.1

nvenc 所需的最低 Nvidia 驱动程序为 390.25 或更高版本初始化输出流 0:0 时出错 - 打开输出流 #0:0 的编码器时出错 - 可能参数不正确,例如比特率、速率、宽度或高度

否则nvidia-smi显示此信息

在此输入图像描述

使用的GPU是GeForce 1050 Ticuda版本是9.0

ffmpeg nvidia docker nvenc nvidia-docker

5
推荐指数
2
解决办法
4815
查看次数

当主机具有 CUDA 9 时,我可以使用 CUDA 10 运行 Docker 容器吗?

我在需要 CUDA 10 的 docker 容器中部署应用程序。这是运行应用程序使用的一些底层 pytorch 功能所必需的。

但是,主机服务器正在运行 docker ce 17、Nvidia-docker v 1.0 和 CUDA 版本 9,我将无法升级主机。

我的印象是我被铐在主机上可用的 v1 nvidia docker 运行时和 CUDA 版本上。

有没有办法在容器上运行 CUDA 10 以便我可以利用这个工具包的功能?

cuda docker nvidia-docker

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

如何在 Kubernetes 中传递 Docker CLI `--gpus` 选项或启用 GPU 支持而不安装 `nvidia-docker2` (Docker 19.03)

我目前使用 Docker 19.03 和 Kubernetes 1.13.5 以及 Rancher 2.2.4。从 19.03 开始​​,Docker 已经通过传递--gpus选项正式支持原生 NVIDIA GPU 。示例(来自NVIDIA/nvidia-docker github):

 docker run --gpus all nvidia/cuda nvidia-smi
Run Code Online (Sandbox Code Playgroud)

但是在 Kubernetes 中,没有选项可以传递 Docker CLI 选项。所以如果我需要运行一个GPU实例,我必须安装nvidia-docker2,使用起来不方便。

无论如何,是否可以在不安装的情况下传递 Docker CLI 选项或传递 NVIDIA 运行时 nvidia-docker2

docker kubernetes rancher nvidia-docker

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

使用 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万
查看次数

如何在 AI Platform 上的自定义 Docker 映像中挂载 GCS 存储桶?

我正在使用 Google 的 AI 平台使用自定义 Docker 映像训练机器学习模型。要在不修改的情况下运行现有代码,我想在容器内安装一个 GCS 存储桶。

我认为实现这一点的一种方法是安装gcloud到身份验证并gcsfuse安装在容器中。我的 Dockerfile 看起来像这样:

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

WORKDIR /root

# Install system packages.
RUN apt-get update
RUN apt-get install -y curl
# ...

# Install gcsfuse.
RUN echo "deb http://packages.cloud.google.com/apt gcsfuse-bionic main" | tee /etc/apt/sources.list.d/gcsfuse.list
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN apt-get update
RUN apt-get install -y gcsfuse

# Install gcloud.
RUN apt-get install -y apt-transport-https
RUN apt-get install -y ca-certificates
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform gcsfuse nvidia-docker ubuntu-18.04 gcp-ai-platform-training

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

如何指定要在 docker-compose 版本 3 中使用的容器运行时?

我正在开发一个需要 nvidia 运行时的容器。我可以在 v2.3 docker-compose 文件中指定此运行时,如下所示:

version: "2.3"
services:
  my-service:
    image: "my-image"
    runtime: "nvidia"
    ...
Run Code Online (Sandbox Code Playgroud)

跑步docker-compose up my-service效果很好。我得到了 nvidia 运行时,一切正常。

我只是通过将“2.3”更改为“3”来尝试此操作,并且在执行此操作时出现以下错误docker-compose up my-service

ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.my-service: 'runtime'
Run Code Online (Sandbox Code Playgroud)

如果我取出runtime: "nvidia"线路,就不会出现问题——当然,它没有使用 nvidia,而且我需要访问主机上的 GPU 以获得我想要的性能。

runtime在 docker-compose v3 中是否有等价物?如果没有,为什么这个选项被删除了?提前致谢。:)

docker-compose nvidia-docker

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

无法在带有 Docker 驱动程序的 Minikube 上使用 GPU

目标:

\n\n

我正在尝试在使用默认 Docker 驱动程序的 Minikube 集群上使用 Nvidia GPU 功能。

\n\n

问题:

\n\n

我可以使用nvidia-docker默认docker上下文,但是当切换到默认上下文时minikube docker-env,出现以下错误:

\n\n
$ docker run --gpus all nvidia/cuda:10.0-base nvidia-smi\ndocker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].\nERRO[0000] error waiting for container: context canceled\n
Run Code Online (Sandbox Code Playgroud)\n\n

环境:

\n\n
    \n
  • 乌班图18.04
  • \n
  • Minikube v1.10.0
  • \n
  • 码头工人版本:
  • \n
\n\n
$ docker version\nClient: Docker Engine - Community\n Version:           19.03.10\n API version:       1.40\n Go version:        go1.13.10\n Git commit:        9424aeaee9\n Built:             Thu …
Run Code Online (Sandbox Code Playgroud)

gpu docker minikube nvidia-docker

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

docker-compose:为每个缩放的容器保留不同的 GPU

我有一个 docker-compose 文件,如下所示:

version: "3.9"
services:
  api:
    build: .
    ports:
      - "5000"
    deploy:
      resources:
        reservations:
          devices:
          - capabilities: [gpu]
            count: 1
Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose up,它会按预期运行,使用计算机上的第一个 GPU。

但是,如果我运行docker-compose up --scale api=2,我希望每个 docker 容器在主机上保留一个 GPU。

实际行为是两个容器接收相同的 GPU ,意味着它们会竞争资源。此外,如果我在 中指定了两个容器,并且都带有. 如果我为每个容器手动指定 device_ids ,它就可以工作。docker-compose.ymlcount: 1

如何才能让每个 docker 容器保留对 1 个 GPU 的独占访问权?这是一个错误还是有意的行为?

docker docker-compose nvidia-docker

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

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
查看次数