文章目錄
基本硬件環境
硬件基本信息
硬件 | 型號 |
---|---|
CPU | I7-9700k |
GPU | RTX 2080ti |
內存 | DDR4 2666 16GB*2 |
主板 | ASUS Z390-A |
機箱 | Tt(Thermaltake) 啓航者S5 |
電源 | 海盜船 850W 支持2080ti |
SSD固態硬盤 | 三星 500GB M.2接口 860 EVO |
HHD機械硬盤 | 西部數據 1TB SATA3接口 |
CPU散熱器 | 九州風神 玄冰400 12cm |
機箱散熱器 | 先馬(SAMA) 黑洞 12cm * 3 |
SSH
SSH無密碼登陸
-
安裝SSH Server
Ubuntu 默認已安裝了 SSH client,此外還需要安裝 SSH server:
sudo apt-get install openssh-server
-
登陸本機
ssh localhost
此時會有如下提示(SSH首次登陸提示),輸入 yes 。然後按提示輸入密碼 ,但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。
-
SSH 無密碼登陸
首先退出剛纔的 ssh,回到了我們原先的終端窗口,然後利用 ssh-keygen 生成密鑰,並將密鑰加入到授權中:
exit # 退出剛纔的 ssh localhost cd ~/.ssh/ # 若沒有該目錄,請先執行一次ssh localhost ssh-keygen -t rsa # 會有提示,都按回車就可以 cat ./id_rsa.pub >> ./authorized_keys # 加入授權
此時再用
ssh localhost
命令,無需輸入密碼就可以直接登陸了
安裝驅動
linux安裝NVIDIA顯卡驅動
驅動下載地址 ,下載時切記選擇.run版本,我們下載的版本是NVIDIA Linux-x86_64-430.40.run
安裝驅動之前要安裝其他需要的依賴工具:
sudo apt-get install gcc g++ make
檢測驅動是否成功安裝
方法1:使用nvidia-smi命令測試
英偉達系統管理接口(NVIDIA System Management Interface, 簡稱 nvidia-smi)是基於NVIDIA Management Library (NVML) 的命令行管理組件,旨在(intened to )幫助管理和監控NVIDIA GPU設備。
在終端輸入命令nvidia-smi
方法2:使用nvidia-settings命令
在終端輸入命令nvidia-settings
會調出NVIDIA的驅動管理程序:
如果打開的頁面能夠看到驅動的版本號,如本案例所示爲430.40,則nvidia-setting安裝正常。
搭建深度學習環境
CUDA 10.0安裝
進入CUDA toolkit download官網之後會顯示CUDA最新版本,這個時候先別急着選系統和下載文件類型,先看一下下什麼樣的CUDA版本能夠跟PyTorch適配。
-
[外鏈圖片轉存失敗(img-iwQF93nZ-1567431503797)(https://yalana.oss-cn-hangzhou.aliyuncs.com/2019-9-week1/pytorch%20select.png)]
我們能看到可選擇的CUDA版本只有9.2和10.0,因此我們去CUDA官網下載10.0版本
-
CUDA toolkit起始界面
-
選擇適配的CUDA版本
打開顯示的是最新的10.1 版本,這裏我們選擇“Legacy Releases”查看之前發佈的版本,並如下圖所示選擇“CUDA Toolkit 10.0”版本
-
定製化下載CUDA 10.0
-
安裝CUDA
sudo sh cuda_10.0.130_410.48_linux.run
然後會出現很長的協議書,一直按到最後出現如下需要用戶選擇的界面:
之後,按照提示安裝即可。我依次選擇了:
1 accept #同意安裝 2 n #不安裝Driver,因爲已安裝最新驅動 3 y #安裝CUDA Toolkit 4 <Enter> #安裝到默認目錄 5 y #創建安裝目錄的軟鏈接 6 y #複製Samples一份到家目錄
安裝完成界面(由於我們沒有選擇安裝driver,因此會顯示不完全安裝,但是CUDA toolkit都已成功安裝就可以了):
以及安裝過程中有CUDA location:
在本例中cuda被安裝到的路徑爲
/usr/local/cuda-10.0
-
更改環境變量、創建動態鏈接庫並創建鏈接文件
-
聲明環境變量
$ sudo vim ~/.bashrc
在文件(在用戶目錄下)的尾部,輸入內容如下:
export PATH=/usr/local/cuda-10.0/bin${PATH:+:$PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存退出,並輸入下面指令使環境變量立刻生效:
$ source ~/.bashrc
-
設置環境變量和動態鏈接庫
$ sudo vim /etc/profile
在打開的文件末尾加入:
export PATH=/usr/local/cuda/bin:$PATH
-
創建鏈接文件
$ sudo vim /etc/ld.so.conf.d/cuda.conf
在打開的文件中添加如下語句:
/usr/local/cuda/lib64
保存退出,然後執行
$ sudo ldconfig
使鏈接立即生效。
-
-
檢查CUDA是否安裝成功
nvcc --version
-
CUDA Sample測試
切換到 CUDA 10.0 Samples 默認安裝路徑(即在/home/用戶/NVIDIA_CUDA-9.1_Samples 目錄下), 終端下輸入:
$ cd NVIDIA_CUDA-10.0_Samples $ sudo make all -j4
-
查看CUDA 驅動和CUDA toolkit版本
$ cd bin/x86_64/linux/release $ ./deviceQuery
Q:這個時候存在一個問題 如果CUDA驅動比CUDA版本要高 是否可以支持?
安裝cuDNN
先在NVIDIA官網註冊用戶名和密碼,然後進入cuDNN下載頁面,需要與BUDA10.0環境適配,因此我們選擇下載以下幾項來安裝:
-
首先解壓tgz包
tar -zxvf cudnn-10.0-linux-x64-v7.6.2.24.tgz
-
複製文件到cuda環境
sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
-
安裝deb包
sudo dpkg -i libcudnn7_7.6.2.24-1+cuda10.0_amd64.deb sudo dpkg -i libcudnn7-dev_7.6.2.24-1+cuda10.0_amd64.deb sudo dpkg -i libcudnn7-doc_7.6.2.24-1+cuda10.0_amd64.deb
-
測試是否安裝成功
cp -r /usr/src/cudnn_samples_v7/ ~ cd ~/cudnn_samples_v7/mnistCUDNN make clean && make ./mnistCUDNN
顯示“Test passed!”即測試通過!
安裝Python、Anaconda和Pip
Python
-
下載python 3.7.2 源程序壓縮包
$ sudo wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
-
解壓
$ tar -xzvf Python-3.7.2.tgz
-
配置
$ cd Python-3.7.1 $ ./configure --enable-optimizations
執行上述語句將啓用代碼的發佈版本,可以優化二進制文件以更好的更快的運行,但是需要運行測試,編譯時需要花費一些時間(大約半小時),也可以不進行這一項配置。
-
編譯和安裝Python 3.7.2
$ sudo make $ sudo make install
- Debugging
在執行
$ sudo make install
時出錯-
出現的問題
“zipimport.ZipImportError: can’t decompress data; zlib not available Makefile:1130: recipe for target ‘install’ failed make: *** [install] Error 1“
解決方案
安裝zlib1g-dev
$ sudo apt install zlib1g-dev
-
出現第二個問題
“ModuleNotFoundError: No module named ‘_ctypes’
Makefile:1130: recipe for target ‘install’ failed
make: *** [install] Error 1”解決方案
$ sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev $ sudo apt-get install libffi-dev libssl-dev libreadline-dev -y
然後重新執行
$ sudo make install
,顯示:
-
查看Python版本
$ python --version
Anaconda
Method 1 參考Anaconda快速安裝攻略
由於在官網下載非常慢,並且經常網絡斷掉,因此最好在清華大學開源軟件鏡像站中下載,具體下載鏈接 ,在該頁面滑倒最後可以下載最新版本。本案例選擇下載Anaconda3-5.2.0-Linux-x86_64.sh
版本。
-
進入下載文件的位置
$ cd Downloads/
-
運行.sh文件:
$ bash Anaconda3-5.2.0-Linux-x86_64.sh
-
進入註冊信息頁面,輸入’yes’
安裝過程中會提示
Anaconda3 will now be installed into this location:
/home/silver/anaconda3- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
我們不更改安裝路徑的話繼續輸入
出現如下界面則說明anaconda成功安裝,這裏詢問是否需要安裝VScode,一般不需要的話就輸入"no"
-
將anaconda加入系統環境變量
sudo vim ~/.bashrc
加入:
export PATH=/home/silver/anaconda3/bin:$PATH
-
在終端中輸入
conda info
即可查看詳細信息
如何啓動Anaconda圖形化界面
$ source ~/anaconda3/bin/activate root
$ anaconda-navigator
Method n(官網下載非常慢 不推薦!) 進入Anaconda官網下載頁面
下載相應版本安裝即可:
sudo sh Anaconda3-2019.07-Linux-x86_64.sh
安裝PyTorch
進入PyTorch官網,根據自己的環境來定製化選擇PyTorch下載安裝版本,選好之後複製下方的命令行:
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch
下載完成提示:
安裝Tensorflow
-
首先安裝NVIDIA必要組件:
$ sudo apt-get install libcupti-dev
-
先確保linux上pip可用
$ sudo apt-get install python3-pip python3-dev # for Python 3.x
-
然後用pip3(針對python3.x版本)安裝gpu版本的TensorFlow
$ pip3 install tensorflow-gpu
安裝過程中遇到了兩個錯誤提示:
-
ERROR1:
ERROR: 1.14.0 has requirement setuptools>=41.0.0, but you’ll have setuptools 39.1.0 which is incompatible.
-
出錯原因:setuptools 版本太低
-
解決方案:更新setuptools版本 輸入:
pip install --upgrade setuptools
-
命令執行結果:
-
-
ERROR1:
ERROR: Cannot uninstall ‘wrapt’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
-
出錯原因:不能夠卸載’wrapt’,因爲我們不能準確判斷它歸屬於哪個文件,這將會導致部分卸載
-
解決方案:輸入
pip install -U --ignore-installed wrapt enum34 simplejson netaddr
-
命令執行結果:
-
-
-
此時再重新執行
$ pip3 install tensorflow-gpu
當我們解決完各組件的安裝問題後,即可成功安裝tensorflow,安裝成功界面如下:
-
檢測tensorflow是否安裝成功並查看版本號
import tensorflow as tf print(tf.__version__) ##兩條下劃線
-
在VS Code中運行一個Tensorflow程序
-
案例來自斯坦福大學NLP課程 cs224n Lecture7 參考鏈接
-
程序執行之前需要安裝numpy包
import tensorflow as tf import numpy as np # create data x_data = np.random.rand(100).astype(np.float32) # 隨機生成100個隨機數列 y_data = x_data*0.1+0.3 ###Create tensorflow structure start### Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0)) # W大寫代表可能是權重矩陣,裏面的參數分>別是[1] 代表1維矩陣 ,生成隨機數範圍指定從-1.0到1.0 biases = tf.Variable(tf.zeros([1])) y = Weights * x_data + biases loss = tf.reduce_mean(tf.square(y-y_data)) optimizer = tf.train.GradientDescentOptimizer(0.5) # 0.5代表學習率 train = optimizer.minimize(loss) #訓練的過程就是不斷在最小化損失函數的過程 # deprecated # init = tf.initialize_all_variables() init = tf.global_variables_initializer() ###Create tensorflow structure end### sess = tf.Session() sess.run(init) for step in range(201): sess.run(train) if step % 20 == 0: print(step,sess.run(Weights),sess.run(biases))
-
終端輸出結果
我們在終端執行結果界面可以看到程序已經運行在RTX 2080 Ti上,GPU提供7.5的算力。
-
至此,深度學習環境搭建完成!![撒花]
今天也是一個愛(有)學(耐)習(心)的女孩紙呢嘻嘻~
Reference
我在安裝NVIDIA驅動時也遇到過突然系統重啓進入TUI(文本命令行界面),如果想要進入圖形界面需要Ctrl+Alt+F1
,或者TUI界面下,Ctrl+Alt+F1+F2
一起按一定能進入圖形界面。