centos7使用tensorflow-gpu

一、安装显卡对应的驱动
1.查看显卡信息
lspci | grep -i vga(-i,ignore)

查看显卡信息.png

2.下载显卡驱动的安装文件,访问官网http://www.geforce.cn/drivers
根据显卡型号进行选择,我的显卡在GeForce 10 Series中,如果不知道这个选啥,可以一个一个试一下,选好这个之后,才能在下个下拉列表中找到显卡型号,选择好之后,如下图
选择显卡型号.png

点击开始搜索
选择显卡驱动.png

选第一个最新的就行,点击,会跳转至下载页面,鼠标放在立即下载按钮处,网页左下角会出现下载地址
下载命令wget https://us.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-440.82.run
3.安装编译环境
sudo yum -y install gcc* kernel-devel epel-release dkms 这一步需要注意的是,kernel,kernel-devel,kernel-headers版本必须保持一致,所以可以直接下载和kernel版本一致的kernel-devel和kernel-headers;但是如果直接执行了命令,导致三者版本不一致,可以这样做,来升级内核版本:
1)升级小版本(比如会从3.10.0-1127.el7升级到3.10.0-1127.10.1)
sudo yum list kernel 查看一下最新的小版本是不是和上一步安装的kernel-devel和kernel-headers一致
sudo yum update -y kernel 是的话,执行这一步
2)大版本升级(如果大版本就不一致,则先需要按下面升级大版本):
在这个网址找到对应版本:http://mirror.centos.org/centos/7/os/x86_64/Packages/
下载大版本 wget http://mirror.centos.org/centos/7/os/x86_64/Packages/kernel-3.10.0-1127.el7.x86_64.rpm
进行安装 sudo yum install kernel-3.10.0-1127.el7.x86_64.rpm
(然后如果上面安装的kernel-devel和kernel-headers还包含小版本号,那么就按1再进行小版本升级,直到保持三者一致即可)
补充:删除多余的内核版本(最开始装系统的那个内核版本可能删不掉,因为可能有一些依赖这个内核的东西已经安装了,所以可能会删不掉)
sudo rpm -e kernel-3.10.0-1127.el7.x86_64
4.屏蔽nouveau驱动(该驱动是系统自带的一个显示驱动程序)
sudo vim /etc/default/grub 在GRUB_CMDLINE_LINUX中添加rd.driver.blacklist=nouveau nouveau.modeset=0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg 生成配置
sudo vim /etc/modprobe.d/blacklist.conf 创建blacklist,将nouveau加入blacklist nouveau
5.重新建立initramfs image文件
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
dracut /boot/initramfs-$(uname -r).img $(uname -r)
6.重启(设置secure boot为disabled,不然后面的安装会出现要签名,提示语大致为The target kernel has CONFIG_MODULE_SIG_FORCE set, which means that it requires that kernel modules be cryptographically signed by a trusted key,出现这一步的话,网上找到个解决办法,但是没看懂,供参考哈https://blog.csdn.net/linxxx3/article/details/18620035),选择kernel版本进入系统。
这块禁用,我是惠普的台式机,按f10在安全那块,引导设置什么的,点击会提示一堆红色东西,没事,继续,然后看到安全引导,设为禁用就行了(中文的这个界面反倒一时半会没找着)
7.开机之后确认是否禁用了nouveau;进入字符界面
lsmod | grep nouveau
sudo init 3 (如果不行,sudo systemctl set-default multi-user.target
8.安装显卡驱动(后面那个参数表示,禁用NVIDIA默认的opengl界面,不然可能会影响安装之后的图形界面的分辨率)
sh NVIDIA-Linux-x86_64-440.82.run --no-opengl-files
安装过程中除了ok和accept之外,还有一个关于安装32-bit兼容库的选择,我选择no,yes应该也行的;另一个是安装驱动时不检查x服务的选择,选择no即可。
9.安装完成之后,检查驱动是否安装成功
nvidia-smi
测试驱动是否安装成功.png

二、安装tensorflow-gpu
我想要跑的那个代码readme上说的是tensorflow1.0,所以,我安装1的对应tensorflow-gpu版本,因为后面还要装Bazel,CUDA,cuDNN,所以查看它们的对应关系之后,我选择了tensorflow-gpu==1.13.1版本,对应关系网址:https://www.tensorflow.org/install/source#common_installation_problems

tensorflow-gpu&python&gcc&bazel&cudnn&cuda版本对应.png

检查一下gcc版本 rpm -qa | grep gcc gcc4.8
1.pip install tensorflow-gpu==1.13.1
2.安装bazel
cd /etc/yum.repos.d/
wget https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-7/vbatts-bazel-epel-7.repo
yum install bazel
3.安装CUDA,选择对应版本cuda10.0 https://developer.nvidia.com/cuda-toolkit-archive
cuda10.0->Linux->x86_64->CentOS->7->rpm,获取下载链接
wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel7-10-0-local-10.0.130-410.48-1.0-1.x86_64.rpm
sudo yum install cuda
4.安装cuDNN,这个下载需要登录帐号,因此在网页端进行了下载 https://developer.nvidia.com/rdp/cudnn-archive
注意版本号cuDNN v7.4.2[2018] for CUDA 10.0->cuDNN Library for Linux
tar -xzvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
cp cuda/include/cudnn.h /usr/local/cuda/include/
cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
添加环境变量

vim /etc/profile 
export PATH=$PATH:usr/local/cuda/bin
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH 
export CUDA_HOME=/usr/local/cuda

5.在python中导入tensorflow,导入成功即表明可以使用
这一步出现了这个错,ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory
查看ll /usr/local/cuda-10.0/lib64/libcudnn* 果真没有,因此:
cd /usr/local/cuda/lib64
sudo rm -rf libcudnn.so libcudnn.so.7 (温馨提示:不管照着网上的什么教程,有让删除的,首先备份,保证操作可回溯)
sudo ln -s libcudnn.so.7.4.2 libcudnn.so.7 (注意这个7.4.2是自己下载的)
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig
之后重新测试导入,导入成功!

哈哈,接下来可以试一下跑代码的速度啦!
哦对,主思路参考链接:https://blog.csdn.net/num270710/article/details/89491711
但是我貌似比人家问题多多了
最后一步接近成功的导入错误解决的参考链接:https://blog.csdn.net/weixin_40298200/article/details/79420758
其余问题的解决,中间查了好多,链接可能暂时翻不到了......

你可能感兴趣的:(centos7使用tensorflow-gpu)