当前位置: 首页 > 知识库问答 >
问题:

利用docker和GPU进行Pycharm调试

戚泰
2023-03-14

在PyCharm中调试一个Python应用程序,其中我使用Tensorflow将解释器设置为自定义docker映像,因此需要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也不推荐使用。相关线程。

下面是运行的配置

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

错误消息显示可以加载CUDA库(即在LD_LIBRARY_PATH上找到is),但仍未找到设备。这就是为什么我认为docker运行参数--gpus=all必须设置在某个地方的原因。我在Pycharm找不到办法。

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

{
    "runtimes": {
        "nvidia": {
            "runtimeArgs": ["gpus=all"]
        }
    }
}

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

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

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

共有1个答案

端木志诚
2023-03-14

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

如果没有NVIDIA GPU设备存在:/dev/nvidia0不存在仍然发生错误,请确保取消选中Run with Python Console,因为它仍然不能正常工作。

 类似资料:
  • 我试图将我本地的Py魅力Django切换到基于docker的开发环境。我在mac上运行并使用Docker-Comment(少数dockers:我的django应用程序,一些db和nginx)。 所有运行正常,代码更改立即反映在docker中,在Pycharm中编码时,正确的包可用。docker compose启动后,Pycharm的docker plugin窗口中将显示一个正在运行的容器列表,对于

  • 问题内容: 我使用PyCharm已有一段时间,所以我不是专家。 我通常如何在终端上运行程序,如下所示: 我想知道如何调试它? 对于我编写的其他程序,我没有任何参数,因此调试只是设置断点并按debug。 问题答案: 菜单:-> -> -> 。 脚本名称: 如果您需要从已安装的软件包(例如)中调试脚本,则也可以指定完整路径。例如:脚本名称: 上面是包含程序包的虚拟环境的路径。 脚本参数:

  • 本文向大家介绍如何利用pycharm进行代码更新比较,包括了如何利用pycharm进行代码更新比较的使用技巧和注意事项,需要的朋友参考一下 pycharm自带对两个文件比对更新模块,方便查找不同,进行修改替换。方法如下:   1.选择目标文件,右键选择compare with   2.选择对比文件   3.查看对比修改如图: 到此这篇关于如何利用pycharm进行代码更新比较的文章就介绍到这了,更

  • 问题内容: 读取执行的scikit学习中tensroflow:http://learningtensorflow.com/lesson6/和scikit学习:http://scikit- learn.org/stable/modules/generated/sklearn.cluster.KMeans.html 我努力决定使用哪种实现。 scikit-learn作为tensorflow docke

  • 主要内容:涉及的步骤,了解断点运行Python代码包含两种模式:运行脚本和调试脚本。 本章重点介绍如何使用PyCharm来调试Python脚本。 涉及的步骤 调试Python项目的步骤如下所述 - 第1步 从下面的屏幕截图所示开始调试Python项目 - 第2步 现在,Windows防火墙要求调试Python项目的权限,因为该过程涉及逐行编译。 第3步 调试控制台在PyCharm编辑器中创建,如下所示,它逐行执行输出。 运行按

  • 问题内容: 我有一个正在运行的Docker容器。我已经在运行的Docker容器中做了一些有用的工作。我已经完成了这些工作,而不是dockerfile的一部分,我已经在容器内完成了它。[例如:我已经在容器内安装了ping,而不是从docker文件中安装了ping] 现在,我被困在一个地方。我不确定是否要在同一个容器中进行调试,否则可能会使到目前为止在容器中所做的事情松懈。 因此,我想使用该运行容器中