- 这篇文章的主要内容是:安装TensorFlow2过程中出现的问题及解决方案
- 如果你系统有多个cuda版本或者Tesla(需要专门的显卡驱动),可以供参考,因为这些情况笔者没有操作过,不能乱讲。下面针对大众化的GeForce显卡的安装
- 笔者显卡是RTX2060,如果你和笔者一样,直接跟着走,我希望不浪费您的时间。如果我写了注意两字的地方,那可能需要引起你的重视,至少我是仔细思考过的。装最新的2.2吧,因为有mxnet用的CUDA10.0.我嫌麻烦,就没有用最新的了。
- 对于环境有python2,python2,anaconda,miniconda,甚至还有不同深度学习架构mxnet,tensorflow, caffe等等,不要卸载保留一个啊,对下面的TensorFlow2配置没有任何影响,请放心。
- 对于Ubuntu而言,偶数版本是长期支持的稳定版本(16, 18),不要下载奇数的,那只是实验品。尽量不要选最新的,小白就不要去折腾,选择一年前的偶数版本哈。
- 对于mxnet的安装,笔者更新Ubuntu16.04和Windows10,可以参考下,有些地方还是很相似的
mxnet(动手学深度学习) Ubuntu安装及注意事项(CPU/GPU)
mxnet(动手学深度学习) Windows10安装及注意事项(CPU/GPU-cu100)
先看看我的,下面是版本要求,务必满足对应的条件
注意:从图上可以看出cuDNN>7.4,CUDA=10.0,根据实际情况,做相应改变,下面是官网安装链接
官网的安装指导 https://tensorflow.google.cn/install
目录
- 1 快速下载Anaconda3/Miniconda
- 1.1 进入anaconda的环境
- 1.2 为新的TensorFlow2创建一个新的虚拟环境
- 1.3 配置新的apython环境
- 1.4 国内用户,加速apip的下载
- 2 显卡问题
- 2.1 Nvidia显卡,CUDA,CUDNN?
- 2.2 我大致把显卡安装分为几种情况
- 2.2.1 既没有N卡驱动,也没安装CUDA
- 2.2.2 Tesla有专门的驱动
- 2.2.3 有多个CUDA版本
- 2.2.4 需要升级或降级驱动,自行想办法
- 3 有疑问请留言
1 快速下载Anaconda3/Miniconda
高效是我们最喜欢的,下载太慢很头疼。为此,我给大家推荐清华镜像源,速度-你网速有多快下载就有多快,给大家一个思路,想要下载什么软件可以先到清华镜像源上搜索下,没有的话再到官网下载。
清华镜像源: https://mirrors.tuna.tsinghua.edu.cn
选择一个合适的版本,右键复制链接,用wget即可
注意:尽量选择最新的版本,TensorFlow2要求还是较高的;尽量不要在root下安装,直接sudo就好了,如果不可执行,记得加上+x的权限
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.02-Linux-x86_64.sh
/Anaconda3-2020.02-Linux-x86_64.sh
注意:
- 推荐用Anaconda而不是Miniconda,因为假如瘦conda没有相应的软件,会在线下载,有些麻烦啊。
- 注意:安装到最后一定要选yes,将conda加入环境变量中。更新环境变量直接输入bash即可。
1.1 进入anaconda的环境
方法: bash
或者 source ~/.bashrc
,看见前面多了一个base就进入anaconda的环境了
1.2 为新的TensorFlow2创建一个新的虚拟环境
为什么大家都用anaconda等包管理器呢?它确实非常方便,我想有两个主要原因
- 方便用conda或pip安装,升级,卸载
- 可以共存不同深度学习架构,很清晰管理所需的python版本
方法:
注意:务必执行上面bash
或者 source ~/.bashrc
。
从最开的图片可以看出,待安装TensorFlow2的python有个范围,这里选择3.7是较好的,如果你支持最新的也不碍事,比较久的显卡选择合适的替换3.7
提示选择yes即可。
conda create --name apython python=3.7
注意:apython可以随便取,生成路径在安装anaconda目录下的envs文件夹中,apython这个生成文件夹大概有200M,安装完成后有1.6G
1.3 配置新的apython环境
到自己根目录(~),也就是一个cd,添加如下代码到.bashtrc
路径就是生成apython下的python3和pip,做适当修改。
注意:shell脚本中尽量不要多打空格,有些伙伴喜欢空格,空格可能导致语法出错,尽量不要用空格。感兴趣的,可以试试加上空格
alias apython="/home/topeet/anaconda3/envs/apython/bin/python3"
alias apip="/home/topeet/anaconda3/envs/apython/bin/pip"
记住, 修改.bashtrc
后要进行bash
下或者source.bashrc
,不然不会生效。
这里添加了pip,给它一个假名apip
,以后执行关于这个TensorFlow2的一些软件更新都要用假名apip
,它指示结果放在apython。不可执行pip或pip3这个是改的系统的,而不是我们需要TensorFlow2。下面可以看到所有关于pip都换成了apip。这就是conda的优势啊。
1.4 国内用户,加速apip的下载
apip速度很慢,长时间下不下来就会报错,执行下面的第一句即可。
apip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
取消可以使用
pip config unset global.index-url
2 显卡问题
2.1 Nvidia显卡,CUDA,CUDNN?
这里有必要解释三个名词的含义,不要糊里糊涂的乱用命令啊。
Nvidia显卡: 你买的GPU需要驱动吧,没有驱动电脑是不认识的,当然驱动是官方提供的,任何设备都需要驱动,没有驱动不工作。
CUDA:是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。也就是说CUDA是NVIDIA推出的并行架构,只有买它的产品才能获得这种"售后"。深度学习中,也叫做N卡,称之为GPU。不是它的产品被叫做CPU版本,当然并行架构又不是只有CUDA,还有OpenBlas(免费),intel(KML 收费),换句话说,没有买N卡的电脑也可以并行加速,这里讲N卡。注意: 只有驱动装好了,才能装CUDA啊。
CUDNN:在CUDA基础上,进一步实现深度神经网络GPU加速,NVIDIA推出了CUDNN,它强调性能、易用性和低内存开销。Tensorflow、caffe, mxnet等都支持。这里就不讲了,感兴趣的可以百度下。注意: 只有装好了CUDA,才可以弄CUDNN。
2.2 我大致把显卡安装分为几种情况
2.2.1 既没有N卡驱动,也没安装CUDA
这种情况是最常见的,对于 Ubuntu16.04刚安装好,没有显卡驱动,此时是集显在工作。这时很容易搞定。本文专注TensorFlow2,所以你要明确你的显卡支持CUDA10吗?下图是一个参考。
可以用nvidia-smi
查看,没有正常的输入的话,就是显卡驱动都没有,符合这里的情况。
CUDA各版本下载地址 https://developer.nvidia.com/cuda-toolkit-archive 选择CUDA10.0,按照下面选择,下载runfile(我知道还有其他方法,这么做是很快的),文件比较大,因为里面有驱动和CUDA10.0 . ,这里有竟然还支持14,印证了偶数版本是长期为顶支持的,至少支持8年。
下载方法,喜欢命令的用wget,用浏览器下载也行,反正不限速。
安装很简单,先给它一个+x的权限,接着执行。或者bash sh xxxx
你可以通过Ctrl+C
跳过文档的阅读,接受它一些条款。实在怕麻烦,全部选y。
注意:有Drive的地方一定选y,CUDA10.0也要选y,location不要变选y可以用nvidia-smi
查看,就有输出了
将CUDA的lib64加入环境中,和上面类似,不要忘了bash,末尾添加一行
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-10.0/lib64
如果后面出现问题bin目录也加入进去,如下,一般不用这么做, 一般是出现动态库连接问题,也有用ldconfig解决问题,上面用LD_LIBRARY_PATH也可以,因为你不是在编译原源码。。
export PATH=${PATH}:/usr/local/cuda-10.0/bin
还需要装cuDNN7.4,至少是cuDNN7.4,直接装最新的,满足最低的条件即可。
cuDNN下载 https://developer.nvidia.com/rdp/cudnn-download 需要注册账号,可以用QQ/微信快捷登录,速度很快。毕竟黄教主还是照顾我们的。
选择cuDNN Library for Linux
安装就是复制文件,细心操作
tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
sudo cp cuda/include/cudnn.h /usr/local/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
最后看看结果
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
安装tensorflow-gpu==2.0.0,其他版本修改版本号
apip install tensorflow-gpu==2.0.0
提前输入conda activate apython
,测试
提前输入conda activate apython
,用Pycharn自动导入TensorFlow2,此时打开Pycharm,如下,要在激活的apython中打开Pycharm。
如下选择,如果不自动出现,就自己选择,下图较浅的字。
2.2.2 Tesla有专门的驱动
和上面类似。下载合适的驱动,cuda安装不一样哈,一定要加版本号,否则是最新版,无意义。
sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-10.0
2.2.3 有多个CUDA版本
多个CUDA版本是可以共存的,和上面一摸一样,可以不卸载其他的,程序运行只关心我的版本能不能找到。
2.2.4 需要升级或降级驱动,自行想办法