一,Segmentation fault 的bug解决
问题描述:自己在使用CPU上调试完代码之后,可以稳定运行,有输出结果。 但是把数据和模型加载上GPU之后,出现了报错。
Segmentation fault (core dumped)
搜了一下可能存在的原因:
- 内存问题:深度学习模型通常需要大量的内存。如果你的模型太大,而 GPU 内存不足以容纳模型和数据,就会导致内存溢出,从而引发 Segmentation Fault。确保你的 GPU 具有足够的内存来处理你的模型和数据
- 不稳定的模型结构:有时,模型的结构或权重可能不稳定,可能导致 Segmentation Fault。确保你的模型结构正确,权重初始化合理。
- 驱动问题:GPU 驱动程序可能会出现问题,导致 Segmentation Fault。请确保你的 GPU 驱动程序是最新的,并且与 PyTorch 版本兼容。
解决手段:
-
检查你的模型大小和数据是否超出 GPU 内存。
降低了数据的batchsize,但是模型依旧报错,segmentation fault -
确保你的代码和模型没有 bug,包括权重初始化问题。
代码应该没有bug, 因为在CPU上可以运行。 -
确保你的 GPU 驱动与你的pytorch版本是对应的。
查看GPU版本和我的torch版本:
如何查看torch的版本:
print(torch.__version__) # 2.0.1
print(torch.cuda.is_available()) # False
因为返回时False,所以版本匹配有问题。
查看 cuda 版本:nvcc -V
Cuda compilation tools, release 11.7, V11.7.64
Build cuda_11.7.r11.7/compiler.31294372_0
**重新安装: **
print(torch.version) # 2.0.1 +cu117
print(torch.cuda.is_available()) #True
原因找到,是cuda的版本不对应的问题。在下面网址找到对应的版本。
https://pytorch.org/get-started/previous-versions/