想了一下還是把tensorflow安裝的過程整理一下吧,萬一時間久了忘了呢。
終於tensorflow的安裝可以告一段落了,內心還是很興奮的,這次還是好好的整理下。
尤其是注意的地方,往往時我折騰了好久,查閱了大量的資料,測試了好多次,才驗證出來的碩果。
1、准備工作
1、更換源,好的軟件源,直接決定你的安裝速度。這里選擇清華的。
操作:進入:設置 --> 軟件和更新 --> Ubuntu軟件,打開下載自:選擇 其他,選擇清華。點擊 選擇服務器 確認,在彈出框選擇,重新載入。
2、更新軟件包,防止有些工具沒有安裝上。
sudo apt update
3、打開:設置 --> 軟件和更新 --> 附加驅動
選擇NVIDIA公司專有的最新驅動,選擇應用更改。時間較長,請耐心等待。
2、安裝cuda
下載文件,這里我選擇run本地文件,進入文件所在目錄,並運行,XXX代指文件名,歷史版本
sudo sh XXX.run
安裝注意,這時會出現很多信息,按ctr+c關閉信息,再按accept接受。
接下來詢問是否,安裝驅動,輸入n,不要安裝。因為已經安裝過。
一路輸入y,或者回車。
進入/home/用戶名/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery,打開終端,輸入
sudo make
然后輸入
./deviceQuery
如果顯示pass,說明cuda安裝成功,如果顯示說,cuda驅動不滿足於cuda運行庫,說明驅動太舊,或者cuda太新。參照修改。
3、下載並安裝cudnn(本段參照於http://blog.csdn.net/m0_37924639/article/details/78785699)
下載cudnn,安裝CUDNN
進入CUDNN安裝包所在目錄,執行以下命令:
sudo dpkg -i runtime包.deb sudo dpkg -i developer包.deb sudo dpkg -i 代碼sample包.deb
報錯查看此項https://blog.csdn.net/u011636567/article/details/77162217
至此,CUDNN安裝完成。
驗證CUDA和CUDNN是否安裝成功
CUDNN的code sample可以用來檢查CUDNN和CUDA是否安裝成功,執行以下命令:
sudo cp -r /usr/src/cudnn_samples_v7/ $HOME cd $HOME/cudnn_samples_v7/mnistCUDNN sudo make clean sudo make sudo ./mnistCUDNN
正常情況下執行以上代碼會得到Test passed!
的結果。如果在make步出錯,那么可能gcc需要降級(由於一直未出現類似錯誤,作者未驗證);
如果出現CUDA driver version is insufficient for CUDA runtime version
,說明你的顯卡驅動版本低於cuda工具包的版本。
如果下載的是壓縮包,那個運行庫,可以使用下面的。
cd /home/***(自己的用戶名)/Desktop/###(這個命令意思是找到剛剛我們用U盤傳過來的文件) tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz###(解壓這個文件) sudo cp cuda/include/cudnn.h /usr/local/cuda/include###(復制) sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64###(復制) sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
4、版本說明
1、顯卡驅動要高於cuda版本,cudnn要選擇和cuda版本一樣的
2、建議安裝的cuda版本和驅動的版本一致,比如我的驅動目前只能是384.11(9.0版本),最好安裝cuda工具包9.0
3、安裝對應的cudnn9.0
4、安裝tensorflow
在配置完cudnn之后,可以直接在終端輸入
sudo pip install tensorflow==1.5.0
或者安裝CPU版本
sudo pip install tensorflow==1.5.0
如果網速不好的話,也可以自己在https://github.com/tensorflow/tensorflow下載whl文件,往下翻,在installation下面,然后使用
sudo pip install xxx.whl
5、簡便安裝的方法
如果確定了自己的顯卡支持的最高版本驅動,可以直接參照下面的方法:
1、cuda的下載和安裝
下載適合你的cuda版本(包含驅動,即驅動版本)
關閉目前的圖形界面,
sudo service lightdm stop
按住ctr + alt + f1,進入命令行界面,輸入帳號和密碼,並且登錄。
進入你的cuda下載目錄,比如我的在Download里面
cd Download
sudo sh XXX.run --silent --overide
不輸入參數,先accept,一路y或者回車默認
打開圖像界面
sudo service lightdm start
進入圖形界面,按下ctr + alt + f7
進入用戶主路徑
cd ~
進入cuda的例子make並且運行,驗證是否正確安轉cuda
cd /home/shuailing/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery
make
./dedeviceQuery
如果最后一行顯示pass,說明安裝成功。
注意:這個方法,我在工作站安裝成功,在自己的電腦上失敗,出現的現象時,反復登錄。
解決方法:先安裝顯卡驅動,在安裝cuda,在安裝cuda的時候,詢問是否安裝cuda驅動(顯卡驅動),選擇否。
如果,出現了重啟可以切換回之前的驅動。
2、下載並安裝cudnn
下載cudnn,安裝CUDNN
進入CUDNN安裝包所在目錄,執行以下命令:
sudo dpkg -i runtime包.deb sudo dpkg -i developer包.deb sudo dpkg -i Codesample包.deb
注意:這里需要按照這個順序來進行,負責最后的代碼測試包,是無法安裝的。
如果測試說,找不到,libdart文件,說明沒有把 cuda的lib庫加入LD_LIBRARY_PATH中。
這個之前也加入過,但是總是有其他的意外,這里把加入環境變量,再說一便。
sudu gedit .bashrc
把下面兩行加入.bashrc最后
export PATH=$PATH:/usr/local/cuda-9.0/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
輸入下面命令使其立即生效,之前的cudnn測試的窗口。需要重新打開,才能更新新的環境變量。
source .bashrc
如果是解壓放入到庫中的,還需要對其libcudnn進行鏈接,ln -s 源文件 目標文件
3、安裝tensorflow-gpu
下載tensorflow-gpu,之后進入下載路徑
pip安裝
sudo pip install tensorflow_gpu-1.6.0-cp27-cp27mu-manylinux1_x86_64.whl
這個tensorflow-gpu==1.6.0,需要實測,cuda9+cudnn7.0可以用,之前用cuda9+cudnn7.1運行程序說,找到cudnn7.1版本,但是期望是7.0。程序報錯。
4、驗證
python import tensorflow
不報錯說明安裝成功。
6、源碼安裝
1、克隆tensorflow
git clone https://github.com/tensorflow/tensorflow
2、進入下載目錄的tensorflow主目錄,配置編譯環境
./configure
除了Cuda、Cudnn相關的yes,其余的不相關的都選擇n。剩下的默認回車就好。
3、完成之后編譯
sudo bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package sudo mkdir /tmp/tensorflow_pkg sudo bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg sudo pip install/tmp/tensorflow_pkg/tensorflow-1.2.0rc2-cp27-cp27mu-linux_x86_64.whl
之前因為權限不夠,編譯出錯不加載,執行第三條說找不到文件。現在全部加了權限。
4、參照上面的測試
5、最后的注意:
描述:在我運行程序的時候,終端運行正常使用GPU,可是在pycharm中運行就報錯,說找不到libcublas.so.9.0.源碼編譯的時候也說找不到/usr/bin/ld的什么文件。
嘗試的方法:tensorflow降級,結果不可以。實際上我的cuda和cudnn都是要求的9.0和7.0,明明在/usr/local/cuda/lib64中可以找到這個文件的。可是不論是降級還是配置cudnn的libcudnn.so的鏈接都不行。
后來,在手機上偶然查到。
解決方案:在/etc/ld.so.conf中最后一行添加/usr/local/cuda-9.0/lib64。或者在ld.so.conf.d這個目錄新建一個檔案,以.conf結尾(建議),最后輸入sudo ldconfig使其立即生效。
解釋:其實上面那個含有libculas的路徑,正常的已經被添加到LD_LIBRARY_PATH中了,可是程序運行的時,不一定回讀到這個變量,所以需要設置/etc/ld.so.conf把,含有libcublas的路進加入的系統中。