关于CPU和GPU上的CUDA-error: device-side triggered问题和解决办法

在使用自训练的Bert模型时遇到了CUDA错误,问题源于embedding层的维度不匹配。CPU运行时遇到越界错误,GPU运行则在转换到CUDA时直接报错。解决方法包括检查标签是否为正确范围(对于二分类问题,标签应为0和1),确保embedding_size与词汇表大小一致。在本例中,修正embedding_size后解决了问题。
摘要由CSDN通过智能技术生成

在这里插入图片描述
今天跑自己预训练的Bert的时候出现这个问题,本来以为是模型权重加载的时候出现问题,结果发现是**model = model.to(“cuda”)**报错,很麻。去网上搜了只会,佬们都说是embedding或者标签问题,于是我检查了每个标签,没有问题。然后我再回头检查embedding的时候,是用cpu跑的,因为我的GPU是colab的,没办法调试。用cpu的时候跑得起来,但遇到越界的index就会出错,如果带着这样的数据和模型,去to(“cuda”),它会直接给你报cuda -error错误

总结

-------CPU上:embedding越界错误,报的是index超出边界的错误。
-------GPU上:embedding越界错误,不会运行的途中给你报错,而是to.(“cuda”)后直接报错。

解决办法

-------检查label,如果是二分类,label标签应该是0 和 1,而不是1 和 2.(网上说的)
-------检查embedding,先打印出模型的embedding层,看看是多少维度->embedding_size,这个维度要和词表的大小一样。比如下图,红框中的1696就是我的词表总长度。之前我这里的embedding的是1692,所以报错了。在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值