官术网_书友最值得收藏!

2.4 使用GPU 加速

2.4.1 安裝配置GPU環境

1.安裝GPU版TensorFlow

在2.2節中我們已經介紹了如何安裝CPU版TensorFlow,為了使用GPU來加速計算,我們必須安裝GPU版TensorFlow。TensorFlow官網對于Docker的安裝方法有較為詳細的介紹,感興趣的讀者可以參考官網的教程。本節里我們將介紹如何自己手工來安裝和配置相關環境。首先使用pip命令:

安裝完成后,我們可以查看一下當前可用的GPU:

由于作者的機器上有兩塊GPU,所以輸出兩塊GPU的編號:“[‘/device:GPU:0’,‘/device:GPU:1’]”。

2.安裝顯卡驅動

根據你的顯卡型號到官網下載對應驅動。圖2-23所示的是作者機器Tesla P100的顯卡對應的驅動程序。這里一定要注意選擇正確的版本,要和你的顯卡版本、操作系統版本及想要安裝的CUDA版本一一對應(關于TensorFlow與CUDA的版本對應關系,在后面CUDA的安裝部分有說明)。

圖2-23 NVIDA驅動下載列表

在圖2-23所示的界面中單擊“搜索”按鈕,彈出如圖2-24所示的界面,單擊“下載”按鈕即可。

圖2-24 NVIDA驅動下載提示

安裝完成之后可以使用“nvidia-smi”命令查看顯卡,圖2-25所示的是作者機器上的兩塊顯卡的信息。

圖2-25 作者機器上的兩塊顯卡的信息

3.安裝CUDA

在安裝CUDA之前,我們一定要先搞清楚TensorFlow各個版本與CUDA版本的對應關系。在TensorFlow官網有說明,其中Linux系統環境下TensorFlow GPU與CUDA的版本對應關系如圖2-26所示。

圖2-26 TensorFlow與CUDA的版本對應關系

TensorFlow2.0GPU依賴的NVIDA軟件包的官網說明,如圖2-27所示。

圖2-27 TensorFlow2.0GPU依賴的NVIDA軟件包

(1)下載CUDA

首先到NVIDIA官網下載CUDA。作者在撰寫本節內容時,CUDA的最新版本是10.1版本,這里提醒讀者,一定要按照TensorFlow官網的說明下載10.0版本,否則TensorFlow即使安裝好后也是不能正常運行的。后續新的版本可能會支持更高版本的CUDA,讀者請根據實際情況下載。

如圖2-28所示,選擇對應系統環境的CUDA版本。

圖2-28 選擇對應的CUDA版本

(2)安裝CUDA

CUDA下載頁面有安裝指引,如圖2-29所示。

圖2-29 CUDA的安裝步驟

第一步:執行安裝命令。

第二步:添加key。

第三步:依次執行。

注意不要使用“sudo apt-get install cuda”,這樣默認安裝的是最新版,所以一定要指定版本。安裝過程中如果有報“libkmod:ERROR”相關錯誤,那么安裝完成后重啟一下即可。

安裝完成后,在“/usr/local”目錄下會生成“cuda”和“cuda-10.0”兩個文件夾,如圖2-30所示,我們可以使用命令“cat /usr/local/cuda/version.txt”查看CUDA版本。

圖2-30 查看CUDA版本

第四步:設置環境變量。

打開“~/.bashrc”文件,在文件的最后添加如下內容:

在終端執行命令“source~/.bashrc”讓環境變量生效。

第五步:驗證安裝是否成功。

① 進入目錄“/usr/local/cuda-10.0/samples/1_Utilities/deviceQuery”中打開終端。

② 終端下執行編譯命令“sudo make”。

③ 然后執行命令“./deviceQuery”,可以看到兩塊GPU的信息。

如圖2-31所示,檢測到作者的兩塊顯卡,圖2-31中所示的是其中一塊顯卡的信息。到這里CUDA已經安裝完成了。

圖2-31 顯卡的信息

4.安裝cuDNN

(1)下載

這里一定要下載與CUDA10.0對應的版本,如圖2-32所示。下載cuDNN需要登錄NVIDIA賬號,沒有的話,可以按照提示創建一個賬號。

圖2-32 cuDNN與CUDA的版本對應關系

選擇好cuDNN版本后,單擊下載“cuDNN Library for Linux”,如圖2-33所示。

圖2-33 cuDNN下載列表

(2)安裝

第一步:使用“tar”命令解壓文件。

第二步:拷貝文件,并修改文件權限。

到這里TensorFlow2.0的GPU版就安裝配置完成了。

2.4.2 使用TensorFlow-GPU

如果我們的機器上安裝配置好了GPU版的TensorFlow,那么運行的時候TensorFlow會自行去選擇可用的GPU,也可以通過“os.environ["CUDA_VISIBLE_DEVICES"]”來選擇我們要使用的GPU:

在第4行代碼中,我們選擇了編號為“0”的GPU,執行完上面的這段代碼后使用“nvidia-smi”命令來查看一下GPU的占用情況,如圖2-34所示,編號為“0”的GPU正在被占用。我們可以將第4行代碼中的“0”改為“1”來使用另一個GPU。

圖2-34 查看GPU占用情況

如果我們希望使用多個GPU,例如同時使用“0”“1”兩個GPU,可以設置“os.environ ["CUDA_VISIBLE_DEVICES"] = "0,1"”,除此之外還可以使用TensorFlow為“tf.keras”提供的分布式訓練策略“tf.distribute.MirroredStrategy”來實現單機環境下的多GPU訓練:

主站蜘蛛池模板: 乐陵市| 福州市| 平顶山市| 定边县| 古蔺县| 读书| 凤凰县| 北票市| 竹溪县| 蓝田县| 右玉县| 平阴县| 鹤庆县| 海晏县| 如东县| 江门市| 汝阳县| 孝感市| 巫山县| 广水市| 清水县| 青铜峡市| 庆元县| 上饶县| 福贡县| 延津县| 新河县| 修文县| 余庆县| 永修县| 土默特右旗| 广东省| 林西县| 达日县| 汕尾市| 襄垣县| 波密县| 馆陶县| 玉溪市| 迁安市| 新建县|