CUDA 错误:在 Colab 上触发设备端断言

3no*_*mis 7 pytorch tensor google-colaboratory

我正在尝试在启用 GPU 的情况下在 Google Colab 上初始化张量。

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

t = torch.tensor([1,2], device=device)
Run Code Online (Sandbox Code Playgroud)

但我收到了这个奇怪的错误。
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

即使将该环境变量设置为 1 似乎也没有显示任何进一步的细节。
有人遇到过这个问题吗?

Tre*_*are 9

使用 Transformers Trainer时遇到同样的问题。就我而言,问题是由模型输入和分词器长度大小不匹配引起的。这就是为我解决问题的方法:

model.resize_token_embeddings(len(tokenizer))
Run Code Online (Sandbox Code Playgroud)

添加token时导致不匹配pad

tokenizer.add_special_tokens({'pad_token': '<pad>'})
Run Code Online (Sandbox Code Playgroud)


tsc*_*ker 8

正如其他受访者所指出的:在 CPU 上运行它会显示错误。我的目标标签为 {1,2},我将其更改为 {0,1}。这个程序为我解决了这个问题。


小智 6

虽然我尝试了你的代码,但它没有给我一个错误,但我可以说通常调试 CUDA 运行时错误的最佳实践:像你这样的设备端断言是将协作转换为 CPU 并重新创建错误。它会给你一个更有用的回溯错误。

大多数情况下,CUDA 运行时错误可能是导致某些索引不匹配的原因,例如您尝试在具有 15 个标签的数据集上训练具有 10 个输出节点的网络。这个 CUDA 错误的问题是一旦你得到这个错误一次,你会在你使用 torch.tensors 执行的每个操作中收到它。这会强制您重新启动笔记本。

我建议你重新启动你的笔记本,通过移动到 CPU 来获得更准确的回溯,并检查你的其余代码,特别是如果你在某处的一组目标上训练模型。

  • 形状不匹配。遗憾的是,火炬没有告诉你错误 (3认同)
  • 我很抱歉要重提这一点。但我面临同样的问题,但当我在 CPU 中运行时,错误不会发生。我可以尝试其他程序来查明发生了什么吗? (3认同)