Ubuntu16.04 安裝TensorFlow-gpu版本

Ubuntu16.04安裝TensorFlow-gpu版本

目前,基於python的深度學習幾個常用的框架分別是TensorFlow、Pytorch、Keras、Theano、Caffe等等,夥伴們可以參考大佬的博客——深度學習十大框架比較。最近在用TensorFlow框架,但是在CPU上運行速度太慢了,這就需要我們在GPU上運行,TensoFlow是分爲GPU版本和CPU版本的,要根據電腦/服務器的配置選擇TensorFlow的版本。我們的服務器上是Ubuntu16.04的,所以下面的分享也主要是基於Ubuntu的。
先放上TenserFlow的官網地址,上面有很多大家可以自娛自樂的東西~哈哈
在這裏插入圖片描述

1. 查看CUDA和Cudnn的版本

我的系統是Linux Ubuntu16.04,Python的版本是3.6,要安裝TensorFlow-gpu版本還需要知道服務器上安裝的是什麼版本的CUDA和Cudnn。

查看CUDA版本的命令:

cat /usr/local/cuda/version.txt

查看Cudnn版本的命令:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

我的配置如下圖:
在這裏插入圖片描述

2. 選取適合的TensorFlow-gpu版本

夥伴們可以去TensorFlow官網上查看對應自己Linux/Python/CUDA/Cudnn配置的TensorFlow-gpu的版本,也給大家再放一遍網址:TensorFlow對應版本網址。可以從下圖看出對應我的Linux/Python/CUDA/Cudnn的版本就是紅框中的幾款,這幾款就要看運行的Code是需要什麼版本了。
在這裏插入圖片描述

3. 安裝TensorFlow-gpu

因爲害怕安裝的時候動了主環境,一般我的操作是創建一個新的虛擬環境,如果大家不裝虛擬環境也可以,但是還是建議大家創建一個虛擬環境。如果夥伴們是使用docker的,可以參考TensorFlow官網上安裝教程,這裏就不贅述了。

查看服務器上的虛擬環境命令:
在這裏插入圖片描述
創建新的虛擬環境:

conda create -n your_new_conda_name python==X.X
# Ex:conda create -n tensorflow python==3.6

然後,你可以重新查看服務器上虛擬環境,看有沒有tensorflow的虛擬環境,如果有的話就說明已經創建成功了,沒有創建成功的話再執行一遍命令就可以了;
進入新創建的虛擬環境tensorflow:

conda activate tensorflow
# 順便提一句,退出虛擬環境的命令:conda deactivate tensorflow
# 有時候conda activate會報錯,可以用source activate/deactivate激活或者退出

用pip安裝tensorflow-gpu:

pip install tensorflow-gpu==1.6.0

4. 測試TensorFlow-gpu是否安裝成功

安裝成功TensorFLow-gpu以後還需要測試一下,一般用tf.__version__來測試,但是發現如果是裝的CPU版本或者GPU版本沒有調用顯卡此命令也會顯示TensorFlow的版本,推薦用下述命令來測試。

import tensorflow as tf
tf.test.is_gpu_available()

如果你可以看到類似下圖的反饋(尤其是最後一句爲True),說明安裝成功啦。
在這裏插入圖片描述

5. 一些報錯的解決方案

5.1 numpy的版本過高

在對於安裝好的TensorFlow-gpu進行測試的時候可能會遇到下面的情況,則說明環境中numpy的版本過高,重新安裝numpy就不會報錯了(推薦此配置下numpy的版本爲1.14.5)。

as/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:521: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint32 = np.dtype([("qint32", np.int32, 1)])
/home/tensor/anaconda2/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  np_resource = np.dtype([("resource", np.ubyte, 1)])

5.2 選用的TensorFlow-gpu版本和CUDA/Cudnn版本不符

如果出現下述的問題則說明選取的TensorFlow-gpu的版本和現有的CUDA/Cudnn的版本不符合(尤其是TensorFlow更新了2.0的版本以後),TensorFlow-gpu對於CUDA/Cudnn的依賴性很強,一定要選用對的版本!!!

ImportError: libcudart.so.10.0: cannot open shared object file: No such file or directory

這是昨天裝TensorFlow-gpu遇到的一些坑隨手就記錄了下來,以後有問題會不斷補充上來的,感謝大家的支持和大佬的幫助~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章