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相应的文件里,命令如下:

安到这里就可以松一口气了。

安装Anaconda

到Anaconda的官网下载最新版,我用的python2.7。

安装完后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思享实验室一起成长,吃喝玩乐,享受知识。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JarvanMo的IT专栏

Flutter: Failed to notify project evalution listener

又是一个常见的flutter的环境问题,一般发生在引用了plugin之后。因为默认的gradle,kotlin之类的比较旧,而所引用的plugin里面的grad...

2752
来自专栏惨绿少年

awk巩固练习题

第1章 awk数组练习题 1.1 文件内容(仅第一行) [root@znix test]# head -1 secure-20161219 access.log...

2420
来自专栏后端云

Doctor framework

Openstack社区一直没有专门的VM HA的组件来支持VM HA,所以各个厂商有这个需要都自己开发。

1074
来自专栏Script Boy (CN-SIMO)

连接远程数据库ORACLE11g,错误百出!

首先,我已经提前在虚拟机上配置了windows2008+oracle11g,为什么用server2008呢?我没有别的,win10做虚拟机觉得不太好,win7镜...

1400
来自专栏依乐祝

Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)

上一篇文章中,给大家讲解了如何通过 Asp.Net Core Web Api实现图片上传的接口,具体的可以[点这里查看][https://www.cnblogs...

1391
来自专栏Script Boy (CN-SIMO)

连接远程数据库ORACLE11g,错误百出!

客户机中PLSQL DEV访问虚拟机中的ORACLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签...

2650
来自专栏coding

django2实战2.创建博客应用创建应用文章表的字段设计激活应用开启后台将post模型注册到后台自定义文章显示字段增加可选操作

上篇创建了一个项目,项目相当于站点,应用即是独立的功能模块。比如:淘宝是一个完整的网站,即是一个项目。而淘宝下的聚划算属于一个应用

1683
来自专栏JadePeng的技术博客

K8S集群安装

主要参考 https://github.com/opsnull/follow-me-install-kubernetes-cluster

6712
来自专栏数据之美

使用 django-blog-zinnia 搭建个人博客

django-blog-zinnia 虽然小巧,但是具备了个人博客应用的全部基础功能,且具有很高的拓展性,并且开箱即用。以下是官方列出的一些特性: 评论 站...

3339
来自专栏张善友的专栏

基于WAS 部署WCF服务

Windows (Process) Activation Service (WAS)作为 IIS7.0 特有的新增功能,和以前IIS 6.0的功能相比更加强大,...

27010

扫码关注云+社区

领取腾讯云代金券