今天在跑模型的时候突然出现如下报错:
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,这就导致最后一批数据是残次批,没填满的位置就会出现这种超大负数(或随机数),从而导致词嵌入时负溢出。