ubuntu16.04安裝cuda8.0 和cudnn5.1(多個cuda、天坑tensorflow)
ubuntu16.04安裝cuda8.0 和cudnn5.1(多個cuda、天坑tensorflow)
背景
以下只能解決特定問題,普遍問題不能解決,建議參考參考部落格內容進行選擇。
文字摘要界中有一個很著名的論文,叫做Get to the point(指標生成模型),最近需要復現一下相關論文。然後踩坑就開始了。
過程
程式碼地址,有興趣的可以挑戰一下。其實這玩意說難也難,說不難也不難。難就難在配置環境上,真的是踩坑無數。我按照一步一步配置下來,獲得資料集步驟可以參考這篇部落格,會講解處理資料集的過程,但是具體還得看人家寫的英文文件。
處理好了之後,覺得還有點小成就,然後就安裝tensorflow跑,直接報錯:大概說的是型別轉換出現了問題。
不出意外,死活不會改人家的程式碼。只好換方法,找到上述的程式碼地址,看到作者tensorflow用的是1.2.1的,我尋思我也安裝跟作者一樣的,結果就可以正常跑通,然後就想著先跑著吧。跑了一上午、一下午、一晚上、又一上午,感覺訓練的速度好慢,就想著要不用gpu跑跑試試?然後手賤的在正在使用的環境中輸入了pip install tensorflow-gpu==1.2.1
,然後就沒有然後了。
安裝cuda8.0
既然程式崩了,那就好好整理下,那就非得用GPU跑它不行。
首先找到一個表格:
在這裡插入圖片描述
從這裡我們可以看出我們使用1.2.1那麼需要安裝的是cuda8和cudnn5.1。
我使用的是ubuntu16.04,然後輸入/usr/local
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/202012102011473.png)
可以看到有cuda9.0、cuda9.1,這就證明我們需要在一臺機器上安裝多個cuda。
步驟:
-
下載cuda8.0,百度網盤在這:連結:https://pan.baidu.com/s/1aXhnaIuM5cgyQ1sneYmbFQ
提取碼:a5kk 。 -
將這個檔案拷貝到演算法伺服器的指定位置,並使用指令解壓:
tar xvzf cuda_8.0....
-
解壓之後直接開始安裝:sudo sh cuda_8.0.61_375.26_linux.run。
-
#..一堆協議說明... #直接按q退出協議說明. zerozone@zerozone: accept/decline/quit: accept #接受協議 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26? y)es/(n)o/(q)uit: n #是否顯示卡驅動包,由於已經安裝顯示卡驅動,選擇n Install the CUDA 8.0 Toolkit? (y)es/(n)o/(q)uit: y #是否安裝工具包,選擇y Enter Toolkit Location [ default is /usr/local/cuda-8.0 ]: #工具包安裝地址,預設回車即可 Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: y #新增連結**注意這個連線,如果你之前安裝過另一個版本的cuda,除非你確定想要用這個新版本的cuda,否則這裡就建議選no,因為指定該連結後會將cuda指向這個新的版本** Install the CUDA 8.0 Samples? (y)es/(n)o/(q)uit: y #安裝樣例 Enter CUDA Samples Location [ default is /root ]: #樣例安裝地址預設即可 # ***安裝資訊*** Installing the CUDA Toolkit in /usr/local/cuda-8.0 ... Missing recommended library: libXi.so Missing recommended library: libXmu.so #注意,這裡出現了Missing recommended library錯誤, # 如果出現了錯誤:執行這條指令 # sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev # 我沒有出現,所以直接略過這條指令了,我執行這條指令,需要我安裝matlib,有點迷。所以就沒執行這段指令,後來發現也能用。 #是因為博主在第一次安裝時,沒有新增最開始的那條安裝相關依賴的指令, #之後我添加了依賴後,再次安裝,就沒有Missing錯誤了 Installing the CUDA Samples in /root ... Copying samples to /root/NVIDIA_CUDA-8.0_Samples now... Finished copying samples. =========== = Summary = =========== Driver: Not Selected Toolkit: Installed in /usr/local/cuda-8.0 Samples: Installed in /root, but missing recommended libraries Please make sure that - PATH includes /usr/local/cuda-8.0/bin - LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA. ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work. To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file: sudo <CudaInstaller>.run -silent -driver Logfile is /tmp/cuda_install_6388.log # ***安裝完成***
-
配置CUDA相關環境
# 或者輸入這些指令: Tensorflow官方安裝歷程要求注意的是:配置PATH和LD_LIBRARY_PATH和CUDA_HOME環境變數. vim ~/.bashrc #修改配置檔案(如果你用的是zsh,則需要修改 ~/.zshrc檔案) #在檔案結尾處新增 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64 export PATH=$PATH:/usr/local/cuda/bin export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
-
如果需要版本切換的話,可以參考這篇文章,通過軟鏈進行更換的,但是我發現我不更換也能用。1.8的和1.2.1的都能正常使用gpu。待會還需要驗證下。
安裝cudnn5.1
百度網盤下載:連結:https://pan.baidu.com/s/1UUUgevH6xX9R1-BX5olaTQ
提取碼:hoe7
安裝過程
-
解壓
tar -zxvf cudnn-8.0-linux-x64-v6.0.tgz
-
在當前目錄下檢視都有什麼檔案:
-
拷貝指定檔案到指定目錄
$cd cuda $sudo cp lib64/lib* /usr/local/cuda/lib64/ $sudo cp include/cudnn.h /usr/local/cuda/include/
-
如果有軟鏈的話,建議這樣更新:
$ sudo chmod +r libcudnn.so.6.0.21 $ sudo ln -sf libcudnn.so.6.0.21 libcudnn.so.6 $ sudo ln -sf libcudnn.so.6 libcudnn.so $ sudo ldconfig
這時候再使用tensorflow1.2.1的話應該沒什問題了。但是有一點比較疑惑,為什麼我配置了1.2.1的環境,tensorflow1.8.0的還能用。有點迷。
報錯記錄
-
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
安裝cudnn就行了。
-
ResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [9216,4096] an
很明顯,OOM,out of Memory,視訊記憶體不夠了,調小引數就行。
-
TensorFlow報錯FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated......
重新安裝numpy-1.16-0 安裝版本太高了,更換即可