一,Segmentation fault 的bug解决

问题描述:自己在使用CPU上调试完代码之后,可以稳定运行,有输出结果。 但是把数据和模型加载上GPU之后,出现了报错。
Segmentation fault (core dumped)

搜了一下可能存在的原因

  1. 内存问题:深度学习模型通常需要大量的内存。如果你的模型太大,而 GPU 内存不足以容纳模型和数据,就会导致内存溢出,从而引发 Segmentation Fault。确保你的 GPU 具有足够的内存来处理你的模型和数据
  2. 不稳定的模型结构:有时,模型的结构或权重可能不稳定,可能导致 Segmentation Fault。确保你的模型结构正确,权重初始化合理。
  3. 驱动问题:GPU 驱动程序可能会出现问题,导致 Segmentation Fault。请确保你的 GPU 驱动程序是最新的,并且与 PyTorch 版本兼容。

解决手段:

  1. 检查你的模型大小和数据是否超出 GPU 内存。
    降低了数据的batchsize,但是模型依旧报错,segmentation fault

  2. 确保你的代码和模型没有 bug,包括权重初始化问题。
    代码应该没有bug, 因为在CPU上可以运行。

  3. 确保你的 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/

Logo

鸿蒙生态一站式服务平台。

更多推荐