RTX3090環境安裝及效能測試體驗
最近公司需要自己組裝3090顯示卡,記錄一下裝機踩的坑。
首先安裝Ubantu20.04,進入系統後有配置顯示卡所需環境有幾個需要注意的地方:
一、網路設定
機器沒有無線網絡卡只能使用usb共享手機熱點聯網;需要買外接網絡卡
chrome瀏覽器安裝
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
二、關鍵軟體安裝
anaconda
cuda
cudnn
tensorflow
pytorch
1.anaconda
Anaconda是一個python環境的管理工具,使用它可以很方便對不同python版本的軟體進行管理,所以首先安裝anaconda
下載安裝軟體,可以從
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
下載各個歷史版本的anaconda,我下載的是Anaconda3-5.2.0-Linux-x86_64.sh
下載好之後直接放到ubantu中執行,根據提示選擇就行
環境變數配置
安裝的過程中會提示自動將安裝路徑加入到.bashrc檔案中,所以安裝好後需要使用
source ~/.bashrc
重新整理環境變數。
Anaconda一個非常重要的功能就是可以建立不同的python虛擬環境,使用
Conda info —env命令檢視當前環境
然後使用conda create -n tf1 python=3.6建立一個tf1的虛擬環境
之後可以用conda activate 和deactivate命令開啟和關閉虛擬環境
也可以用conda env remove -n xxx 刪除某一個虛擬環境
同樣的方法建立tf2,以及putorch+python3.8環境
需要注意的是,後面每個虛擬環境裡安裝軟體包則需要用pip命令,而不是conda命令,避免和其他環境起衝突。
一個技巧,在下載包的時候可以加上國內的源,加快下載安裝的進度,需要配置vim /etc/pip.conf
在檔案裡編輯:
[global]
Trusted-host = mirrors.aliyun.com
index_url = http://mirrors.aliyun.com/simple
2.CUDA+CUDNN
CUDA是一種由NVIDIA推出的通用平行計算架構,該架構使GPU能夠解決複雜的計算問題。 NVIDIA cuDNN是用於深度神經網路的GPU加速庫。
從官方安裝指南可以看出,只要把cuDNN檔案複製到CUDA的對應資料夾裡就可以,即是所謂插入式設計,把cuDNN資料庫新增CUDA裡,cuDNN是CUDA的擴充套件計算庫,不會對CUDA造成其他影響。
一般來說,不同系列的顯示卡需要安裝不同的CUDA,網上最新的資料都說3090需要安裝最新的CUDA11.1以及配套的CUDNN8.0.5
從Nvidia官網上下載和作業系統對應的軟體
從網上的各種資料看,大部分主流的資料都說3090的顯示卡需要cuda11.1加上cudnn8,然後tensorflow則需要配最新的tf2.5;還有部分資料說當前匹配不了cuda11.1,需要安裝cuda11.0
但是由於已經習慣使用tf1.x版本,發現需要使用cuda10.0和cudnn7。
所以不確定哪個版本真正的可以使用3090,於是把3個版本都下載下來,然後安裝3個版本,通過命令列切換軟連結。安裝cuda的時候根據提示就行,然後就是安裝完成後配置環境變數,再把cudnn的相關檔案根據網站的提示加到指定的位置。
需要注意的是不同的cuda版本是使用不同版本的gcc編譯的,在安裝的過程中還要對gcc進行升級和降級的操作。
還有一種方案是直接在anaconda的虛擬環境中安裝不同版本的cuda,需要把真實環境中的cuda先解除安裝掉,這個方案也很靈活,但是我已經安裝了cuda,也就沒用這個方案了。
最終可以使用nvidia-smi檢視gpu驅動的情況
然後使用nvcc -V檢視當前的cuda版本
cat cuda/include/cudnn_version.h |grep ^# 檢視cudnn版本
3.測試是否使用gpu加速
主要需要確認一下幾個步驟:
(1)tensorflow能否檢測到gpu裝置
Import tensor flow as tf
print(tf.test.is_gpu_available())
如果為true表示tensorflow安裝成功,且能檢測到gpu裝置
(2)跑訓練模型檢視日誌是否載入cudnn的lib64的相關檔案,如果沒有載入則說明tensorflow版本和cuda版本不匹配
(3)使用nvidia-smi命令監控gpu的利用率,注意是利用率,因為程式跑通可能會佔用gpu記憶體,但是如果沒有看到gpu利用率發生變化則也可能是存在問題的。
三、BERT微調以及預訓練測試
BERT微調主要包括以下幾個步驟:下載預訓練好的bert模型檔案;準備微調的文字;載入模型進行微調。
此次微調使用的是哈工大的預訓練好的中文bert檔案,微調的文字則是做測試用的情感識別的二分類以及句子相似度任務的分類。
上圖是對二分類任務的微調測試,框架使用的是tensorflow2.5,文字按照每條句子進行輸入,跑一條句子是時間平均下來為360ms,與網上相關文章對比發現效能有點偏慢,可能是因為加上了對原始文字進行分詞的時間。
上圖則是一個句子相似度任務的微調測試,每條句子用時差不多268ms,時間比分類任務
少,原因是輸入的文字更短。
由於tensorflow2.0以上版本變化太大,不能很好地相容bert預訓練任務,於是使用pytorch對文字進行預訓練任務測試,測試文字使用的是86000條新聞標題短文字,訓練過程如下圖:
跑完一個完整的資料大概需要68分鐘,每條資料大概46ms,對比網上1080ti每條216ms快了差不多5倍。