zl程序教程

您现在的位置是:首页 >  后端

当前栏目

已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!!

方法异常 解决 Error 正确 有效 亲测 CUDA
2023-09-27 14:27:33 时间

已解决RuntimeError: CUDA error: device-side assert triggered异常的正确解决方法,亲测有效!!!

在这里插入图片描述

报错问题

粉丝群里面的一个小伙伴敲代码时发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错信息如下:

在这里插入图片描述
当我在调试模型的时候,出现了如下的问题
在这里插入图片描述

/opt/conda/conda-bld/pytorch_1656352465323/work/aten/src/ATen/native/cuda/IndexKernel.cu:91: operator(): block: [5,0,0], thread: [63,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds”` failed.

通过提示信息可以知道是个数组越界的问题。但是如图一中第二行话所说这个问题可能并不出在提示的代码段。
一开始碰到这个问题就一个劲儿地查看提示的错误代码,发现调整了代码段之后,问题依然存在在并且提示的问题代码变化了。

解决方法

解决方法如下

在这里插入图片描述
首先明确一点,如图中描述的"RuntimeError: CUDA error: device-side assert triggered"该类问题,不应该仅从提示的代码进行检查。问题可能出在别的地方。
通过检查代码,以及查找出现类似问题的解中发现对于,“index >= -sizes[i] && index < sizes[i] && “index out of bounds””,这类数组越界的问题,如果大家的模型任务是用于分类任务,可以查看下自己模型在设置类别数量时,数值是否大于数据集中的给定的类别。

num_classes = 20 if args.dataset_file != 'coco' else 91

修改过后的的dataset_file名称为coco_vl,所以类别给了20,实际模型在最后预测阶段的类别应该为91,所以在criterion阶段(计算loss)时会报数值越界错误。
更改代码如下:

num_classes = 20 if args.dataset_file != 'coco' and args.dataset_file != 'coco_vl' else 91

福利

每周会送6本技术书籍包邮到家
由于博主时间精力有限,每天私信人数太多,没办法每个粉丝都及时回复
大家可以进社区裙或者添加博主微信
点击下方链接即可
http://t.csdn.cn/6kInJ