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

问题描述 投票:0回答:12

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

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

t = torch.tensor([1,2], device=device)

但是我遇到了这个奇怪的错误。

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 似乎也没有显示任何进一步的细节。
有人遇到过这个问题吗

python pytorch google-colaboratory tensor
12个回答
77
投票

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

大多数时候,CUDA 运行时错误可能是导致某些索引不匹配的原因,就像您尝试在具有 15 个标签的数据集上训练具有 10 个输出节点的网络一样。这个 CUDA 错误的问题是,一旦您收到此错误一次,您使用 torch.tensors 执行的每个操作都会收到该错误。这会迫使您重新启动笔记本。

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


6
投票

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


3
投票

仔细检查 GPU 的数量。一般情况下,除非你有多个gpu,否则应该是gpu=0。


2
投票

第一次:

使用 simpletransformers 库针对多类分类问题微调基于 Transformer 的模型时出现相同的错误。 simpletransformers 是一个写在 Transformers 库之上的库。

我将标签从字符串表示形式更改为数字,并且它起作用了。

第二次:

在使用

transformers
库训练另一个基于 Transformer 的模型进行文本分类时,再次面临相同的错误。 我在数据集中有 4 个标签,分别命名为 0、1、2 和 3。但在模型类的最后一层(线性层)中,我有两个神经元。
nn.Linear(*, 2)*
我必须用
nn.Linear(*, 4)
替换它,因为我总共有四个标签。


2
投票

我在 Colab 上也遇到了同样的问题。 如果您的代码在设备(“cpu”)上正常运行,请尝试删除当前的 Colab 运行时并重新启动它。这对我有用。


1
投票

也许,我的意思是在某些情况下

这是因为您在将 logit 发送到 BCE Loss 之前忘记添加 sigmoid 激活。

希望能帮到你:P


1
投票

我也遇到了这个问题,找到了原因,因为词汇维度是8000,但是我模型中的embedding维度设置为5000


1
投票

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

并且添加
pad

令牌时导致不匹配:

tokenizer.add_special_tokens({'pad_token': '<pad>'})



0
投票


0
投票


0
投票
https://colab.research.google.com/drive/1SRclU2pcgzCkVXpmhKppVbGW4UcCs5xT?usp=sharing

,位于supervised_finetuning_trainer.train()步骤。

如果有人像我一样无法将计算引入 CPU 而不是 GPU(主要是因为错误堆栈跟踪导致了不同的包,如 Transformer,...,一直回到 pytorch),这里是方法获得更准确的堆栈跟踪:

https://github.com/huggingface/transformers/blob/ad78d9597b224443e9fe65a94acc8c0bc48cd039/docs/source/en/troubleshooting.md?plain=1#L110

鸣谢:GitHub 上的 sgugger。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.