python - 使用 docker 和 GPU 进行 Pycharm 调试

标签 python docker tensorflow pycharm nvidia

目标:

为了在 PyCharm 中调试 Python 应用程序,我将解释器设置为自定义 docker 镜像,使用 Tensorflow,因此需要 GPU。问题是,据我所知,PyCharm 的命令构建没有提供发现可用 GPU 的方法。

终端 - 它可以工作:

使用以下命令输入容器,指定要使用的 GPU ( --gpus ):

docker run -it --rm --gpus=all --entrypoint="/bin/bash" 3b6d609a5189        # image has an entrypoint, so I overwrite it

在容器内,我可以运行 nvidia-smi查看是否找到 GPU,并确认 Tensorflow 找到它,使用:

from tensorflow.python.client import device_lib
device_lib.list_local_devices()
# physical_device_desc: "device: 0, name: Quadro P2000, pci bus id: 0000:01:00.0, compute capability: 6.1"]

如果我不使用--gpus标志,没有发现 GPU,正如预期的那样。 注意:使用 docker 19.03 及以上版本,原生支持 Nvidia 运行时,因此不需要 nvidia-docker还有 docker-run 参数 --runtime=nvidia也已弃用。 Relevant thread .

PyCharm - 它不起作用

这是运行的配置:

configuration

(我意识到其中一些路径可能看起来不正确,但目前这不是问题)

我将解释器设置为指向相同的 docker 镜像并运行 Python 脚本,设置自定义 LD_LIBRARY_PATH作为与 libcuda.so 匹配的运行的参数是 locate d 在 docker 镜像中(我在正在运行的容器内以交互方式找到它),但仍然找不到设备:

error message

错误消息显示 CUDA 库能够加载(即在 LD_LIBRARY_PATH 上找到),但仍然找不到设备。这就是为什么我相信 docker run 论点 --gpus=all必须设置在某处。我找不到在 PyCharm 中执行此操作的方法。

我尝试过的其他事情:

  1. 在 PyCharm 中,使用 Docker 执行模板配置(而不是 Python 模板),可以指定运行参数,因此我希望传递 --gpus=all ,但这似乎不受这些选项的解析器的支持:

parse error

  • 我尝试将默认运行时设置为 nvidia在 docker 守护进程中,将以下配置包含在 /etc/docker/daemon.json 中:
  • {
        "runtimes": {
            "nvidia": {
                "runtimeArgs": ["gpus=all"]
            }
        }
    }
    

    但是,我不确定正确的格式。我已经尝试了上述的几种变体,但没有任何一个可以让 GPU 被识别。上面的示例至少可以被解析并允许我重新启动 docker 守护进程而不会出现错误。

  • 我注意到在官方 Tensorflow docker 镜像中,他们安装了一个名为 apt install 的软件包(通过 nvinfer-runtime-trt-repo-ubuntu1804-5.0.2-ga-cuda10.0 ) ,这听起来像是一个很棒的工具,尽管看起来只是针对 TensorRT。我将其添加到我的 Dockerfile 中作为摸索,但不幸的是它并没有解决问题。

  • 添加NVIDIA_VISIBLE_DEVICES=all等等到 PyCharm 配置的环境变量,但没有运气。

  • 我使用的是 Python 3.6、PyCharm Professional 2019.3 和 Docker 19.03。

    最佳答案

    PyCharm 2020.2 中现已提供 Docker GPU 支持,无需全局默认运行时。 只需在 configuration window 的“Docker 容器设置”部分下设置 --gpus all .

    如果仍然出现不存在 NVIDIA GPU 设备:/dev/nvidia0 不存在错误,请确保取消选中使用 Python 控制台运行,因为它仍然无法正常工作正确地。

    关于python - 使用 docker 和 GPU 进行 Pycharm 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59652992/

    相关文章:

    java - 通过 Java API 在 Windows 上使用来自 Tensorflow.contrb 的操作

    python - TensorFlow:在不同输出形状的数据集之间交替

    Docker:如何启动现有容器并转发端口?

    docker - Tutum Redeploy触发器不会从图像重建

    docker - 如何使用 react-scripts 3.4 和 babel-loader 8.1 使 yarn 在 Docker 镜像中开始工作?

    macos - 内部编译器错误 : killed (program cc1plus) on MAC OS Sierra

    python 特征 : Column of Buttons in Table

    python - 如何用汉字打印 tesseract 结果

    python - 如何访问python列表并将其保存为字符串

    Python递归Tensorflow斐波那契数计算