Pytorch CUDA 训练错误汇总

CUDA 训练错误汇总

RuntimeError: CUDA error: device-side assert triggered

CUDA error: device-side assert triggered 为 CUDA 内置错误,所以 pytorch 无法打印具体错误信息。此时可以通过添加 CUDA_LAUNCH_BLOCKING=1 环境变量来打印具体错误信息。

CUDA_LAUNCH_BLOCKING=1 python main.py

不过不知道为啥,这个命令在多 GPU 训练时有可能会造成死锁。所以可以先在单 GPU 甚至 CPU 下定位问题。

Assertion `t >= 0 && t < n_classes` failed.

这个错误是计算损失时,给出的真值类别或者神经网络预测的类别数多于指定的分类类别数,多为数据集处理或者程序硬编码问题。

程序在第一个 epoch 最后一个 batch 停止,Ctrl+C 终止后似乎在 self.not_empty.wait

如果使用了 torch.nn.DataParallel 进行并行化,可能是因为总数据量不能被 batch_size 整除,即最后一个 batch 时,无法填完 batch_size。而且这个好像只在 GPU 内存占用很大时出现。

这个可以通过设置 torch Dataloader 的 drop_last = True 解决。

你可能感兴趣的:(深度学习)