TensorFlow框架This is probably because cuDNN failed to initialize 解決對策整理和驗證
第一段代碼 2020-03-24 20:52:36 816 收藏
分類專欄: 深度學習筆記
版權
Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
寫在前面:
環境:Tensorflow2.0 + Python3.6
當讀者看到此問題時,一定大概率遇到上述報錯的信息,首先出現這個問題很明顯,就cuDNN出問題,大概率不是你的tensorflow代碼寫的問題,其實還可以精確點說就是我們電腦機器出問題了。
遇到這個問題,筆者也去找了很多博客,試了一些方法,總結一下出現這個問題的可能有:
1)很多博客說說cuda和cudnn不比配,或者tensorflow版本太高。
-->如果你之前就成功跑過簡單的tensorflow訓練,我覺得可以忽略這個吧。但是安裝cuda和cudnn版本不匹配是出現問題,匹對版本可看:深度學習1-深度學習環境安裝,有這一篇就夠了!Anaconda-Python+Tensorflow2.0-GPU+Keras+Pycharm
2)電腦GPU性能太低,內存不夠支持模型訓練(就是顯卡爆)。大概是這種情況!!!這個也要分兩種:
一是電腦性能還可以,只是當前訓練模型太復雜,導致顯卡內存耗盡了;
二是電腦性能不太好,小型模型訓練就爆炸了,這種性能低的機器就有處理是否開啟GPU訓練的設置了
------------------------2020.4.20-----------
3) 感覺主要還是cuda和cudnn依賴環境沒有做好,很多網絡上的方法除了強制使用cpu外,其他的一些方法,比如按需分配GPU等策略,我都嘗試過,反正我這里試過的都是不成功,看了很多定位,應該cuda和cudnn不匹配導致,那么就沒有什么方法終極解決,或者我們在安裝tensorflow時,自動給我們安裝好匹配的cuda和cudnn么?
答案是有的,那就是直接通過anaconda 安裝tensorflow,它在安裝的時候,會自動給我們安裝相對應的cuda+cudnn,完全不用我們去擔心匹配問題,很香,至少通過這個方法我的gpu正常運行了
conda install tensorflow-gpu==2.0
詳細可以查看我這篇安裝博文,Tensorflow2.0-GPU深度學習環境安裝,踩坑后整理一步到位安裝總結篇.Win10+Anaconda+Tensorflow2.0-GPU+Pycharm,強烈建議Anaconda很香
---------------------------2020.4.20---------------------------------
對策:
一是電腦性能還可以,只是當前訓練模型太復雜,導致顯卡內存耗盡了:
解決方法:讓模型按需取用GPU
# 防止Tensorflow運行GPU內存不足造成錯誤
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ['CUDA_VISIBLE_DEVICES'] = "0,1" #選擇哪一塊gpu
config = ConfigProto()
config.allow_soft_placement=True #如果你指定的設備不存在,允許TF自動分配設備
config.gpu_options.per_process_gpu_memory_fraction=0.7 #分配百分之七十的顯存給程序使用,避免內存溢出,可以自己調整
config.gpu_options.allow_growth = True #按需分配顯存,這個比較重要
session = InteractiveSession(config=config)
二是電腦性能不太好,小型模型訓練就爆炸了,這種性能低的機器就有處理是否開啟GPU訓練的設置了:
解決方法:直接使用CPU計算好了,不要開啟GPU了,筆者就是這么悲催的電腦,應了那句深度學習訓練前置比拼就是比電腦!!
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ['CUDA_VISIBLE_DEVICES'] = "-1" #選擇哪一塊gpu--->值為-1就是說不用GPU了,直接使用CPU計算
————————————————
版權聲明:本文為CSDN博主「第一段代碼」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/godot06/article/details/105080851
解決Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open ...
顏 2019-11-19 17:01:37 8026 收藏 7
分類專欄: tensorflow
版權
安裝TensorFlow2.0 GPU版本后,檢測是否支持GPU時tf.test.is_gpu_available()出現以下信息:
2019-11-19 02:52:53.934654: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:
2019-11-19 02:52:53.934856: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:
2019-11-19 02:52:53.935050: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcufft.so.10.0'; dlerror: libcufft.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:
Out[3]: False
1
2
3
4
5
原因:TensorFlow2.0現在支持CUDA10.0,還不支持CUDA10.1,而我的Ubuntu上安裝的是CUDA10.1(也正確安裝了cuDNN)。現在只需要安裝一個CUDA10.1就行。可以仿照安裝pytorch時就自動安裝cudatoolkit 10.1.243,無需再下載CUDA10.0的包,在Ubuntu上重新安裝CUDA10.0,而是直接用conda安裝cudatoolkit。因為我的TensorFlow是安裝到獨立的虛擬環境中的,故執行以下代碼即可安裝:
(tensorflow2) usr@ubuntu16:~$ conda install cudatoolkit=10.0
1
再conda list一下,發現cudatoolkit=10.0已安裝到當前環境下:
測試一下:
In [1]: import tensorflow as tf
In [2]: tf.test.is_gpu_available()
Out[2]: True
————————————————
版權聲明:本文為CSDN博主「顏」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_28193019/article/details/103146116
tensorflow的CUDA driver version is insufficient for CUDA runtime version 問題解決方案
li57681522 2018-09-07 10:25:26 37106 收藏 27
分類專欄: tensorflow
版權
CUDA driver version is insufficient for CUDA runtime version 翻譯過來就是CUDA的驅動程序版本跟CUDA的運行時版本不匹配!
1.CUDA driver version(驅動版本):就是NVIDIA GPU的驅動程序版本;
查看命令:nvidia-smi
我們看到我的GPU的驅動程序版本是:384.81
2.CUDA runtime version(運行時版本):是在python中安裝的cudatoolkit和cudnn程序包的版本
查看命令:pip list
python安裝的cudatoolkit和cudnn程序包版本是:9.2
3.nvidia 驅動和cuda runtime 版本對應關系
運行時版本 驅動版本
CUDA 9.1 387.xx
CUDA 9.0 384.xx
CUDA 8.0 375.xx (GA2)
CUDA 8.0 367.4x
CUDA 7.5 352.xx
CUDA 7.0 346.xx
CUDA 6.5 340.xx
CUDA 6.0 331.xx
CUDA 5.5 319.xx
CUDA 5.0 304.xx
CUDA 4.2 295.41
CUDA 4.1 285.05.33
CUDA 4.0 270.41.19
CUDA 3.2 260.19.26
CUDA 3.1 256.40
CUDA 3.0 195.36.15
4.解決方案
從驅動和運行時的版本對應關系來看,版本為384.81的驅動程序 對應的 運行時版本是9.0,也就是說我們在python中安裝cudatoolkit和cudnn程序包版本9.2是過高了。
因為系統中依賴GPU驅動的程序比較多,一般出現這種情況,我們都是更改cudatoolkit和cudnn程序包的版本。
於是,先卸載python中安裝cudatoolkit和cudnn程序包:pip uninstall cudnn ; pip uninstall cudatoolkit
然后安裝對應版本的cudatoolkit和cudnn程序包:pip install cudatoolkit=9.0;pip install cudnn
5.為什么會出現這種情況呢:
一般出現這種情況是因為在python中安裝tensorflow的gpu版本時,pip會檢查tensorflow依賴的其他的包,如果依賴的包沒有安裝,則會先安裝最新版本的依賴包。這時候tensorflow的gpu版本依賴cudatoolkit和cudnn程序包,pip就會安裝最新版本的cudatoolkit和cudnn程序包,最終導致gpu驅動版本和cuda運行時版本不匹配。
————————————————
版權聲明:本文為CSDN博主「li57681522」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/li57681522/article/details/82491617