1 簡述
最近需要在 CentOS7 linux 服務器上配置深度學習的訓練環境。
那麼,該怎麼做呢?
對於一臺服務器,首先得實現連網,然後進行遠程登陸。
其次,搞清楚安裝什麼軟件,如何安裝,有哪些依賴項需要提前安裝。
最後,需要進行簡單的測試驗證是否成功安裝。
難點,一般公司的服務器可能不通外網,不能使用那些一鍵安裝指令。
基於服務器的配置(2cpu,8gpu),我選擇 tensorflow-gpu1.9、cuda9、cudnn7、anaconda3-4.3、python3.6 構建整個深度學習的訓練環境。
接下去,我將逐步介紹主要的操作。
2 軟件安裝
2.1 實現服務器的遠程連接
具體參照我之前的博文win10 用 Cecure CRT 遠程連接 CentOS7 linux報錯:The remote system refused the connection.,主要配置 /etc/sysconfig/network-script 目錄下的網卡配置文件。
2.2 安裝 anaconda
anaconda 用於方便地管理 python 三方庫。
下載鏡像文件(sh文件),放到 /usr/local/src 文件夾下(你也可以選擇其他文件夾)。
- 詢問是否接受協議(輸入q,迅速跳過文字),輸入yes
- 詢問安裝路徑,輸入/opt/anaconda3
- 詢問路徑.bashrc(yes表示當前用戶有效),輸入no
設置環境變量:
- 輸入 vim/etc/profile
- 編輯文件,輸入:
export ANACONDA_HOME=‘/opt/anaconda3’(安裝路徑)
export PATH=$ANACONDA_HOME/bin:$PATH
驗證是否成功安裝:終端輸入 python,出現以下顯示即爲成功安裝:
2.3 安裝顯卡驅動
lspci | grep -i NVIDIA
- vi /usr/lib/modprobe.d/dist-blacklist.conf
- 將nvidiafb註釋掉,#blacklist nvidiafb
- 然後添加以下語句:
- blacklist nouveau
- options nouveau modeset=0
接下去重建 initramfs image:
- mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
- dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
最後檢查是否屏蔽成功 :
輸入:lsmod | grep nouveau,無輸出表示屏蔽成功。
2.4 安裝 CUDA
sh 指令安裝
安裝位置:推薦 /usr/local/cuda
- 接受協議
- opengl:no
- x configuration:no
- tookit:yes
- symbolic:yes
- samples:yes
安裝完顯示:
修改環境變量:
- 輸入:vim ~/.bash_profile
-
在export下方輸入:
-
export PATH="/usr/local/cuda-9.0/bin:$PATH"
- export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH"
-
運行文件,輸入:source ~/.bash_profile
檢查是否成功安裝,輸入:nvidia-smi,顯示:
輸入:nvcc --version,顯示:
2.5 安裝 cudnn
cudnn 是個加速包,沒這個 gpu 版的 tf 還是不能跑。
下載鏈接:https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-92
需要註冊,才能下載。推薦放置目錄:/usr/local/src
安裝:
- 解壓文件,輸入:
tar xvf cudnn-9.2-linux-x64-v7.6.4.38.tgz
- 解壓的文件在cuda目錄(解壓時候自己創建的/usr/local/src/cuda
)下面
- 複製到/usr/local/cuda目錄:
- cp /usr/local/src/cuda/include/* /usr/local/cuda/include
- cp /usr/local/src/cuda/lib64/* /usr/local/cuda/lib64
2.6 安裝 tensorflow-gpu
安裝 tf-gpu 版需要一些依賴包。安裝過程提醒缺啥手動補齊。
一些依賴包有編譯好的輪子,那就直接用,把輪子裏面 lib 路徑下的東西放到你安裝的 anaconda 目錄下,anaconda3/lib/python3.6/site-packages。裝完 conda list 顯示的還是舊版本,pip show xxx,纔是新的版本。
野生未編譯的輪子可以統一下載到: /usr/local/src 下面。
-
./configure --prefix=/usr/local/src/xxx
- make
- make install
安裝 tf 的過程還是採了不少坑,主要體現在野生輪子編譯 gg,總是莫名其妙的錯誤,後來發現公司鏡像有編譯好的輪子,真香。安裝完 tf 後,import 的過程中也踩了不少坑,經常爆出缺乏 xxxx.so 文件,似乎是路徑設置之類的問題,把 cuda lib64 下面所有的包放到 /lib64 下面了事。總之,黎明前的黑暗還要堅持堅持。
最後看到 import 成功後,不要激動,萬一成功的是 cpu 版呢..........這是我最後採的那個坑。
爲啥會踩坑,因爲第一次安裝 cuda 的時候選擇顯卡驅動,但是不知咋搞的,後來驅動失效了.......
輸入下面的代碼,出現了 cpu 版,,,,這,,,,跑車愣是開到馬路上了,,,,1公里10個紅燈教你做人。
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
最後總結,無論配置什麼環境,要耐心仔細。只要功夫深,鐵杵磨成針。