Ubuntu16.04系統下Anaconda2(Python2.7)中搭建Tensorflow(1.2.0)環境

(背景:當前科研工作中要復現一篇Paper,對於環境要求是Python-2.7 + Tensorflow-1.2.0。)

1、在當前的python環境下創建tensorflow子環境(務必指明python版本):

conda create tensorflow python=2.7

conda activate tensorflow

conda deactivate
成功在Anaconda2(base)的環境下創建tensorflow子環境,驗證python版本正確

 

2、安裝Tensoflow1.2.0並測試:

(1)(失敗)在https://pypi.org/project/tensorflow/1.2.0/#files下載對應版本的tensorflow的.whl安裝包,用pip安裝提示不符合platform;

(2)(成功)用pip在線安裝:

pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl
在線 pip 安裝 tensorflow1.2.0 成功

此時,conda下的tensorflow的子環境√,python2.7版本√,tensorflow-gpu1.2.0版本√:

使用 “conda list” 命令查看,發現tensorflow-gpu包已經安裝好

但是,嘗試 import tensorflow包出現問題:

提示找不到 libcusolver.so.8.0 文件

可以確認是CUDA出現問題,在.usr/local.cuda/lib64文件夾查看,確實沒有該8.0文件,但是有對應的9.0文件。

當前CUDA版本爲9.0,不符合tensorflow1.2.0所需要的8.0版本

3、安裝CUDA-8.0並測試:

CUDA下載地址:https://developer.nvidia.com/cuda-80-ga2-download-archive

安裝CUDA-8.0,切記詢問安裝確定driver時選擇否(no),其他都是yes

 

此時,在系統中,CUDA8.0和CUDA9.0共存,而默認的CUDA爲CUDA9.0:

首先建立軟連接:

sudo rm -rf /usr/local/cuda  #刪除之前生成的軟鏈接

sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda #生成新的軟鏈接

把CUDA鏈接至新安裝的CUDA8.0而非默認的9.0

我們發現原CUDA文件夾(提示找不到lib***.so.8.0文件的位置)中出現了所需的8.0版本文件

而後,修改環境變量,需要使用 vim 命令在 bashrc 文件中修改環境變量,使得安裝生效:

vim ~/.bashrc #進入編輯界面


export CUDA_HOME=/usr/local/cuda 
export PATH=$PATH:$CUDA_HOME/bin export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

#同時,
#替換原來語句中的cuda-9.0爲cuda-8.0,
#替換原來語句中的Anaconda3爲Anacodna2,
#替換原來語句中的python3.6爲python2.7,

#保存退出返回終端輸入界面

source ~/.bashrc #激活
標題

值得注意的是,使用 vim 進入~/.bashrc文件編輯界面後,先使用輸入 “i” 進入 “insert” 編輯模式,編輯完成後,先按 “ESC”,而後輸入 ":wq!",回車後即可退出編輯,(別忘了退出後用 “source” 命令激活修改)。

使用 nvcc -V 命令查看CUDA版本,已經是8.0正確

可以看見,此時CUDA-8.0已經正確。

再次嘗試在Anaconda2(Python2.7)下的Tensorflow環境中查看Tensorflow包是否成功:

報錯!缺少libcudnn.so.5文件,說明cudnn的版本不正確

原來,Tensorflow1.2.0需要cuDnn的版本是5.0,因此我們需要下載安裝對應CUDA-8.0的cuDnn-5.0:

4、安裝cuDnn-5.0並測試:

確認版本

下載網址爲https://developer.nvidia.com/rdp/cudnn-archive

注意,下載cuDnn需要登錄英偉達官網,所以需要使用郵箱註冊賬戶,且得通過郵件激活纔可登錄下載。

由於我始終收不到郵件,用了三個郵箱,點擊resend多次,都收不到,所以直接在校內論壇西電睿思上下載成功。

解壓後的cuDnn5.0安裝包

 

其中的lib文件夾
其中的include文件夾

開始操作:

#進入該cudnn解壓後的文件夾後,拷貝一些東西到指定目錄

$cd cuda5.0  
$sudo cp lib64/lib* /usr/local/cuda/lib64/  
$sudo cp include/cudnn.h /usr/local/cuda/include/

#接下來更新cuDNN庫文件的軟連接:
$ sudo chmod +r libcudnn.so.5.0.5
$ sudo ln -sf libcudnn.so.5.0.5  libcudnn.so.5
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig

操作後查看最新的cuDnn版本:

當前環境中的CUDA(指向CUDA-8.0)的默認cuDnn的版本是5.0.5

解決了cuDnn問題後,再次查看Tensorflow是否安裝成功:

Tensorflow 的版本1.2.0和安裝路徑無誤

5、終端下的環境搭建成功:

至此,終於搭建好了Ubuntu-16.04 + Anaconda-2 + Python-2.7 + Tensorflow-1.2.0 + CUDA-8.0 + cuDnn-5.0.5的環境!

在終端中的tensorflow環境下輸入 “spyder” 打開Spyer 這個 IDE,在其中內嵌的 Ipython命令 行區域 import temsorflow,報錯!

Spyder內部顯示沒有tensorflow包

6、IDE(Spyder)中的環境搭建成功:

#在當前的tensorflow環境中重新安裝一個spyder編譯器

conda install spyder
重新安裝的Spyder背景色變爲深色,同時已經可以成功調用安裝在其所在環境中的tensorflow包

總結:搭建環境是深度學習最基礎的第一步,必須在對應的環境下才可以復現特定的代碼。搭建環境同時也是非常麻煩的過程,因爲每臺電腦的情況都不同,每個代碼所需要的環境中的各項配置要求也不同,各項配置之間的相互依賴關係也不同,因此,需要反覆的嘗試,遇到問題解決問題,這個過程必須充滿耐心。

感謝Google!感謝NVIDIA!感謝CCTV!

 

 

 

 

 

 

 

 

 

 

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