1. 程式人生 > >Fedora27搭建GPU版TensorFlow

Fedora27搭建GPU版TensorFlow

DL環境搭建

主機:華碩(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版本,這裡沒有坑,安裝很順利。
cuda9.0

安裝cudnn

與cuda版本相配的cudnn從這裡下載
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思享實驗室一起成長,吃喝玩樂,享受知識。