首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带GPU接口的Pycharm调试

使用带GPU接口的Pycharm调试
EN

Stack Overflow用户
提问于 2020-01-08 19:56:26
回答 3查看 2.3K关注 0票数 5

目标是:

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

终端-它的工作:

使用以下命令输入一个容器,指定要提供哪些GPU (--gpus):

代码语言:javascript
复制
docker run -it --rm --gpus=all --entrypoint="/bin/bash" 3b6d609a5189        # image has an entrypoint, so I overwrite it

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

代码语言:javascript
复制
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运行参数--runtime=nvidia相关螺纹

PyCharm -它不起作用

下面是运行的配置:

(我意识到其中一些路径可能看上去不正确,但这暂时不是一个问题)

我将解释器设置为指向同一个码头映像并运行Python,并将一个自定义LD_LIBRARY_PATH设置为一个参数,用于与libcuda.so在码头映像中的located匹配的运行(我在正在运行的容器中发现了它),但仍然没有找到任何设备:

错误消息显示CUDA库能够加载(即在该LD_LIBRARY_PATH上找到),但仍未找到该设备。这就是为什么我认为码头运行参数--gpus=all必须设置在某个地方。我无法在PyCharm中找到这样的方法。

我尝试过的其他事情:

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

  1. 我尝试将默认运行时设置为nvidia,方法是在/etc/docker/daemon.json中包括以下配置

{“运行时”:{ "nvidia":{ "runtimeArgs":"gpus=all“}}

但是,我不确定这方面的正确格式。我尝试了一些以上的变体,但没有得到GPU的认可。上面的示例至少可以被解析,并允许我在没有错误的情况下重新启动docker守护进程。

  1. 我注意到,在Tensorflow的官方映像中,他们安装了一个名为apt install的软件包,名为nvinfer-runtime-trt-repo-ubuntu1804-5.0.2-ga-cuda10.0,这听起来是一个很好的工具,尽管似乎只适用于TensorRT。我把它添加到我的Dockerfile中,作为一个暗处,但不幸的是它没有解决这个问题。
  2. NVIDIA_VISIBLE_DEVICES=all等添加到PyCharm配置的环境变量中,没有任何进展。

我正在使用Python3.6、PyCharm Professional 2019.3和Docker19.03。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-09 17:50:42

事实证明,尝试2.在我的帖子中的“其他尝试”部分是正确的方向,并且使用以下允许的PyCharm的远程解释器(码头映像)定位GPU,就像终端能够找到的那样。

我在/etc/docker/daemon.json中添加了以下内容

代码语言:javascript
复制
{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

还必须在保存文件后重新启动docker服务:

代码语言:javascript
复制
sudo service docker restart

注意:这将杀死系统上所有正在运行的码头集装箱。

票数 3
EN

Stack Overflow用户

发布于 2020-08-24 09:47:13

Docker的支持现在可以在PyCharm 2020.2中使用,而不需要全局default-runtime。只需将--gpus all设置在配置窗口中的“Docker容器设置”部分。

如果no NVIDIA GPU device is present: /dev/nvidia0 does not exist错误仍然发生,请确保取消选中Run with Python Console,因为它仍然不能正常工作。

票数 4
EN

Stack Overflow用户

发布于 2021-09-27 20:05:55

看看米哈ł德的答案,它是有效的。然而,一个交互控制台仍然是坏的。使用一些docker inspect,我发现使用选项Run with Python Console覆盖了docker配置,忽略了提供的选项--gpus all。我无法忍受这样的生活质量下降和被迫使用docker-compose玩得很好。

看,解决办法。

1.如何在Tensorflow中测试GPU

代码语言:javascript
复制
import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))

应该返回类似的东西

代码语言:javascript
复制
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

2.确保您有一个工作的简单码头容器

代码语言:javascript
复制
docker pull tensorflow/tensorflow:latest-gpu-jupyter
docker run --gpus all -it tensorflow/tensorflow:latest-gpu-jupyter python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

最后一次打印应该如步骤1所述,否则请参见nvidia指南tensorflow指南

3.创建一个撰写文件并测试它

代码语言:javascript
复制
version: '3'
# ^ fixes another pycharm bug
services:
  test:
    image: tensorflow/tensorflow:latest-gpu-jupyter  
    # ^ or your own
    command: python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"  
    # ^ irrelevant, will be overwridden by pycharm, but usefull for testing
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
代码语言:javascript
复制
docker-compose --file your_compose_file up

同样,您应该看到步骤1中描述的相同的输出,考虑到第2步是成功的,这应该是没有意外的。

4.将此组合设置为pycharm中的解释器。

  • 配置文件: your_compose_file
  • 服务:测试(它只是起作用,但您可以拥有更多的有趣的 )

5.在运行启用GPU的对接器.时享受您的交互控制台

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59652992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档