1.环境配置
由于安装CUDA对ubantu系统的内核和GCC有限制,如图下图所示,我的服务器是Ubantu16.04的系统,kernel为4.8.0 ,GCC为5.4。
我们必须先配置环境,这里令我比较困惑的一点是是否必须对Ubnatu做降核处理,因为如果降核之后可能会对N卡驱动产生不兼容现象,以及导致其他用户的程序编译错误,所以我先不对kernel做处理,先对GCC做处理。
(图源自:https://blog.csdn.net/lhakuma/article/details/79574929)
GCC降级处理
这一步参考:https://www.cnblogs.com/laozhuang/p/8250387.html
安装python3.5(Anaconda3)
由于pytorch官网说最好安装anaconda3,所以我们在安装CUDA和pytorch前安装Anaconda3。
首先下载anaconda3镜像,清华大学开源软件镜像站下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
我选择的是:Anaconda3-4.2.0-Linux-x86_64.sh
接下来安装https://blog.csdn.net/u012243626/article/details/82469174
这个博文安装。
安装CUDA+N卡驱动
安装pytorch
由于代码要求pytorch0.4.0+CUDA8.0
所以要下载老版本的pytorch但是官网上已经没有CUDA8.0的pytorch0.4.0了,所以根据别的地方的网址进行一个修改,并采用PIP方式进行安装可以得到:
这样安装完之后还得安装torchvision,并且要找与torch0.4.0相对应的版本为0.2.0torchvision
跑程序出现的问题
RuntimeError: cuda runtime error (2) : out of memory at /pytorch/aten/src/THC/generic/THCStorage.cu:58
【解决方法】把batch_size改小,不报这个错误了,报别的错误:
cudaCheckError() failed : invalid device function
【解决方法】
可能原因一:make.sh文件中的算力值写的不对。
参考链接:https://blog.csdn.net/zhu200829385/article/details/80260108
我是直接把程序里面的make.sh找到 arch=sm_62 找到,
然后根据
https://blog.csdn.net/dlhlSC/article/details/85088280
找到我的显卡GTX Titan X对应的计算能力为5.2,确实和代码里面写的不一样!所以改成arch=sm_52,重新试了一个小网络,就可以跑起来了。
新的问题
跑起来小的batch_size之后,依旧不能跑作者给出的模型训练,如果train_batch大于2就会发生out of memory的情况。
【解决方法】猜测一:GPU的资源不够
用以下指令,查看GPU的使用情况:
watch -n 1 nvidia-smi
确实是这样,可见思路GPU几乎都满了,猜测一:别的用户在也在使用GPU,导致GPU资源不够用。计划等GPU闲置下来再重新跑。