本文主要針對在windows10環境下的tensorflow配置問題,在linux和mac等其他環境中的配置就不過多贅述(windows總是那個問題最多的環境,建議使用linux 😃)。
本文中配置的環境為 python 3.8.5 tensorflow-gpu 2.4.1
1. 更新nvidia顯卡驅動至最新
測試用顯卡為 RTX 2070,如果不確定自己的顯卡是否適配,可以登錄nvidia官網進行查詢。
2. 下載cuda 11.0
[cuda 11.0 下載地址]
注意適配tensorflow 2.4 版本的cuda 一定是11.0,而不是11.1,11.2或者其他版本,下載其他版本的cuda會導致庫缺失的問題。
cuda的默認安裝路徑為 C:\Program Files\NVIDIA GPU Computing Toolkit
3. 下載cudnn 8.0.4用于適配TF 2.4 以及cuda 11.0
[cudnn 8.0.4 下載地址]
下載完畢cudnn后解壓,分別將子文件夾 bin,include,lib/x64中的文件拷貝至cuda/v11.0 對應的同名文件夾中。
4. 使用anaconda為tensorflow-gpu 配置一個python環境
# 創建一個名稱為 tf 版本為3.8.5的anaconda python環境
conda create -c conda-forge python=3.8.5 -n tf
conda activate tf
安裝版本為2.4.1的tensorflow-gpu
pip install tensorflow-gpu==2.4.1
5. 常見問題
1.
Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
這個問題一般是由于cuda版本與tensorflow gpu不兼容導致的,如果沒有使用tensorflow2.4而是使用了舊版的tensorflow。可以參考下表重新下載對應的cuda配件。多個cuda版本是不會互相影響的,因此不用擔心cuda文件夾中存在多個不同的版本。
遇見這個報錯一定不要僅僅只復制了這個dll配置文件到指定文件夾,這會導致隱形bug,tensorflow會在進入feed數據階段時停止。
2. 測試環境
用于識別目前available的gpu的個數。
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
確認所有的庫都可以成功打開且可用gpu個數不為0即可宣告配置完成。
2021-03-15 15:12:17.673193: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudart64_110.dll
2021-03-15 15:12:17.691692: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublas64_11.dll
2021-03-15 15:12:17.698596: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cublasLt64_11.dll
2021-03-15 15:12:17.711218: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cufft64_10.dll
2021-03-15 15:12:17.720665: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library curand64_10.dll
2021-03-15 15:12:17.735681: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusolver64_10.dll
2021-03-15 15:12:17.746699: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cusparse64_11.dll
2021-03-15 15:12:17.754405: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library cudnn64_8.dll
2021-03-15 15:12:17.759877: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1862] Adding visible gpu devices: 0
Num GPUs Available: 1
其他的anaconda中配置環境的代碼可以參考下文 :
[Anaconda安裝tensorflow報錯問題解決方法]