Ubuntu18.04完美搭建Tensorflow-GPU1.8
0.导语
这是18年的最后一个工作日,为了这篇文章耗费了半天的时间来琢磨!
关于文章更新,后面不能保证每天一篇了,因为要放假回家了,哈哈!
18年回顾
光城
请输入
文章分享 互促共进
坚持分享,互促共进
Persist in sharing and promote mutual progress
共建共助
19年展望
光城
论文复现 刷爆offer
请输入
坚持刷题,直通Offer
Stick to the brush, go straight to Offer
共助刷题
今天这篇文章主要讲的是,我将我自己的系统全部删除掉,然后装上一个单系统,Ubuntu18.04!
然后在Ubuntu上搭建深度学习环境!
本次搭建环境,主要是在Ubuntu18.04版本,关于Centos系统搭建深度学习环境昨天也尝试了,驱动与cuda都装成功了!但可惜电脑莫名的启动不了了,然后就换成这次的Ubuntu了,总结了一下,发现Ubuntu比Centos简单了很多!
有时需要对自己狠一点,不留后路,就像这次换系统一样,全部卸载掉,只保留一个单Linux系统,让自己在Linux上重燃激情与活力,不断磨炼自己的学习毅力与能力!
1.驱动
1.1 检查
配置深度学习GPU环境之前,首先了解一下自己的GPU是否是CUDA-capable!
lspci | grep -i nvidia
输入上述命令,会看到如下输出:
如果有,则支持,否则不支持!
1.2 禁驱动
不管是centos还是ubuntu系统,系统都会自带nouveau驱动,而这个驱动会影响后面的cuda安装,不当操作会出现黑屏现象!
现在来查看一下nouveau设备有没有,输入下面命令,如果有输出,则说明这个驱动正在加载!
lsmod|grep nouveau
我们接下来需要做的工作就是禁用这个驱动!
编辑blacklist.conf
配置文件
sudo gedit /etc/modprobe.d/blacklist.conf
尾部追加:
blacklist nouveau
options nouveau modeset=0
更新配置文件
sudo update-initramfs -u
再次查看驱动是否被加载
lsmod | grep nouveau
上述这个操作不能彻底禁用nouveau,则移除nouveau.ko与nouveau.ko.org文件即可!
如下操作:
cd /lib/modules/4.15.0-29-generic/kernel/drivers/gpu/drm/nouveau
sudo rm -rf nouveau.ko
sudo rm -rf nouveau.ko.org
上述4.15.0-29不一定一致,这里直接tab补全就可以了,然后其他的同上!
随后,在做更新
sudo update-initramfs -u
再检查
lsmod | grep nouveau
如果还是有输出,则重启即可,否则没有输出,表示禁用成功!
1.3 安装nvidia驱动
上述原装驱动卸载后,开始装nvidia驱动!
-
卸载原有nvidia驱动
sudo apt-get remove --purge nvidia-*
-
安装驱动
有两种方式安装:
第一种方式,直接打开“软件和更新”,然后找到附加驱动,直接选择nvidia驱动安装即可,但是不幸的是网速比较慢,容易出错,所以不建议这种方式安装,我第一次瞎搞,就这样搞,是不行的!
第二种方式,也是我建议的方式:
首先确定自己所需要安装的驱动版本:
ubuntu-drivers devices
会看到:
driver : nvidia-340 - distro non-free
driver : nvidia-driver-390 - distro non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
然后来安装驱动,一般看第二行,我们看到有个英文单词recommended,表示建议安装驱动!
sudo apt-get install nvidia-driver-390
上述一键安装即可,安装完后,测试:
nvidia-smi
输出:
若显示如上表,则表示驱动nvidia安装成功!
2.Cuda
2.1 版本
关于版本,我选择Cuda9.0!
下载地址:
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=runfilelocal
进入上述下载地址后,我们发现选择的Ubuntu系统支持到17.04,我当时也纳闷了,没有18.04,那怎么搞呢?
想了半天不管了,最后果然,没得影响,所以直接按照我下面勾选的下载安装即可,不用纠结!
2.2 安装
输入下面命令,进行安装:
sudo sh cuda_9.0.176_384.81_linux.run
中间会提示是否为NVIDIA安装,由于前面安装过了,所以选择no,其余默认即可,安装过程,如果修改了安装路径,请记住,后面配置需要用到!
2.3 环境变量
配置环境变量
sudo gedit /etc/profile
尾部追加
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64$LD_LIBRARY_PATH
上述保存后,然后重启电脑!
2.4 测试Cuda
依次输入下面命令
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
如果显示GPU相应信息,则成功!
如下图所示:
额外的库文件安装
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
2.5 动态链接
编辑~/.bashrc文件
vi ~/.bashrc
尾部追加
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
打开环境配置文件
sudo gedit /etc/profile
尾部追加
export PATH=/usr/local/cuda/bin:$PATH
创建链接文件
sudo gedit /etc/ld.so.conf.d/cuda.conf
添加
/usr/local/cuda/lib64
执行生效
sudo ldconfig
3.CudNN
3.1 版本
cudnn-9.0-linux-x64-v7.tgz
下载地址:
https://developer.nvidia.com/cudnn
需要注册!
3.2 安装
解压并安装
tar -xzvf cudnn-9.0-linux-x64-v7.tgz 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
更新链接
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.0.3 # 自己查看.so的版本
sudo ln -sf libcudnn.so.7.0.3. libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig
4.Anaconda3
4.1 版本
版本为:
Anaconda3-5.2.0-Linux-x86_64.sh
下载地址:
https://repo.continuum.io/archive/
这个5.2.0有bug!建议改为5.3以上!
4.2 安装
bash Anaconda3-5.2.0-Linux-x86_64.sh
一直选择默认,回车就行!
中间的一个安装注意点:是否选择添加环境变量到~/.bashrc,选择是就可以了!
最后执行
source ~/.bashrc
4.3 测试
输入python
显示上述Anaconda,则表示安装成功!可以看看conda命令是否可以使用!
5.Tensorflow-GPU
5.1 版本
版本:tensorflow-gpu-1.8
5.2 安装
直接输入:
conda install tensorflow-gpu==1.8
最后发现,直接输入pip就可以了,所以上述换成:
pip install tensorflow-gpu==1.8
两者区别是,cond安装会更新包,pip则不会!
6.测试
依次输入如下命令:
import tensorflow as tf
a = tf.constant([1.0,2.0,3.0],name='a')
b = tf.constant([3.0,4.0,5.0],name='b')
c = a + b
sess = tf.Session()
print(sess.run(c))
测试结果如下图:
看到[4. 6. 8.],并看到自己的GPU设备,测试成功!
但是发现了一个小的bug,上面导包的时候有个警告,这个可以忽略不计,但是为了追求完美,最后的解决方案是:重装h5py即可!
上图这个警告是h5py与numpy不兼容,我卸载后,然后重装,警告解决!
重装解决如下图:
导包后,没警告了,很完美!哈哈,终于安装完毕!
7.总结
由于cuda8.0以上不支持gcc5.0以上,所以要保证自己电脑的gcc与g++版本!将这两个进行降级,有关解决问题方案,网上很多,如果安装过程碰到可以留言,也可以谷歌!
希望通过本文,大家可以对深度学习环境有个更深刻的认识,并且深入了解Ubuntu系统的操作!