在Ubuntu 16.04.6上使用tensorflow-GPU出現的問題記錄及解決辦法

由於需要,實習時在服務器上安裝了anaconda3+tensorflow-gpu+keras,
使用的時候一直都是使用

import os
os.environ['CUDA_VISIBLE_DEVICES']=“0”

來指定使用第0個gpu,程序也一直是使用GPU加速計算的,但是奇怪的是今天忽然發現程序運行很慢,並且運行時出現“Your CPU supports instructions that this TensorFlow binary was not compiled to use”這個警告。

通過使用nvidia-smi查看GPU使用狀態,發現GPU使用率爲0,但是明明我已經指定了使用GPU啊!!!
然後我使用如下代碼查詢了一下

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices()) 

發現已經檢測不到GPU了,只有CPU。。。
查看庫的安裝路徑:pip show tensorflow-gpu
通過網絡查找各種解決辦法,說是安裝keras時安裝了tensorflow,兩者衝突,然後需要重新卸載,只安裝GPU版的tensorflow,雖說我pip list了一下並沒有發現單獨的tensorflow,我還是重新卸載又安裝了一下

pip uninstall tensorflow tensorflow-gpu keras
pip --upgrade tensorflow-gpu keras

然後結果嘞,運行程序發現新的bug出現了:

ImportError: libcublas.so.10.0: cannot open shared object file: No such file

emm,又google了一下,發現是說tensorflow版本與CUDA的版本不對應, 然後我看了一下我安裝的tensorflow-gpu的版本是1.13.0的,但是CUDA版本是8.0的。(cuda-8.0是你安裝的cuda的文件夾)
查看CUDA版本:cat /usr/local/cuda-8.0/version.txt

然後去查一下cuda和tensorflow-gpu對應的版本號,見Tensorflow CUDA及CUDNN版本對應關係表查詢

然後通過pip uninstall 卸載掉安裝的tensorflow-gpu和keras
使用如下命令重新安裝對應版本的tensorflow-gpu:

pip install tensorflow-gpu==1.4.0 keras

安裝完成之後,測試一下發現在終端是可以正常使用gpu了,但是在使用pycharm遠程調試時出現ImportError:libcusolver.so.8.0: cannot open shared object file: No such file or directory

原因是無法加載libcusolver.so等,查看遠程服務器LD_LIBRARY_PATH環境變量,已經設置了文件路徑/usr/local/cuda-8.0/lib64(從遠程服務器正常import知道,這點配置是沒問題的)。

解決:在edit configurations中配置python運行環境變量,添加LD_LIBRARY_PATH,設置路徑/usr/local/cuda-8.0/lib64(你的cuda安裝目錄裏面的lib64)

之後再次運行之前程序,發現又開始報錯:

  • TypeError: while_loop() got an unexpected keyword argument ‘maximum_iterations’

  • TypeError: softmax() got an unexpected keyword argument ‘axis’

是因爲我的CUDA版本爲CUDA8.0,所以tensorflow版本有限制,只能用1.4.0以下的版本,之前keras版本太高了,所以纔會報以上錯誤
重新安裝keras

pip install keras==2.1.2

更新keras版本後,錯誤解決
哎,環境問題真的真的太折騰了!!!

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