tensorflow/pytorch/mxnet的pip安装,非源代码编译,基于cuda10.1/cudnn7.6.0/ubuntu18.04.md

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://dwsun.blog.csdn.net/article/details/87778565

os安装

目前对tensorflow和cuda支持最好的是ubuntu的18.04 ,16.04这种lts,推荐使用18.04版本。非lts的版本一般不推荐。

Windows倒是也能用来装深度GPU环境,但是Windows上的问题实在太多了,而且很多都是跟环境相关的,不具备普遍性,解决了也没有意义。所以真心不推荐Windows环境。

这里需要注意的是,ubuntu有桌面版本和服务器版本的区别,自己用的话,肯定是要桌面版本的,但是如果只是放在角落里做运算机又或者是桌面版本安装失败的时候,可以考虑服务器版本。

ubuntu自带的开源驱动似乎有点问题,1080ti的显卡不支持,所以只能用服务器版本装好之后,再考虑怎么装上桌面。

而且ubuntu从17.04的很多东西都可以安装在$HOME/.local 下面,省去了很多的麻烦。

从ubuntu官网下载ubuntu的iso镜像。

balabalabala...

系统安装就完成了。

安装完之后的设置

升级

装完之后,推荐先升级一下系统。试了一下,默认的源速度不怎么好,换一个国内的源。国内的话,有ali,163,tuna,中科大。参考各个国内源说明文档去修改sources.list即可。

ali的ubuntu18.04 sources.list设置

 

deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

执行下述命令升级

 

sudo apt-get update
sudo apt-get upgrade

升级完系统之后,重启一下系统。

 

sudo reboot

安装rsync screen aptitude

因为系统里面现在还啥也没有,安装完之后对系统做一个易用性的设置。

 

sudo apt-get install rsync screen aptitude

pip安装

因为我们这里是用pip安装的各个框架,所以pip要先安装一下

 

sudo aptitude install python3-pip

重要:ubuntu18.04里面自带的已经是python3.6了,如果操作系统使用的是ubuntu16.04,其自带的python是python3.5,则需要考虑使用conda等工具安装python3.6之后再进行后续的各个框架安装了。

cuda, cudnn的安装

下载cuda

这里下载ubuntu18.04对应的最新的cuda10.1。作者下载的是deb(local)的版本,这是一个deb文件,装好之后,就可以将整个cuda10.1的仓库放在本地,省去在线下载的麻烦,一定要看清楚,不要下载错了。

文件名为:

cuda-repo-ubuntu1804-10-1-local-10.1.168-418.67_1.0-1_amd64.deb

找不到的可以到这里下载我已经下载好的

下载cudnn

注册一个nvidia的开发者帐号,下载cudnn7.6。地址

有时候国内的用户访问这个网址会出现问题提示正在维护,具体原因。。。请自备梯子或者用我已经下载好的。

这里下载的是cuda10对应的deb版本,不要下载错了。

文件名为

libcudnn7_7.6.0.64-1+cuda10.1_amd64.deb

找不到的可以到这里下载我已经下载好的

如果只是安装预编译好的框架,下载这个版本就可以了,如果是要自己编译,例如dlib之类的框架,则还需要下载安装(本教程不需要):
libcudnn7-dev_7.6.0.64-1+cuda10.1_amd64.deb

安装cuda库

直接用dpkg安装这个文件就好了。装好了整个cuda的仓库就在本地了。

 

sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.168-418.67_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-1-local-10.1.168-418.67/7fa2af80.pub # 执行这一行是为了导入key
sudo aptitude update # 执行升级,让cuda库起作用

这里安装的其实是一个cuda的apt仓库,相当于把cuda的apt仓库的本地版本。到这里,cuda还没有安装好。

安装nvidia驱动

想用nvidia的显卡,不装nvidia的驱动怎么行,其实ubuntu官方的仓库里面是自己带nvidia的闭源驱动的,不过我们这里使用的是cuda库里面自带的nvidia驱动。

使用命令行安装的方式如下:

 

sudo aptitude install nvidia-driver-418 --without-recommends

不同的编号支持不同的显卡,如果是1080ti等比较新的显卡,直接用编号最高的应该就没问题。

比较老旧的显卡,可以到nvidia的官方网站查询。

使用--without-recommends可以只安装需要的东西,其他推荐安装的东西可以都不安装了,省了很多空间,

安装完成之后,需要重启一下系统。

 

sudo reboot

很多教程说要去下载sh的驱动文件,进行编译安装,这里不太推荐,因为很麻烦而且容易出问题,ubuntu对非开源驱动的支持还是比较好的,直接用cuda库里面的驱动就可以。

关于驱动的安装,有文章提到过cuda里面自己带的驱动是有问题的,所以需要单独装驱动,而不是使用cuda里面自己带的。但是我们这是测试过的发现,就算装的不是最新的驱动,cuda也会尝试给更新到最新,而且看上去没啥问题,也许是特定版本的驱动才会出现的问题。这个需要具体问题具体分析了。

