動手學深度學習 | 使用和購買GPU | 15
使用GPU
其實如果沒有錢買GPU的話,使用Google Colab也是一個不錯的選擇,大概是10 dollar一個月。
算力其實是很貴的... 利用好算力是一件很重要的事情!
關於Nvidia Driver too old的問題,如果是伺服器的話,這裡不要盲目的去更新顯示卡驅動,這樣子會把別人的環境搞壞的。
正確的方式應該是去安裝適合自己驅動的版本的框架。
# 下面命令來確認cuda的版本,然後在進行相應cuda的下載
cat /usr/local/cuda/version.txt
使用GPU是簡單的,只要把權重copy到GPU上,在把輸入copy到GPU上,就可以在GPU上進行運算了。
購買GPU
GPU的效能主要由以下3個引數構成:
-
計算能力。通常我們關心的是32位浮點計算能力。16位浮點訓練也開始流行,如果只做預測的話也可以用8位整數。
-
視訊記憶體大小。當模型越大或者訓練時的批量越大時,所需要的視訊記憶體就越多。
-
視訊記憶體頻寬。只有當視訊記憶體頻寬足夠時才能充分發揮計算能力。
當然只推薦消費類的GPU(GTX、RTX),對於企業類的GPU這是不推薦的,一般會貴5~6倍。
顯示卡儘量要買新的,因為工藝在進步,新一代對比舊一代,同樣的計算效能,價格會便宜。(電子裝置都是如此,買新不買舊)
整機配置
通常,我們主要用GPU做深度學習訓練。因此,不需要購買高階的CPU。至於整機配置,儘量參考網上推薦的中高檔的配置就好。不過,考慮到GPU的功耗、散熱和體積,在整機配置上也需要考慮以下3個額外因素:
- 機箱體積。顯示卡尺寸較大,通常考慮較大且自帶風扇的機箱。
- 電源。購買GPU時需要查一下GPU的功耗,如50 W到300 W不等。購買電源要確保功率足夠,且不會造成機房供電過載。
- 主機板的PCIe卡槽。推薦使用PCIe 3.0 16x來保證充足的GPU到記憶體的頻寬。如果搭載多塊GPU,要仔細閱讀主機板說明,以確保多塊GPU一起使用時仍然是16倍頻寬。注意,有些主機板搭載4塊GPU時會降到8倍甚至4倍頻寬。
QA
- 如果買GPU的話,視訊記憶體是越大越好嗎?還有什麼評價指標嗎?
當然是越大越好,但是視訊記憶體是一個很貴的事情,視訊記憶體比CPU的記憶體貴。
GPU的視訊記憶體是越大越好的,但是越大越貴,所以你要在你的承受範圍能力買。
後面會講解CPU和GPU的工作原理的不同,也就是為什麼說GPU視訊記憶體越大越好。
- 跑專案的時候視訊記憶體不夠怎麼辦,如果把batch_size調小,視訊記憶體夠用了但是cuda佔用一直很低怎麼辦?
如果是視訊記憶體不夠用的話,那麼只有把batch_size給調小。
但是如果把batch_size調小的話,那麼Volatile GPU-Util(GPU計算單元的利用率)不高。
那麼這裡給的建議就是把模型給調小一點,比如如果是使用ResNet152的話,這裡就建議修改成ResNet50。
- GPU使用率是不是越高越好,長時間滿負荷是不是對顯示卡不太好?
滿負荷對GPU是沒有問題的,唯一的問題是溫度不要過熱!最好建議就是不要超過80度,90度太久。
沐神說他是燒過很多塊卡的... 滿負荷是沒有問題的,但是就是要注意溫度!溫度是一個很重要的事情。
- 一般使用gpu訓練,data在哪一步to gpu比較好?
一般是在最後network train的時候。
因為很多資料的變化,做data preprocess在GPU上不一定支援的比較好,如果data在GPU上做的比較好,那麼可以往前走,比如很多時候在GPU上做一些圖片的處理。
- tensor.cuda() 和 to(device)有什麼區別?
都是將tensor挪到GPU上,但是to(device)是講module,也就是模型挪到GPU上。
- 使用GPU後加速效果不明顯有哪些可能的原因?執行GPU使用率在60%~70%。
其實60~70%的使用頻率已經不低了,看看能不能優化下網路。
對於CNN的話,GPU的使用率很容易到80%以上。
- 怎麼評價apple M1 gpu和cpu共用記憶體?
整合顯示卡基本都是個cpu共用記憶體的,而且共不共用記憶體不是關鍵,而是要看記憶體的頻寬,其實M1的記憶體頻寬還行。
- cuda和GPU到底是什麼關係?
GPU是硬體,cuda可以認為是開發的一個SDK。
- 自定義的block被放在同一個Sequential內的不同layer,但是不想共享引數,該怎麼做?
只要new新的物件就可以了,傳入的也是物件,如果不是同一個物件,預設是不會共享引數的。