深度學習裝機配置流程
0.配置列表
序號 | 產品名稱 | 品牌、規格型號 | 數量 |
---|---|---|---|
1 | CPU | INTEL i9 7920X | 1 |
2 | CPU散熱器 | 美商海盜船H110I | 1 |
3 | 主板 | Asus/華碩 WS X299 SAGE | 1 |
4 | 內存 | 美商海盜船 復仇者LPX DDR4 3000 16GB | 4 |
5 | 固態硬盤 | 三星860 1T | 1 |
6 | 機箱 | 美商海盜船(USCORSAIR) AIR540 | 1 |
7 | 顯卡 | 英偉達(NVIDIA)TITAN Xp 顯卡 | 4 |
8 | 電源 | EVGA 額定1600w 1600T2電源 | 1 |
1.BIOS設置
在裝機過程中,ubuntu16.04 始終安裝不上去,常常是莫名其妙的重啓以及一些報錯。例如報錯內容是Error parsing PCC subspaces from PCCT,嘗試網上各種解決方法依然無法解決,因此放棄嘗試。懷疑問題的原因是主板和系統兼容性的問題,故安裝ubuntu18.04系統。
在主板的BIOS關閉快速啓動和安全啓動。(電腦開機時,按F2進入BIOS設置)
2.系統安裝
ubuntu18.04系統是通過U盤啓動盤的方式進行安裝,具體步驟參考網絡資料。安裝過程中是選擇聯網下載更新並且還下載第三方軟件(當時是考慮到安裝時直接下載更新,可以讓系統更好地支持主板)。安裝時選擇手動分區,分區設置參考如下:
EFI分區:500-1000M
swap分區:8G一級以上和內存同樣大小;8G以下分內存兩倍
其餘全部分給根分區
3.深度學習環境配置
深度學習環境:CUDA9+CUDNN7.4+TensorFlow1.12
整個深度學習環境的配置過程都是直接在圖形工作站上直接操作完成。參考文章:https://zhuanlan.zhihu.com/p/50302396 和 https://blog.csdn.net/weixin_41863685/article/details/80303963
3.1安裝ssh
安裝ssh是爲了之後可以遠程連接工作站使用。
sudo apt-get install openssh-server
3.2安裝顯卡驅動
默認安裝的顯卡驅動不是英偉達的驅動,所以先把舊得驅動刪除掉。
sudo apt-get purge nvidia*
添加Graphic Drivers PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
查看合適的驅動版本:
ubuntu-drivers devices
圖中可以看出推薦的是最新的415版本的驅動,安裝該驅動:(即安裝推薦版本的驅動,可能具體的驅動版本不同,請根據實際調整)
sudo apt-get install nvidia-driver-415
安裝完畢後重啓機器:
sudo reboot
重啓完畢運行
nvidia-smi
生效的顯卡驅動會有如下的輸出:
3.3安裝依賴庫
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
3.4GCC降低版本
CUDA9.0要求GCC版本是5.x或者6.x,其他版本不可以,需要自己進行配置,通過以下命令纔對GCC版本進行修改。
- 版本安裝
# 版本安裝:
sudo apt-get install gcc-5
sudo apt-get install g++-5
- 通過命令替換掉之前的版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
3.5安裝CUDA9.0
下載網址: https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1704&target_type=runfilelocal
版本選擇: linux–x86-64,Ubuntu–17.04,runfile(local),下載Base Installer和4個Patch
進入下載目錄,依次執行命令:(注意:在安裝過程中會提示是否需要安裝顯卡驅動,在這裏要選擇n,其他的選擇y或者回車鍵進行安裝)
sudo sh cuda_9.0.176_384.81_linux.run
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run
sudo sh cuda_9.0.176.4_linux.run
在~/.bashrc 中設置環境變量:
sudo vi ~/.bashrc
在最後添加:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
修改完bashrc之後,需要使配置生效,使用命令:
source ~/.bashrc
或者,重新啓動工作站:
sudo reboot
重啓後,測試CUDA是否成功(此步驟可以省略)
cd ~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery
make -j4
sudo ./deviceQuery
若會輸出相應的顯卡性能信息,Result = PASS,表明CUDA安裝成功。
3.6安裝CUDNN
下載網站:http://link.zhihu.com/?target=https%3A//developer.nvidia.com/rdp/cudnn-download 需要登錄,同意條款之後纔可以下載。
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.0 —— cuDNN Library for Linux
下載時候保存爲 cudnn-9.0-linux-x64-v7.4.2.24.tgz
然後,將包解壓,並拷貝到相應的系統CUDA路徑下。注意最後一行拷貝時 "-d"不能少。
tar -zxvf cudnn-9.0-linux-x64-v7.4.2.24.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -d cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r/usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
沒有報錯就是全部安裝完成了。
3.7安裝Anaconda
下載網站:https://www.anaconda.com/distribution/
然後,進入Anaconda的安裝包所在目錄,運行命令: (以Anaconda3-5.3.0-Linux-x86_64.sh爲例)
bash Anaconda3-5.3.0-Linux-x86_64.sh
更改pip 和 conda爲國內的源
由於國內訪問pip和conda比較慢,建議更改爲國內的源:
a.更改pip的源爲阿里雲:
mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/
EOF
b.更改conda的源爲清華大學:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
3.8安裝 tensorflow1.12
tensorflow1.12 對應的python版本是3.6,故創建pyhton3.6的虛擬環境
conda create --name tf python=3.6 #創建tf環境
conda activate tf #激活tf環境
pip install tensorflow-gpu==1.12 #官網推薦的命令
測試tensorflow是否安裝正確
conda activate tf
python
import tensorflowas tf
hello= tf.constant('Hello, TensorFlow!')
sess= tf.Session()
print(sess.run(hello))
沒有報錯就是配置正確。
keras 和 pytorch 安裝思路類同。
4.遠程登錄設置
4.1非圖形化界面連接
使用Xshell 6 連接遠程工作站,用命令行進行程序編寫。使用 Xftp 6進行本機和遠程工作站的文件交互。
4.2圖形化界面連接
參考文章:https://blog.csdn.net/qq_25556149/article/details/82216190 和 https://blog.csdn.net/clksjx/article/details/83445127
剛開始是參考第一篇文章,安裝了xubuntu的界面,但是個人不喜歡xubuntu界面,故嘗試又恢復到gnome界面,以下流程僅供參考。(圖形化遠程連接,會感覺到明顯的卡頓,但是對於代碼編寫感覺影響不大)
4.2.1ubuntu的設置
安裝 xrdp、tightvncserver
sudo apt-get install tightvncserver xrdp
這裏要注意的是,如果你的系統中支持 Xorg的話,要先安裝 tightvncserver 再安裝 xrdp,因爲這會影響到安裝的xrdp的版本,如果先安裝xrdp再安裝tightvncserver,會出現老版本的xrdp,這裏面沒有Xorg,在筆者的系統中使用Xvnc會出現登錄不上的問題,所以還是使用Xorg好
不安裝xubuntu-desktop,使用gnome(不喜歡xubuntu界面)
echo gnome-session >~/.xsession
修改 /etc/xrdp/startwm.sh 文件
sudo gedit /etc/xrdp/startwm.sh
將最後兩行 test 和 exec 用**#**註釋掉 ,並在最後添加一行內容 gnome-session,如下所示:
然後重啓ubuntu。
4.2.2Windows 10連接ubuntu18.04
打開遠程桌面連接,並輸入工作站的IP,如下圖所示
IP輸入完畢後,點擊連接,然後在登錄界面選擇Xorg,並輸入相應的 用戶名和密碼 即可圖形化遠程連接。
管理員用戶和普通用戶都可使用(4.1的設置是在管理員賬戶下進行的,普通用戶並未在ubuntu中設置什麼)
4.3目前存在的問題
不知道哪裏設置出現問題了,每次不管是管理員用戶登錄還是普通用戶登錄都會出現以下兩個框
嘗試輸入過相應密碼,但下次登錄時照樣出現。因此,現在使用時,直接都選取消,進行相應的ubuntu桌面。
5.多用戶連接
因爲配置的電腦是多人使用,所以創建了一些普通用戶來供大家使用。
5.1創建用戶
切換到管理員賬戶,執行下面的命令。
sudo useradd -r -m -s /bin/bash spark #創建用戶spark,並生成相應的目錄
sudo passwd spark #爲用戶spark添加密碼
#給用戶設置添加多個用戶組,設置新用戶的主用戶組是iot,iot是管理員的用戶組
sudo usermod -g iot -G qqq,www spark #給spark用戶設置主用戶組iot組,qqq,www附屬用戶組
id spark #顯示用戶信息,查看用戶組設置是否生效
5.2限制顯卡使用
參考文章:https://zhuanlan.zhihu.com/p/23250782
5.2.1限制使用顯卡的數量
這裏將介紹如何在終端處限制顯卡使用的數量,不需要每次在代碼中添加相應的內容。本處添加的內容會在5.3普通用戶.bashrc需要添加的內容章節中重複出現,只需添加一次即可。(可以理解成5.2.1章節的內容是對5.3章節內容的解釋)
使用命令打開當前用戶 ~/.bashrc:
vim ~/.bashrc
添加一下內容:
export CUDA_VISIBLE_DEVICES=2
上述表示,只使用第3號顯卡(顯卡編號從0開始),如果要使用第3,4號顯卡,則內容應爲export CUDA_VISIBLE_DEVICES=2,3
5.3普通用戶.bashrc需要添加的內容
使用命令打開當前用戶 ~/.bashrc:
vim ~/.bashrc
在最後幾行加入以下內容,具體內容請根據實際更改
# only Use GPU 2,3
export CUDA_VISIBLE_DEVICES=2,3
#Write by Alvin. Cuda9.0 Path
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/extras/CUPTI/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
6.Ubuntu使用過程中遇見的問題
6.1tensorflow報錯ImportError: libcublas.so.9.0
試驗tensorflow環境時,報錯:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
解決方法:參考文章https://blog.csdn.net/qq_34374211/article/details/81018320
檢查 /usr/local/cuda-9.0/lib64 下是否有 libcublas.so.9.0,如果有,終端輸入:
sudo ldconfig /usr/local/cuda-9.0/lib64
若用戶權限不夠,請暫時給予 管理員權限 (參考文章:https://blog.csdn.net/m0_37041325/article/details/80516635 )
-
暫時給予管理權限:
切換至管理員用戶,使用命令,打開/etc/sudoers
sudo vim /etc/sudoers
找到這一 行:“root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL”(這裏的xxx是你的用戶名),然後保存。這裏的更改是 立即生效的,無需再重啓電腦。
然後,切換回 xxx 用戶,使用命令
sudo ldconfig /usr/local/cuda-9.0/lib64
最後,將/etc/sudoers 中添加的內容去掉即可。