前几天,我们导师派遣一位师兄躲在导师车里秘密潜入学校,目的是为了在学校实验室里几台机器上装配远程操控软件,方便我们在家里就可以实现对网络的训练。(没有云服务器的寒酸)
结果分给我了一台我从来没就没有用过的电脑,对上面的环境啥的都不清楚,就这样我就开始了长达一天多的Ubuntu深度学习环境的配置过程。其实我原先在Windows上配置过不止一次环境了,对于整个流程是驾轻就熟的,但是在Ubuntu上从来就没有试过,原先尝试用Ubuntu的电脑跑程序也几乎都没有成功过(毕竟是个菜鸟,Win傻瓜操作系统,什么都可视化操作)。下面啥也别说了,直接开始说明我的安装历程和中间遇到过的坑。
直接去清华镜像进行下载
下载完了之后,先进入这个安装包所在的路径,然后输入命令:
bash 下载好的文件名
随后就是一系列的enter和accept的选择,但是到最后一步,会提示是否把anaconda加入到系统环境变量中:
建议像我这样的菜鸟来说,就不要加了,直接回车,默认就是no。
你以为就这样安好了吗,当你在命令行输入conda的命令,你会发现command not found,这就是前面选择了no的原因,所以我们需要自己手动将anaconda的bin目录加入PATH。
在这里以Anaconda2为例
我们采用如下的命令来实现上述操作(下列两个命令均可):
echo export PATH="~/anaconda2/bin:$PATH" >> ~/.bashrc(去掉单引号)
echo 'export PATH=~/anaconda2/bin:$PATH' >> ~/.bashrc(去掉双引号)
还有最后一步比较重要,就是我们需要更新bashrc来使我们刚刚的修改立即生效,于是我们采用:
source ~/.bashrc
到此为止我们就安装成功了。
既然Anaconda都装上了,我们就先用一用吧,先创建一个虚拟环境放在这里,这里就会碰到第一个坑。
创建虚拟环境我们采用语句:
我一般使用的python3.6版本的,而且使用的深度学习的框架是pytorch,所以名称叫做pytorch。
conda create -n pytorch python=3.6
这里说一下遇到的第一个坑以及解决办法。
这是和anaconda有关的,就是先开始你可能还能用,但是当网不好或者没有用清华源来下载安装东西的时候,下的东西会断开,当断了你重新输入相同的指令进行下载的时候就会报出:
段错误(核心已转储)
这个错误困扰了我大半天,是真的大半天。
首先我去直接去搜索这个错误的有关信息,结果收到的都是:
超过了栈的边界,然后把栈的大小设置大一点就可以了。对推荐使用如下语句来扩充栈的空间:
ulimit -s 102400
ulimit -c unlimited
但是这样的操作只能对当下命令行窗口执行的程序有用,对于其他的程序是没有作用的,于是网上还给出了一种一劳永逸的方案,那就是修改bashrc,这样就能对所有程序都管用了。修改的方案如下:
首先采用gedit ~/.bashrc
来进到bashrc的编辑页面,然后在最后一行加上上面两行。
我想肯定的是这种方法在一开始确实有用,但是你在多装了一些东西之后就会一直报这个错误,就是只要你使用和conda有关的命令,这个错误就会一直困扰你,直到你崩溃。因为对于这种错误你真的很无奈,当你尝试了网上所说的任何方法之后问题还是得不到解决,一种对于未知的恐惧和无名火会突然涌上你的心头,会让你不自觉的举起拳头砸向面前的显示屏这种处境是很可怕的,尤其是在疫情期间,出去修个电脑都要冒着姓名危险,所以这个问题很严重。
最后我总结了一下,我觉得网上肯定会有人和我遇到同样的问题,可能只是我搜索的方法不正确罢了,于是我总结这种报错和你使用conda的命令有着很大的联系,于是我就将搜索栏前添加了一句Anaconda,这个时候我的世界被点亮了,一道红色的圣光照耀到了我的脸上,我的天,有人和我搜索的关键字是一模一样的。就是这位大神,在一周多之前他遇上了和我一样的问题,同时天涯沦落人,相逢何必曾相识,这位大哥可能也因为这个问题气急败坏,把拳头慢慢地伸向了电脑显示屏,然而他心中唯一残存的一点理智告诉他:电脑是自己的,要冷静冷静。于是他默默抽了一根烟,想到了去逛逛github,向国际共产主义寻求帮助,于是他找到了这个问题的解决的方法。于是,我就采用的这位大神的方法:
conda clean -a
我感谢这位大哥在我穷途末路的时候给我带来了柳暗花明。
首先,我们需要查看自己的显卡驱动,在Ubuntu16.04下查看显卡驱动变得比较容易,系统设置->软件更新->附加驱动”切换到对应版本的NVIDIA驱动,点击“应用更改”,完成后进行电脑重启即可,这里本人所选的版本为384版本。(其实并不是我选的,是只能用这个)早些时候有个同学手比较快,先自己换了驱动,关了电脑,但是他没有注意到自己的远程连接也终止了,于是他就没有了电脑。
接着我们使用nvidia-smi
来检查驱动是否安装成功
这里有个驱动与cuda的对照表,可以照着这个选择cuda的版本:
我选择的是cuda9.0,地址在这里:https://developer.nvidia.com/cuda-90-download-archive
如下选好自己要下载的版本,点击进行下载:
下载完成后,终端进入下载目录,执行命令:
sudo sh cuda_9.0.176_384.81_linux.ru --override
安装过程中会出现很多选项,按住‘S’滑到100%后,根据提示输入:
1 输入 accept 接受条款
2 输入n不安装nvidia图像驱动,之前已经安装过了 //此处一定要选择n!!!
3 输入y安装cuda 9.0工具
4 回车确认cuda默认安装路径:/usr/local/cuda-9.0
5 输入y用sudo权限运行安装,输入密码
6 输入y或者n安装或者不安装指向/usr/local/cuda的符号链接
7 输入y安装CUDA 9.0 Samples,以便后面测试
8 回车确认CUDA 9.0 Samples默认安装路径:
安装完成后,会提出不完整的安装,此处不用管,是因为上一步没有选择安装显卡驱动导致的。
下一步添加环境路径:
同样是采用sudo gedit ~/.bashrc
来对bashrc来进行修改,在尾部添加:
export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-9.0/bin:$PATH
在这里提示一下,前面的路径自己最好不要改哈,改了后面的这些bashrc中的路径要改,比较麻烦
到此已经完成安装,下面测试安装是否成功:
接着就是cudnn的安装了,cudnn和cuda并没有一一对应的关系,只是但一般有一个最新版本的cuDNN版本与CUDA对应更好,在这里我们安装Cudnn7.0.5
下载完,解压后把相应的文件拷贝到对应的Cuda目录下即可,在终端执行命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
这就装完了。
首先我们使用source activate pytorch
来进入我们需要的环境,然后添加清华源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
根据Python和CUDA选择对应的版本,然后官方给出提示可通过运行:
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
然而我们在这里需要去掉-c pytorch来进行安装。
https://baijiahao.baidu.com/s?id=1622347860160507809&wfr=spider&for=pc
这里需要注意的是,一开始在linux上安装的pycharm是默认没有菜单栏的,所以需要我们把它调出来,方法如下:
1 按Ctrl + Shift + A打开“Find Action”对话框,键入“Experimental features”,然后按Enter键。
2 取消linux.native.menu选项旁边的复选框,应用更改并关闭对话框。
3 重启PyCharm
然后在环境里使用which python来看看我们python真正使用的是哪个路径下的,这个时候需要注意,他哪个有一个.conda,这个.conda就是一个文件夹,你就不要再像Windows里那样在anaconda下的env去找了,严格按照他这个路径来进行配置。
在这里讲一讲,走的冤枉路,一开始,我是按照这个链接来进行配置的:
https://www.cnblogs.com/dxscode/p/11633657.html
当时的cuda什么的都是安装好了的,但是就是像我上面说的那样,即使pytorch安上了,在命令行中import torch都成功了,但是没有严格按照which python下的路径来配置Pycharm,所以把envs里的pytorch路径下的python都试了一遍,没有用,所以不得不从头开始,卸载了安装好的cuda10.0,又重新装。如果当时仔细看路径的话,就不会浪费一天的时间了。
卸载的链接看这里:
https://blog.csdn.net/heiheiya/article/details/81454737
后面又因为执行conda命令的时候,它又疯狂报错:error An unexpected error occurred
我又不得不卸载了anaconda,又重新装,卸载的链接是:
https://blog.csdn.net/hang916/article/details/79530108
总结
严格按照每一步的要求做到位,不要漏掉任何一个操作步骤,否则你就会走冤枉路,浪费大量的时间。
参考:
https://www.cnblogs.com/mlgjb/p/10445201.html
https://blog.csdn.net/qq_40971025/article/details/105589869
https://blog.csdn.net/weixin_40702638/article/details/83304415