1. 程式人生 > 其它 >深度學習之環境配置

深度學習之環境配置

我們都知道,在學習計算機的過程中,總會出現各種各樣的問題,這一點我想計算機專業的夥伴們感同身受;更別說在學習深度學習的過程中了。

  1. 接下來,就介紹一下幾個深度學習過程中幾個典型而又容易範的錯誤。
  • (1) 注意cuda、cudnn、cuda driver和cudatoolkit的版本
    cuda是nvidia推出的用於自家GPU的平行計算框架,也就是說cuda只能在nvidia的GPU上執行,而且只有當要解決的計算問題是可以大量平行計算的時候才能發揮cuda的作用。
    cudnn是nvidia打造的針對深度神經網路的加速庫,是一個用於深層神經網路的GPU加速庫。如果你要用GPU訓練模型,cudnn不是必須的,但是一般會採用這個加速庫。
    cuda driver即cuda驅動器,是用來支援cuda執行的必備程式。而cudatoolkit則是cuda相關的工具包。
    以上四者之間必須有個版本對應和匹配的問題。有時候安裝keras GPU版本的時候會預設安裝cudatoolikit 10.0,這時候如果你cuda是9.0的版本的話,一般會報個CUDA driver version is insufficient for CUDA的錯誤。如下所示:

    這時候你可能需要降低cudatoolkit的版本:
conda install cudatoolkit==9.0

還有一種常見的錯誤是cuda driver的驅動器跟cuda不匹配。執行nvidia-smi命令會出現如下圖錯誤:

Failed to initialize NVML: Driver/library version mismatch

這裡是nvidia官方給出的關於cuda和cuda driver之間版本對應關係:

在版本不匹配時,適當降低或者更新驅動器版本即可。另外驅動器版本更新之後可能需要重啟系統,當然通過如下方法不用重啟也可以更新版本。首先嚐試刪除nvidia相關的kernel mod

sudo rmmod nvidia
//這裡介紹的為linux版本的

當然這裡一般會報個Module nvidia is in use by的錯誤。(不礙事的),接下來我們先檢視下kernel mod 的依賴情況:

ls mod | grep nvidia

根據根據結果逐一rmmod即可

sudo rmmod nvidia_uvm
sudo rmmod nvidia_modeset

最後再rmmod nvidia即可達到驅動器更新效果

sudo rmmod nvidia
nvidia-smi


還有一種報錯是cudnn版本不匹配的問題:

此時直接更新cudnn版本即可

  • (2)驗證TensorFlow/Keras/Torch版本是否支援GPU加速
    雖說按部就班的配環境好像也沒啥大問題,但要想讓你的TensorFlow和Torch順利用上GPU跑起來並不是一件那麼順利的事。此時,直接使用nvidia-smi命令並不能表明TensorFlow就能順利用上GPU
    比如說我們用Keras跑模型時指定了GPU,有時候會報如下錯誤:

    一方面,你的機器可能確實沒有那麼多GPU,另外一種可能就是你沒有安裝支援GPU的TensorFlow或者Keras版本。這時候我們可以先來驗證下當前的TensorFlow或Keras是否支援GPU。
    先來看TensorFlow:
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())


如果輸出結果有類似上述包含GPU的資訊,那說明你的tensorflow是支援GPU的。再看keras:

from keras import backend as K
print(K.tensorflow_backend._get_available_gpus())

如果能輸出下述包含GPU的資訊的話那說明當前的keras版本也是支援GPU的


Torch的話安裝到時候一般都會根據官網的配置要求來:

安裝後輸入下列命令即可:

import torch
torch.cuda.is_available()

如果輸出為True的話則表明當前的torch是支援GPU加速的

如果你沒有得到上述的輸出結果,那麼需要重新安裝帶gpu版本的tensorfow或者keras:

pip install tensorflow-gpu
conda install keras-gpu
  • (3)最後再介紹一個免費的GPU資源
    如果大家沒有GPU資源又或者嫌配置太糟心,我們還是有免費的GPU可以褥的。一個是谷歌的colab,自動支援GPU,大家可以直接去褥。另外一個是kaggle競賽平臺的kernel,裡面也是提供GPU算力的、還有FlyAI等等。
    colab目前提供的GPU已經由之前K80升級到了Tesla T4:

    kaggle提供的則是Tesla P100:

    colab地址:
https://colab.research.google.com/notebooks/

kaggle地址:

https://www.kaggle.com/

FlyAI地址:

https://www.flyai.com/

沒了。。。。。