【发布时间】:2021-09-17 12:19:53
【问题描述】:
我在通过 Pytorch 1.9.0+cu102 训练生成网络时遇到以下错误:
RuntimeError: CUDA error: device-side assert triggered
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
在使用 Google Colaboratory GPU 会话时。此段是在以下两条线中的任何一条上触发的:
running_loss += loss.item()
或
target = target.to(device)
当我第一次运行笔记本时,它会在第一行产生错误,然后每次我尝试运行块时都会产生第二行。第一个错误发生在训练 3 个批次之后。第二个错误发生在第一批。我可以确认该设备是 cuda0,该设备可用,并且target 是一个 pytorch 张量。自然,我尝试接受错误的建议并运行:
!CUDA_LAUNCH_BLOCKING=1
和
os.system('CUDA_LAUNCH_BLOCKING=1')
但是,这两行都不会更改错误消息。根据另一篇文章,这是因为 colab 在子外壳中运行这些行。在 CPU 上运行时不会出现该错误,并且除了 Colab 上的 GPU 之外,我无法访问 GPU 设备。虽然已经以多种不同的形式提出了这个问题,但没有任何答案对我特别有帮助,因为他们要么建议通过上述行,要么是关于与我自己根本不同的情况(例如训练具有不适当数量的类的分类器),或者推荐一个我已经尝试过的解决方案,例如重置运行时或切换到 CPU。
我希望深入了解以下问题:
- 有没有办法让我获得更具体的错误消息?设置启动阻止变量的努力没有成功。
- 我怎么会在两条看似完全不同的线路上出现此错误?怎么可能我的网络训练了 3 个批次(始终是 3 个),但在第四个批次却失败了?
- 这种情况是否会提醒任何人他们之前遇到的错误,并且鉴于我可以提取的信息有限,是否有可能的途径来改善它?
【问题讨论】:
标签: pytorch google-colaboratory