深度GPU环境,tensorflow/pytorch/mxnet的pip安装,非源代码编译,基于cuda10/cudnn7.4.1/ubuntu18.04.md

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。作者下载的是deb(local)的版本,这是一个deb文件,装好之后,就可以将整个cuda10的仓库放在本地,省去在线下载的麻烦,一定要看清楚,不要下载错了。

文件名为:

cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb

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

下载cudnn

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

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

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

文件名为

libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb

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

安装cuda库

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

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

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

安装nvidia驱动

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

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

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

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

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

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

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

sudo reboot

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

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

安装cuda

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

sudo aptitude install cuda-runtime-10-0 --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.4.1.5-1+cuda10.0_amd64.deb

安装tensorflow

tensorflow的安装碰到了一些小问题,目前tf官方最新版本的1.12只支持cuda9.2的环境,并没提供官方的cuda10支持。所以想要在我们现在已经装好的环境里面使用tensorflow,就有下面三种方式了:

  • 从源代码编译tensorflow,开启cuda10的支持,顺便可以做一下优化编译。
    • 这个方案比较但疼的是tf的代码在google的服务器上,国内需要梯子才能下载,而且编译要几个小时,很麻烦,不太推荐。
  • 使用nvidia-docker,这是个很不错的主意,而且还能提供环境隔离等,并且不限host机的cuda环境,因为只跟docker内部的cuda的环境有关。
    • 这个方案安装nvidia-docker已经简单很多了,几乎是傻瓜式操作,但是docker的使用还是有些复杂,而且真心不如在本地直接安装方便好用,值得考虑,但是这里不推荐。有兴趣的可以参考我的另一个blog。
  • 使用自带cuda10支持的非官方编译tensorflow,有很多热心网友提供了自己编译好的支持cuda10的tensorflow。
    • 这种热心网友不多,而且人家编译好的tensorflow未必适合你的机器,例如compute capability不兼容等问题。而且,如果碰上一个别有用心的网友,编译好的tf里面带一些恶意软件也不一定。所以慎重考虑这种方式。

跟TinyMind的小伙伴打了个招呼,技术小哥给提供了一个编译版本的Tensorflow,到这里下载一个编译好的tf1.12。

GPU wheels for TensorFlow 1.12, built by TinyMind, the cloud machine learning platform.

To use the wheels on your own machine, Intel Broadwell or later CPU, and Nvidia computing capability 3.7 or later GPU with CUDA 10.0 and cuDNN 7.4 are required.

We use Compilation flags -march=native in our Broadwell CPU machine. Built for Ubuntu 18.04 LTS .

This version is optimized for compute capabilities 3.7 (K80, AWS P2/GCP), 6.0 (P100, GCP), 6.1(GTX1050/1060/1080/1080Ti) and 7.0 (V100, AWS P3).

TensorRT is not supported.

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

文件名为:

tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl

下载完后,重开一个终端,输入:

pip3 install tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl

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

安装mxnet

重开一个终端,输入

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

安装pyTorch

重开一个终端,输入

pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp36-cp36m-linux_x86_64.whl
pip3 install torchvision

这个安装命令是pyTorch官方给的,官方很贴心的给出了基本所有可能用到的环境(conda,pip,windows,linux)下的安装命令。比tf社区强多了。

测试安装

Tensorflow

mxnet

pyTorch

import torch
x = torch.rand(5, 3)
print(x)

torch.cuda.is_available()

总结

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容