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思享實驗室一起成長,吃喝玩樂,享受知識。