最近在使用pytorch框架的分布式多卡跑深度学习模型时,遇到了该问题,并且出错位置随机,无任何明确错误提示:
此前,也遇到过类似的问题,排查原因在于使用coco数据集做检测时,coco的训练集和验证集均存在有些数据没有label(即没有检测框的数据),损失计算有问题,从而导致了多卡训练在进行信息通信时卡死现象。本次初步排查出错位置在于:loss.backward(), 即梯度回传出错。
为了解决该问题,仍然排查数据问题,将coco没有标签的数据剔除,然而问题并没有解决。进一步排查发现,读取数据时是有标签的,经过了transform之后,边界框消失了!
所以问题在于transform中的随机裁剪操作,有可能将当前图片的所有label均裁剪在之外。进一步解决:重新多次transform,直到该数据的transform之后保持有label,问题解决。
总结:核心原因是数据corrupted/incomplete,解决数据问题,即可解决该问题。