安装cuda

直接执行下面的命令安装就可以了:

 

sudo aptitude install cuda-runtime-10-1 --without-recommends

因为我这里只是要运行这些框架,并不是要编译什么东西,所以这里装的是cuda的runtime,也就是不带任何工具,并且也没装任何额外的开发包,所以很快而且占用空间也不多。如果需要从源代码编译一些使用cuda的框架,那么还是需要老老实实装cuda,命令行如下:

 

sudo aptitude install cuda

在18.04版本之前,cuda都是单独安装的,安装到了/usr/local下面,所以需要一些其他的设置,而现在,cuda直接安装到/usr/lib下面去了,就不需要那些单独的设置了。

安装cudnn

因为我们下载的是deb,所以直接安装就好了,很简单,命令行如下:

 

sudo dpkg -i libcudnn7_7.6.0.64-1+cuda10.1_amd64.deb

同样的,如果只是装预编译的框架(本教程介绍的内容),上面一个包就足够了,但是如果要编译安装一些框架的话,还需要安装dev(本教程介绍的内容不需要)。

 

sudo dpkg -i libcudnn7-dev_7.6.0.64-1+cuda10.1_amd64.deb

安装tensorflow

目前,tensorflow官方很傲娇的没有给出他们release的tensorflow到底是在哪个版本上编译的,所以要装tensorflow,有下面集中方式可以选择:

  • 从源代码编译tensorflow,开启cuda的支持,顺便可以做一下优化编译。

    • 这个方案比较但疼的是tf的代码在google的服务器上,国内需要梯子才能下载,而且编译要几个小时,很麻烦,不太推荐。
  • 使用nvidia-docker,这是个很不错的主意,而且还能提供环境隔离等,并且不限host机的cuda环境,因为只跟docker内部的cuda的环境有关。

    • 这个方案安装nvidia-docker已经简单很多了,几乎是傻瓜式操作,但是docker的使用还是有些复杂,而且真心不如在本地直接安装方便好用,值得考虑,但是这里不推荐。有兴趣的可以参考我的另一个blog。
  • 使用自带cuda支持的非官方编译tensorflow,有很多热心网友提供了自己编译好的支持cuda10的tensorflow。

    • 这种热心网友不多,而且人家编译好的tensorflow未必适合你的机器,例如compute capability不兼容等问题。而且,如果碰上一个别有用心的网友,编译好的tf里面带一些恶意软件也不一定。所以慎重考虑这种方式。

如果是tensorflow1.12之前的版本,倒是可以考虑tinymind提供的预编译版本tensorflow。到这里可以下载。

注意,compute capability是api版本,跟算力无关,可以到这里查找你的显卡对应的compute capability。

tf官方放在pypi里面的tensorflow-gpu从1.7版本开始就默认开启了avx2的指令集优化,如果电脑的cpu型号比较老,例如e3 v2系列的cpu,安装完成之后,运行的时候会出现段错误之类的问题,这种情况只能考虑自己编译tf或者换cpu了。TinyMind小哥提供的版本是带着avx2指令集优化的。

曾经,我没得选择,只能拜托TinyMind的技术小哥,每次tensorflow出新版都编译一堆不同版本的。

不过最近出的Tensorflow版本似乎都跟cuda版本跟的比较紧,别问我怎么知道的,试出来的。

所以现在直接pip安装就可以了

 

pip3 install tensorflow-gpu

注意:这里安装的是tensorflow-1.14.0,如果你参考这个教程的时候,装得不是1.14.0版本,那么你还得自己试一下他是不是能跟cuda版本匹配。

安装mxnet

这里就得赞许一下mxnet社区的亲们,专门提供了各个不同cuda版本下编译的python包,用相应的数字区别,而且他们的python包里面其实是自带了对应的cudnn的,所以只装cuda也是可以用的。

 

sudo aptitude install libgfortran3 # 一个依赖库,必须装一下
pip3 install mxnet-cu101mkl

安装pyTorch

貌似官方还没有给出cuda10.1下的版本,可以去官方社区多盯着点。或者可以考虑先用cuda10的用着。

pyTorch官网:https://pytorch.org/

测试安装

Tensorflow

balabalabala

mxnet

balabalabala

pyTorch

balabalabala

总结

个人比较喜欢mxnet,他的社区和学习资料都是中文为主的,对国人很友好。而目前发展势头最猛的pyTorch也是很值得期待的,特别是1.0发布之后,有facebook这棵大树在后面,整个生态也都在完善起来。另外,虽然有各种蛋疼的问题,但是目前用户群最广,文档资料最齐全,model-zoo最大的仍然是tensorflow。而且有slim这样的工业级框架加持,tf绝对是大多数场景的不二之选。

展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页