Fedora27搭建GPU版TensorFlow
主机:华硕(ASUS)G11飞行堡垒
显卡:GeForce 1070
原操作系统为win10,准备安装Fedora 27,从零开始搭建GPU版TensorFlow。
安装Fedora27
下载ISO镜像并制作U盘启动盘(注意!启动盘一定用官方的制作方法)
我用另一台win10笔记本电脑制作启动盘。官网为windows提供了很傻瓜的安装程序,叫FedoraMediaWriter,以前叫liveusb creator,插一个u盘,打开程序,按步骤走就可以直接制作好U盘启动盘。
安装Fedora
重启计算机,按F8(不同电脑可能不同)选择开机启动项为U盘,安装界面十分友好,跟步骤走即可。先将系统语言改为英文,安装完驱动需要的话再改成中文,避免功亏一篑,血的教训……
Note:我由于今天一天重装了很多linux版本,有deepin、ubuntu、fedora等,有的需要关闭UEFI模式,我不确定这个需不需要,如果报错了,可以往这个方向考虑。我关闭它的方式是:选择Boot->secure boot->key management,把里面所有key都删掉,它就变成disable了。
安装NVIDIA驱动
这是最烦人的,今天安了不下十次……主要参考这里,有一些补充。
-
首先需要到这里,根据自的显卡选择合适的驱动。
选择下载驱动 我的是NVIDIA-Linux-x86_64-390.25.run。
-
在root权限下给NVIDIA-Linux-*.run 添加可执行权限
chmod +x /path/to/NVIDIA-Linux-*.run
上文提到的教程中要更新内核,我更新后安装driver时报了错,后来千辛万苦找到下面的方法,可以指定安装的kenel-devel和header的版本,这样就不用更新,就不会出现gcc版本不匹配的问题。命令如下。
- 安装所需要的依赖
dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r) gcc dkms acpid libglvnd-glx libglvnd-opengl libglvnd-devel pkgconfig
- 禁用开源驱动 nouveau
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
- 修改grub
cd /etc/default
vi grub
找到GRUB_CMDLINE_LINUX,在引号内补充rd.driver.blacklist=nouveau
,注意要加空格后再补充,最后形如GRUB_CMDLINE_LINUX="xxxxxxxxxxx rhgb quiet rd.driver.blacklist=nouveau"
- 更新grub2配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
- 移除xorg-x11-drv-nouveau
dnf remove xorg-x11-drv-nouveau
- 生成initramfs
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
dracut /boot/initramfs-$(uname -r).img $(uname -r)
- 将图形界面改为命令行界面,注意,驱动路径一定不能有中文,否则命令行界面不识别。
systemctl set-default multi-user.target
- 重启
reboot
- 在命令行模式下进入root
- cd到驱动文件所在目录,运行
./NVIDIA-Linux-x86_64-390.25.run
- 一路Accept和yes即可。如果碰到kernel header的错误,更新到最新内核既可。
- 顺利安装完成后,切换回图形界面
systemctl set-default graphical.target
reboot
安装Cuda9.0
注意!cuda9.1与tensorflow1.5目前不兼容,最好安装9.0
到这里下载安装,选择fedora版本,这里没有坑,安装很顺利。
安装cudnn
与cuda版本相配的cudnn从这里下载
需要先注册才可以。
下载完成后,双击解压,然后把include和lib64里的文件复制到cuda相应的文件里,命令如下:
cudnn解压
安到这里就可以松一口气了。
安装Anaconda
到Anaconda的官网下载最新版,我用的python2.7。
选择Anaconda安装完后cd到Anaconda下载目录,使用
sh Anaconda2-5.0.1-Linux-x86_64.sh
没有坑,顺利下载完后输conda发现系统不识别命令,所以最后一定要敲下面的命令使安装生效
source ~/.bashrc
安装TensorFlow
ok,最后一步,安装linux gpu版的TensorFlow。安完以后才发现,cuda9与tensorflow目前不兼容,
兴高采烈地输入命令,发现需要翻墙。蓝灯的linux版本是deb文件,fedora无法运行,需要先用alien将deb转成rpm,然后用rpmrebuild解决文件冲突,这里参考它和它,两者结合解决。下面是详细步骤。
安装Lantern(也可以用清华的镜像,跳过这一步)
- 到官网下载蓝灯
- 安装alien
sudo dnf install alien
- 转化蓝灯
sudo alien -r lantern-installer-64-bit.deb
- 安装rpmrebuild
sudo dnf install rpmrebuild
- 修改lantern文件
sudo rpmrebuild -pe lantern-4.4.2-2.x86_64.rpm
要注释的行
- 输入y,记住result的目录,形如
/root/rpmbuild/RPMS/x86_64/lantern-4.4.2-2.x86_64.rpm
- 重新安装
sudo rpm -i /root/rpmbuild/RPMS/x86_64/lantern-4.4.2-2.x86_64.rpm
- 安装成功,最后蓝灯顺利运行需要在安装libappindicator
sudo dnf install libappindicator-gtk3
打开所有应用,就可以看到蓝灯图标了。
安装TensorFlow-GPU
- 创建conda环境
conda create -n tensorflow pip python=2.7
- 激活环境
source activate tensorflow
- 安装gpu版tensorflow,官网注明了tfBinaryURL,把链接部分替换成最新的URL即可。
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.5.0-cp27-none-linux_x86_64.whl
# 清华镜像
pip install \
-i https://pypi.tuna.tsinghua.edu.cn/simple/ \
https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/gpu/tensorflow_gpu-1.5.0-cp27-none-linux_x86_64.whl
如果出现‘libcudnn.so.7:cannot open shared objct file:no such file or directory’的问题,则需要将libcudnn.so.7加入环境变量
vi ~/.bashrc
在最后一行加入
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
输入source ~/.bashrc
使修改生效。
如果遇到kernel version 390.25.0 does not match DOS version 384.81.0的错误
- 进入multi-user模式
- 卸载nvidia driver
sudo yum remove xorg-x11-drv-nvidia\* kmod-nvidia\*
- 重新下载安装384.90版本的nvidia驱动
- dnf安装cuda
至此,环境搭建完毕。
以上内容送给822实验室,便于深度学习环境搭建
我们的822,我们的青春
欢迎所有热爱知识热爱生活的朋友和822思享实验室一起成长,吃喝玩乐,享受知识。