所以我正在尝试在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
我使用 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 Ti,cuda版本是9.0
我在需要 CUDA 10 的 docker 容器中部署应用程序。这是运行应用程序使用的一些底层 pytorch 功能所必需的。
但是,主机服务器正在运行 docker ce 17、Nvidia-docker v 1.0 和 CUDA 版本 9,我将无法升级主机。
我的印象是我被铐在主机上可用的 v1 nvidia docker 运行时和 CUDA 版本上。
有没有办法在容器上运行 CUDA 10 以便我可以利用这个工具包的功能?
我目前使用 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
我正在构建一个图像,同时需要测试 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) 我正在使用 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
我正在开发一个需要 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 中是否有等价物?如果没有,为什么这个选项被删除了?提前致谢。:)
目标:
\n\n我正在尝试在使用默认 Docker 驱动程序的 Minikube 集群上使用 Nvidia GPU 功能。
\n\n问题:
\n\n我可以使用nvidia-docker默认docker上下文,但是当切换到默认上下文时minikube docker-env,出现以下错误:
$ 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\nRun Code Online (Sandbox Code Playgroud)\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) 我有一个 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 映像,在其中使用 pytorch 编译自定义内核。因此,我需要访问可用的 GPU,以便在 docker 构建过程中编译自定义内核。在主机上,一切都已设置,包括nvidia-container-runtime、nvidia-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) nvidia-docker ×10
docker ×8
cuda ×1
ffmpeg ×1
gcsfuse ×1
gpu ×1
kubernetes ×1
minikube ×1
nvenc ×1
nvidia ×1
openai-gym ×1
python-3.x ×1
pytorch ×1
rancher ×1
ubuntu-16.04 ×1
ubuntu-18.04 ×1
vnc ×1