本文主要针对在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报错问题解决方法]