Pycharm 调试器不适用于 pytorch 和深度学习

She*_*dil 6 python cuda ubuntu debugger pycharm

这个问题介于 Stackoverflow 和 Superuser 之间——至少在我看来,所以如果这是错误的地方(在你看来 ;)),请随时向我指出 SO。

问题:

如果我在我的 python 代码中放置一个断点,调试器就会停止。如果我想进入下一行,它会这样做。 除非它发生在枚举(数据加载器)之后。我可以在 enumerate(dataloader) 之后放置一个断点,调试器也会停止。但是,我不能一步。如果我在 enumerate(dataloader) 之前放置断点并跨过 enumerate 行,也会发生同样的情况。在 enumerate(..) 之后,它不适用于该行。

有趣的事实是,它直到最近才起作用 - 就像一周前

# Breakpoints work, stepping over works
...
for epoch in range(num_epochs):
    for i, data in enumerate(dataloader, 0):
        # If I break before this line and I step until the next, I can not step afterwards
        netD.zero_grad()
        # Breakpoints work, stepping does not
Run Code Online (Sandbox Code Playgroud)

我试图解决这个问题:

  • 我卸载了 PyCharm 并重新安装了它。
  • 我尝试使用社区版。
  • 我尝试使用和不使用 cython 调试器扩展来运行两个版本。
  • 我检查了我在停止工作后安装了哪些东西并删除了它们。
  • 我在 Jetbrains、SO 和 Pytorch 论坛上查看了大量帖子。发现一些看起来很有趣,但实际上它们不适合我的问题。
  • 我尝试使用不同的 CUDA 版本和 cudnn 版本。

到目前为止没有任何效果......我真的不想重新安装我的操作系统,这很可能会有所帮助,但是是的,出于明显的原因,这不是我想要的。有没有人经历过这种行为并且可以帮助我?提前致谢。请随时询问其他详细信息。我会尽量提供尽可能多的细节

我将列出我的设置的一些细节:

操作系统:

  • 英特尔® 酷睿™ i7-7700K CPU @ 4.20GHz × 8
  • 英伟达 RTX 2080 TI
  • NVIDIA-SMI 430.26 驱动程序版本:430.26 CUDA 版本:10.2
  • Ubuntu 18.04

软件:

  • PyCharm 社区和 EDU 2019.2
  • (安娜)康达
  • cudnn也安装了
  • python 3.6 和 python 3.7 的两个 conda envs,带有 pytorch 和它需要的一切(numpy、scipy、matplotlib 等)

NVCC:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168
Run Code Online (Sandbox Code Playgroud)

Rom*_*ais 15

我几个星期都遇到同样的问题,只是设法解决了它!解决方案是在创建对象期间设置num_workers为。0DataLoader

  • 非常感谢你。 (2认同)
  • `num_workers` 是 pytorch 启动加载数据批次的子进程的数量,所以我的猜测是 pycharm 的调试器不知道如何处理多个子进程,只能处理加载到主进程中的变量。 (2认同)