CUDA error: device-side assert trigger

今天在跑模型的时候突然出现如下报错:

RuntimeError : CUDA error: device-side assert trigger

断言部分的报错是:

Assertion `srcIndex < srcSelectDimSize` failed on GPU for `torch.cat()`

在这个问题上浪费了超多时间,首先遇到此类CUDA报错,一定要先将CUDA功能关闭,如果模型简单,可以直接把.cuda()删了,也可以在命令行使用:

CUDA_LAUNCH_BLOCKING=1 python main.py

来关闭cuda功能,使模型跑在CPU上,因为CUDA报错的位置根本不准确,没办法作为参考的,换到CPU上出现了更为具体的报错,我的报错是词潜入的时候越界:

runtimeError: index out of range : Tried to access index -98592956421 out of table with 6240 rows

其中6420是我的字典大小,而这个负溢出就代表了我的数据在传入模型的时候出了问题,打断点调试后发现自己沙雕了,5000行的数据,batchsize设了个12,这就导致最后一批数据是残次批,没填满的位置就会出现这种超大负数(或随机数),从而导致词嵌入时负溢出。

你可能感兴趣的:(CUDA error: device-side assert trigger)