最近为了跑 PANet,在服务器上安装了 Detectron.pytorch,安装过程还挺顺利,但是只要调用 GPU 运算就报未知错误,网上搜索一番发现可能是显卡驱动安装有问题,导致 Torch 调用显卡时无法正常初始化。这里记录一下网上的解决方法。
报错信息
1 | RuntimeError: cuda runtime error (30) : unknown error at /opt/conda/conda-bld/pytorch_1524586445097/work/aten/src/THC/THCTensorRandom.cu:25 |
方法1:重新安装显卡驱动和 CUDA
既然是驱动问题,那么自然地重新安装一下最新版的显卡驱动应该就没问题了,注意驱动安装完成之后最好要重启一下机器。安装完驱动之后使用 conda 重新安装 PyTorch。但是由于服务器是公用资源,为了不影响同学使用,只得使用权宜之计。
方法2:root 权限运行 python
网上的解决方法除了重装驱动之外,还有一种暂时的解决办法。因为正确安装显卡驱动会保证 Torch 调用显卡时自动进行正常的初始化,那我也可以手动赋予 python root 权限去初始化显卡。
在尝试的过程中发现,由于服务器环境比较混乱,sudo
提升权限之后运行的不是我自己的 python,而且 PYTHONPATH
和 一些环境变量也不对。解决方法如下:
首先在 python 代码中加上
1 | import os |
然后在运行
1 | sudo /path/to/your/python tools/train_net_step.py --dataset dota --cfg xx.yml --use_tfboard |
然后就可以开始训练了
完